From f9c1569342af1d7c1811c013f8734d536a36839b Mon Sep 17 00:00:00 2001 From: Huamonarch Date: Fri, 7 Nov 2025 02:02:31 +0800 Subject: [PATCH] CRVM Redis version HM --- .gitattributes | 63 + .gitignore | 212 + 1420轧机振动数据库修改.txt | 11 + CIDExcuter/AlarmRing.cs | 136 + CIDExcuter/CIDExcuter.csproj | 105 + CIDExcuter/DataProcessCenter.cs | 1038 ++++ CIDExcuter/DataProcessCenter.cs.bak | 782 +++ CIDExcuter/DbHelper.cs | 1338 +++++ CIDExcuter/IDataHelper.cs | 257 + CIDExcuter/IViewHelper.cs | 380 ++ CIDExcuter/LogicConnect.cs | 76 + CIDExcuter/Machine.cs | 81 + CIDExcuter/Properties/AssemblyInfo.cs | 36 + CIDExcuter/Stand.cs | 342 ++ CIDExcuter/app.config | 15 + CIDExcuter/packages.config | 6 + CRVM.sln | 168 + ClientSetup/ClientSetup.vdproj | 1350 +++++ Driver/DaqDriver - 复制.cs.bak | 149 + Driver/DaqDriver - 复制.csBK | 338 ++ Driver/DaqDriver.cs | 341 ++ Driver/IDriver.csproj | 165 + Driver/Properties/Resources.Designer.cs | 63 + Driver/Properties/Resources.resx | 101 + Driver/ZDState.cs | 73 + Driver/app.config | 15 + Driver/packages.config | 6 + Entity/Entity.csproj | 158 + Entity/EntityAlarm.cs | 21 + Entity/EntityChannel.cs | 47 + Entity/Properties/Resources.Designer.cs | 63 + Entity/Properties/Resources.resx | 101 + Entity/RollingArray.cs | 117 + Entity/SysParam.cs | 472 ++ Entity/app.config | 15 + Entity/packages.config | 6 + HBase/HBase.csproj | 144 + HBase/HbaseUnit.cs | 153 + HBase/Program.cs | 211 + HBase/Properties/AssemblyInfo.cs | 36 + HBase/Request4Json.cs | 250 + HBase/app.config | 15 + HBase/packages.config | 6 + Host/App.config | 92 + Host/AppSetting.config | 179 + Host/DataAccessForm.cs | 216 + Host/DataAccessForm.designer.cs | 544 ++ Host/DataAccessForm.resx | 194 + Host/DataSearchForm.Designer.cs | 513 ++ Host/DataSearchForm.cs | 521 ++ Host/DataSearchForm.resx | 197 + Host/ExportCsv.cs | 83 + Host/FileComparer.cs | 25 + Host/Host.csproj | 464 ++ Host/IServerMainForm.cs | 1179 +++++ Host/IServerMainForm.designer.cs | 684 +++ Host/IServerMainForm.resx | 4665 ++++++++++++++++ Host/MessageShowForm.Designer.cs | 106 + Host/MessageShowForm.cs | 53 + Host/MessageShowForm.resx | 120 + Host/OnlineRollForm.Designer.cs | 894 ++++ Host/OnlineRollForm.cs | 79 + Host/OnlineRollForm.resx | 123 + Host/OriginRollForm.Designer.cs | 906 ++++ Host/OriginRollForm.cs | 196 + Host/OriginRollForm.resx | 120 + Host/Plot_energy.cs | 343 ++ Host/Plot_energy.designer.cs | 78 + Host/Plot_energy.resx | 123 + Host/Plotting.cs | 855 +++ Host/Plotting.designer.cs | 75 + Host/Plotting.resx | 188 + Host/PlottingReview.cs | 1201 +++++ Host/PlottingReview.designer.cs | 258 + Host/PlottingReview.resx | 197 + Host/Program.cs | 37 + Host/Properties/AssemblyInfo.cs | 36 + Host/Properties/Resources.Designer.cs | 213 + Host/Properties/Resources.resx | 166 + Host/Properties/Settings.Designer.cs | 26 + Host/Properties/Settings.settings | 7 + Host/Resources/$this.Icon.ico | Bin 0 -> 3758 bytes Host/Resources/Back-64.png | Bin 0 -> 478 bytes Host/Resources/Exit_64.png | Bin 0 -> 782 bytes Host/Resources/Forward_64.png | Bin 0 -> 510 bytes Host/Resources/Help_64.png | Bin 0 -> 1540 bytes Host/Resources/Open_64.png | Bin 0 -> 787 bytes Host/Resources/Pause_64.png | Bin 0 -> 360 bytes Host/Resources/Play_64.png | Bin 0 -> 381 bytes Host/Resources/Refresh_64.png | Bin 0 -> 3317 bytes Host/Resources/Settings_64.png | Bin 0 -> 1680 bytes Host/Resources/Stop-64.png | Bin 0 -> 324 bytes Host/Resources/VibrationTest.ico | Bin 0 -> 270398 bytes Host/Resources/VibrationTest.png | Bin 0 -> 2588 bytes Host/Resources/baosteel.png | Bin 0 -> 30506 bytes Host/Resources/baosteel150.png | Bin 0 -> 28008 bytes Host/Resources/search_64.png | Bin 0 -> 16919 bytes Host/SetAlarmForm.cs | 229 + Host/SetAlarmForm.designer.cs | 414 ++ Host/SetAlarmForm.resx | 227 + Host/SetDataStorageForm.cs | 117 + Host/SetDataStorageForm.designer.cs | 305 ++ Host/SetDataStorageForm.resx | 194 + Host/SetDisplayForm.cs | 64 + Host/SetDisplayForm.designer.cs | 576 ++ Host/SetDisplayForm.resx | 194 + Host/SetPasswordForm.cs | 67 + Host/SetPasswordForm.designer.cs | 205 + Host/SetPasswordForm.resx | 188 + Host/SetSampleForm.cs | 57 + Host/SetSampleForm.designer.cs | 201 + Host/SetSampleForm.resx | 188 + Host/SetSenserForm.cs | 63 + Host/SetSenserForm.designer.cs | 440 ++ Host/SetSenserForm.resx | 188 + Host/Statusmodify.cs | 128 + Host/Statusmodify.designer.cs | 242 + Host/Statusmodify.resx | 188 + Host/VibrationTest.ico | Bin 0 -> 270398 bytes Host/app.manifest | 79 + Host/controls/ChannelSelect.cs | 65 + Host/controls/ChannelSelect.designer.cs | 178 + Host/controls/ChannelSelect.resx | 147 + Host/controls/GraCheckedEnergy.cs | 253 + Host/controls/GraCheckedEnergy.designer.cs | 312 ++ Host/controls/GraCheckedEnergy.resx | 162 + Host/controls/GraCheckedTime.cs | 390 ++ Host/controls/GraCheckedTime.designer.cs | 412 ++ Host/controls/GraCheckedTime.resx | 183 + Host/controls/GraCheckedTimeRe.cs | 459 ++ Host/controls/GraCheckedTimeRe.designer.cs | 436 ++ Host/controls/GraCheckedTimeRe.resx | 189 + Host/controls/GraOrder.cs | 102 + Host/controls/GraOrder.designer.cs | 209 + Host/controls/GraOrder.resx | 120 + Host/controls/WizardBaseChannel.cs | 19 + Host/controls/WizardBaseChannel.designer.cs | 45 + Host/controls/WizardBaseChannel.resx | 120 + Host/controls/titileSet.cs | 52 + Host/controls/titileSet.designer.cs | 86 + Host/controls/titileSet.resx | 129 + Host/dbaccess.conf | 10 + Host/logical/ConfigHelper.cs | 484 ++ Host/logical/IConfigHelper.cs | 105 + Host/logical/LogicCon.cs | 61 + Host/logical/LogicConnect.cs | 129 + Host/login.Designer.cs | 91 + Host/login.cs | 42 + Host/login.resx | 120 + Host/packages.config | 6 + Host/用户使用手册.pdf | Bin 0 -> 1888510 bytes HostSetup/HostSetup.vdproj | 3895 ++++++++++++++ ICService/ICService.csproj | 140 + ICService/Properties/Resources.Designer.cs | 63 + ICService/Properties/Resources.resx | 101 + ICService/PushMessage.cs | 152 + ICService/app.config | 15 + ICService/packages.config | 6 + IDExcuter/AlarmRing.cs | 117 + IDExcuter/DataProcessCenter.cs | 1533 ++++++ IDExcuter/DbHelper.cs | 1079 ++++ IDExcuter/IDataHelper.cs | 249 + IDExcuter/IViewHelper.cs | 375 ++ IDExcuter/LogicConnect.cs | 75 + IDExcuter/Machine.cs | 80 + IDExcuter/Properties/Resources.Designer.cs | 63 + IDExcuter/Properties/Resources.resx | 101 + IDExcuter/SIDExcuter.csproj | 217 + IDExcuter/Stand.cs | 352 ++ IDExcuter/app.config | 15 + IDExcuter/packages.config | 6 + RestApi/BoxData.cs | 473 ++ RestApi/DataGetService.cs | 92 + RestApi/IDataGet.cs | 39 + RestApi/Properties/AssemblyInfo.cs | 36 + RestApi/RestApi.csproj | 85 + RestApi/RestHandler.cs | 51 + RestApi/app.config | 15 + RestApi/packages.config | 6 + Utility/ConnectDBItem.cs | 2139 ++++++++ Utility/DB2DBUtility.cs | 307 ++ Utility/EntityItem.cs | 371 ++ Utility/MLog.cs | 488 ++ Utility/OraDBUtility.cs | 385 ++ Utility/PgDBUtility.cs | 303 ++ Utility/Properties/Resources.Designer.cs | 63 + Utility/Properties/Resources.resx | 101 + Utility/RedisDB.cs | 79 + Utility/SqlDBUtility.cs | 371 ++ Utility/StringConnectItem.cs | 46 + Utility/T_ALARM_PARAM.cs | 29 + Utility/T_DICT_DATA.cs | 19 + Utility/Utility.csproj | 169 + Utility/VibSimulation.cs | 266 + Utility/app.config | 15 + Utility/packages.config | 7 + client/AlarmShowForm.Designer.cs | 232 + client/AlarmShowForm.cs | 220 + client/AlarmShowForm.resx | 194 + client/AppSetting.config | 189 + client/DataAccessForm.cs | 215 + client/DataAccessForm.designer.cs | 544 ++ client/DataAccessForm.resx | 132 + client/DataSearchForm.Designer.cs | 515 ++ client/DataSearchForm.cs | 523 ++ client/DataSearchForm.resx | 197 + client/ExportCsv.cs | 83 + client/FileComparer.cs | 25 + client/IClientMainForm.cs | 1556 ++++++ client/IClientMainForm.designer.cs | 809 +++ client/IClientMainForm.resx | 4671 +++++++++++++++++ client/LogForm.Designer.cs | 201 + client/LogForm.cs | 52 + client/LogForm.resx | 188 + client/MessageShowForm.Designer.cs | 107 + client/MessageShowForm.cs | 53 + client/MessageShowForm.resx | 120 + client/OnlineRollForm.Designer.cs | 895 ++++ client/OnlineRollForm.cs | 82 + client/OnlineRollForm.resx | 123 + client/OriginRollForm.Designer.cs | 905 ++++ client/OriginRollForm.cs | 196 + client/OriginRollForm.resx | 120 + client/Plot_energy.cs | 343 ++ client/Plot_energy.designer.cs | 78 + client/Plot_energy.resx | 123 + client/Plotting.cs | 848 +++ client/Plotting.designer.cs | 75 + client/Plotting.resx | 188 + client/PlottingReview.cs | 1479 ++++++ client/PlottingReview.designer.cs | 355 ++ client/PlottingReview.resx | 197 + client/Program.cs | 32 + client/Properties/Resources.Designer.cs | 233 + client/Properties/Resources.resx | 172 + client/Resources/$this.Icon.ico | Bin 0 -> 3758 bytes client/Resources/$this.icon.bmp | Bin 0 -> 3382 bytes client/Resources/Back-64.png | Bin 0 -> 478 bytes client/Resources/Exit_64.png | Bin 0 -> 782 bytes client/Resources/Forward_64.png | Bin 0 -> 510 bytes client/Resources/Help_64.png | Bin 0 -> 1540 bytes client/Resources/Icon1.ico | Bin 0 -> 45451 bytes client/Resources/Image1.bmp | Bin 0 -> 3382 bytes client/Resources/Open_64.png | Bin 0 -> 787 bytes client/Resources/Pause_64.png | Bin 0 -> 360 bytes client/Resources/Play_64.png | Bin 0 -> 381 bytes client/Resources/Refresh_64.png | Bin 0 -> 3317 bytes client/Resources/Settings_64.png | Bin 0 -> 1680 bytes client/Resources/Stop-64.png | Bin 0 -> 324 bytes client/Resources/VibrationTest.ico | Bin 0 -> 270398 bytes client/Resources/VibrationTest.png | Bin 0 -> 2588 bytes client/Resources/baosteel.png | Bin 0 -> 30506 bytes client/Resources/baosteel150.png | Bin 0 -> 28008 bytes client/Resources/search_64.png | Bin 0 -> 16919 bytes client/Resources/不可见.png | Bin 0 -> 9253 bytes client/Resources/可见.ico | Bin 0 -> 10134 bytes client/Resources/可见.png | Bin 0 -> 13505 bytes client/SetAlarmForm.cs | 239 + client/SetAlarmForm.designer.cs | 416 ++ client/SetAlarmForm.resx | 227 + client/SetAlarmRingForm.cs | 141 + client/SetAlarmRingForm.designer.cs | 342 ++ client/SetAlarmRingForm.resx | 194 + client/SetDataStorageForm.cs | 117 + client/SetDataStorageForm.designer.cs | 305 ++ client/SetDataStorageForm.resx | 194 + client/SetDisplayForm.cs | 64 + client/SetDisplayForm.designer.cs | 576 ++ client/SetDisplayForm.resx | 194 + client/SetPasswordForm.cs | 58 + client/SetPasswordForm.designer.cs | 205 + client/SetPasswordForm.resx | 188 + client/VibrationTest.ico | Bin 0 -> 270398 bytes client/app.config | 64 + client/client.csproj | 462 ++ client/controls/ChannelSelect.cs | 65 + client/controls/ChannelSelect.designer.cs | 180 + client/controls/ChannelSelect.resx | 147 + client/controls/GraCheckedEnergy.cs | 253 + client/controls/GraCheckedEnergy.designer.cs | 312 ++ client/controls/GraCheckedEnergy.resx | 162 + client/controls/GraCheckedTime.cs | 390 ++ client/controls/GraCheckedTime.designer.cs | 412 ++ client/controls/GraCheckedTime.resx | 183 + client/controls/GraCheckedTimeRe.cs | 455 ++ client/controls/GraCheckedTimeRe.designer.cs | 436 ++ client/controls/GraCheckedTimeRe.resx | 189 + client/controls/GraOrder.cs | 102 + client/controls/GraOrder.designer.cs | 209 + client/controls/GraOrder.resx | 120 + client/controls/WizardBaseChannel.cs | 19 + client/controls/WizardBaseChannel.designer.cs | 45 + client/controls/WizardBaseChannel.resx | 120 + client/controls/titileSet.cs | 52 + client/controls/titileSet.designer.cs | 86 + client/controls/titileSet.resx | 129 + client/dbaccess.conf | 10 + client/high.wav | Bin 0 -> 17728 bytes client/logical/ConfigHelper.cs | 519 ++ client/logical/IConfigHelper.cs | 103 + client/logical/LogicCon.cs | 41 + client/logical/LogicConnect.cs | 124 + client/login.Designer.cs | 91 + client/login.cs | 41 + client/login.resx | 120 + client/low.wav | Bin 0 -> 17616 bytes client/mid.wav | Bin 0 -> 3564 bytes client/packages.config | 6 + client/用户使用手册.pdf | Bin 0 -> 1888510 bytes dllFiles/Apache.NMS.ActiveMQ.dll | Bin 0 -> 812032 bytes dllFiles/Apache.NMS.dll | Bin 0 -> 70656 bytes dllFiles/AxInterop.AcroPDFLib.dll | Bin 0 -> 9216 bytes dllFiles/Commons.dll | Bin 0 -> 28672 bytes dllFiles/ICSharpCode.SharpZipLib.dll | Bin 0 -> 143360 bytes dllFiles/Interop.AcroPDFLib.dll | Bin 0 -> 10240 bytes dllFiles/Memcached.ClientLibrary.dll | Bin 0 -> 69632 bytes ...oft.Practices.EnterpriseLibrary.Common.dll | Bin 0 -> 163840 bytes ...oft.Threading.Tasks.Extensions.Desktop.dll | Bin 0 -> 47424 bytes .../Microsoft.Threading.Tasks.Extensions.dll | Bin 0 -> 31520 bytes dllFiles/Microsoft.Threading.Tasks.dll | Bin 0 -> 37104 bytes dllFiles/Mono.Security.dll | Bin 0 -> 282624 bytes dllFiles/NationalInstruments.Common.dll | Bin 0 -> 767880 bytes dllFiles/NationalInstruments.DAQmx.dll | Bin 0 -> 2143704 bytes dllFiles/Newtonsoft.Json.dll | Bin 0 -> 407776 bytes dllFiles/Npgsql.dll | Bin 0 -> 403968 bytes dllFiles/StackExchange.Redis.dll | Bin 0 -> 343552 bytes dllFiles/TcmControl.dll | Bin 0 -> 517632 bytes dllFiles/WeifenLuo.WinFormsUI.Docking.dll | Bin 0 -> 446464 bytes dllFiles/ZedGraph.dll | Bin 0 -> 332800 bytes dllFiles/log4net.dll | Bin 0 -> 270336 bytes dllFiles/用户使用手册.pdf | Bin 0 -> 1545952 bytes readme.txt | 1 + 332 files changed, 76055 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 1420轧机振动数据库修改.txt create mode 100644 CIDExcuter/AlarmRing.cs create mode 100644 CIDExcuter/CIDExcuter.csproj create mode 100644 CIDExcuter/DataProcessCenter.cs create mode 100644 CIDExcuter/DataProcessCenter.cs.bak create mode 100644 CIDExcuter/DbHelper.cs create mode 100644 CIDExcuter/IDataHelper.cs create mode 100644 CIDExcuter/IViewHelper.cs create mode 100644 CIDExcuter/LogicConnect.cs create mode 100644 CIDExcuter/Machine.cs create mode 100644 CIDExcuter/Properties/AssemblyInfo.cs create mode 100644 CIDExcuter/Stand.cs create mode 100644 CIDExcuter/app.config create mode 100644 CIDExcuter/packages.config create mode 100644 CRVM.sln create mode 100644 ClientSetup/ClientSetup.vdproj create mode 100644 Driver/DaqDriver - 复制.cs.bak create mode 100644 Driver/DaqDriver - 复制.csBK create mode 100644 Driver/DaqDriver.cs create mode 100644 Driver/IDriver.csproj create mode 100644 Driver/Properties/Resources.Designer.cs create mode 100644 Driver/Properties/Resources.resx create mode 100644 Driver/ZDState.cs create mode 100644 Driver/app.config create mode 100644 Driver/packages.config create mode 100644 Entity/Entity.csproj create mode 100644 Entity/EntityAlarm.cs create mode 100644 Entity/EntityChannel.cs create mode 100644 Entity/Properties/Resources.Designer.cs create mode 100644 Entity/Properties/Resources.resx create mode 100644 Entity/RollingArray.cs create mode 100644 Entity/SysParam.cs create mode 100644 Entity/app.config create mode 100644 Entity/packages.config create mode 100644 HBase/HBase.csproj create mode 100644 HBase/HbaseUnit.cs create mode 100644 HBase/Program.cs create mode 100644 HBase/Properties/AssemblyInfo.cs create mode 100644 HBase/Request4Json.cs create mode 100644 HBase/app.config create mode 100644 HBase/packages.config create mode 100644 Host/App.config create mode 100644 Host/AppSetting.config create mode 100644 Host/DataAccessForm.cs create mode 100644 Host/DataAccessForm.designer.cs create mode 100644 Host/DataAccessForm.resx create mode 100644 Host/DataSearchForm.Designer.cs create mode 100644 Host/DataSearchForm.cs create mode 100644 Host/DataSearchForm.resx create mode 100644 Host/ExportCsv.cs create mode 100644 Host/FileComparer.cs create mode 100644 Host/Host.csproj create mode 100644 Host/IServerMainForm.cs create mode 100644 Host/IServerMainForm.designer.cs create mode 100644 Host/IServerMainForm.resx create mode 100644 Host/MessageShowForm.Designer.cs create mode 100644 Host/MessageShowForm.cs create mode 100644 Host/MessageShowForm.resx create mode 100644 Host/OnlineRollForm.Designer.cs create mode 100644 Host/OnlineRollForm.cs create mode 100644 Host/OnlineRollForm.resx create mode 100644 Host/OriginRollForm.Designer.cs create mode 100644 Host/OriginRollForm.cs create mode 100644 Host/OriginRollForm.resx create mode 100644 Host/Plot_energy.cs create mode 100644 Host/Plot_energy.designer.cs create mode 100644 Host/Plot_energy.resx create mode 100644 Host/Plotting.cs create mode 100644 Host/Plotting.designer.cs create mode 100644 Host/Plotting.resx create mode 100644 Host/PlottingReview.cs create mode 100644 Host/PlottingReview.designer.cs create mode 100644 Host/PlottingReview.resx create mode 100644 Host/Program.cs create mode 100644 Host/Properties/AssemblyInfo.cs create mode 100644 Host/Properties/Resources.Designer.cs create mode 100644 Host/Properties/Resources.resx create mode 100644 Host/Properties/Settings.Designer.cs create mode 100644 Host/Properties/Settings.settings create mode 100644 Host/Resources/$this.Icon.ico create mode 100644 Host/Resources/Back-64.png create mode 100644 Host/Resources/Exit_64.png create mode 100644 Host/Resources/Forward_64.png create mode 100644 Host/Resources/Help_64.png create mode 100644 Host/Resources/Open_64.png create mode 100644 Host/Resources/Pause_64.png create mode 100644 Host/Resources/Play_64.png create mode 100644 Host/Resources/Refresh_64.png create mode 100644 Host/Resources/Settings_64.png create mode 100644 Host/Resources/Stop-64.png create mode 100644 Host/Resources/VibrationTest.ico create mode 100644 Host/Resources/VibrationTest.png create mode 100644 Host/Resources/baosteel.png create mode 100644 Host/Resources/baosteel150.png create mode 100644 Host/Resources/search_64.png create mode 100644 Host/SetAlarmForm.cs create mode 100644 Host/SetAlarmForm.designer.cs create mode 100644 Host/SetAlarmForm.resx create mode 100644 Host/SetDataStorageForm.cs create mode 100644 Host/SetDataStorageForm.designer.cs create mode 100644 Host/SetDataStorageForm.resx create mode 100644 Host/SetDisplayForm.cs create mode 100644 Host/SetDisplayForm.designer.cs create mode 100644 Host/SetDisplayForm.resx create mode 100644 Host/SetPasswordForm.cs create mode 100644 Host/SetPasswordForm.designer.cs create mode 100644 Host/SetPasswordForm.resx create mode 100644 Host/SetSampleForm.cs create mode 100644 Host/SetSampleForm.designer.cs create mode 100644 Host/SetSampleForm.resx create mode 100644 Host/SetSenserForm.cs create mode 100644 Host/SetSenserForm.designer.cs create mode 100644 Host/SetSenserForm.resx create mode 100644 Host/Statusmodify.cs create mode 100644 Host/Statusmodify.designer.cs create mode 100644 Host/Statusmodify.resx create mode 100644 Host/VibrationTest.ico create mode 100644 Host/app.manifest create mode 100644 Host/controls/ChannelSelect.cs create mode 100644 Host/controls/ChannelSelect.designer.cs create mode 100644 Host/controls/ChannelSelect.resx create mode 100644 Host/controls/GraCheckedEnergy.cs create mode 100644 Host/controls/GraCheckedEnergy.designer.cs create mode 100644 Host/controls/GraCheckedEnergy.resx create mode 100644 Host/controls/GraCheckedTime.cs create mode 100644 Host/controls/GraCheckedTime.designer.cs create mode 100644 Host/controls/GraCheckedTime.resx create mode 100644 Host/controls/GraCheckedTimeRe.cs create mode 100644 Host/controls/GraCheckedTimeRe.designer.cs create mode 100644 Host/controls/GraCheckedTimeRe.resx create mode 100644 Host/controls/GraOrder.cs create mode 100644 Host/controls/GraOrder.designer.cs create mode 100644 Host/controls/GraOrder.resx create mode 100644 Host/controls/WizardBaseChannel.cs create mode 100644 Host/controls/WizardBaseChannel.designer.cs create mode 100644 Host/controls/WizardBaseChannel.resx create mode 100644 Host/controls/titileSet.cs create mode 100644 Host/controls/titileSet.designer.cs create mode 100644 Host/controls/titileSet.resx create mode 100644 Host/dbaccess.conf create mode 100644 Host/logical/ConfigHelper.cs create mode 100644 Host/logical/IConfigHelper.cs create mode 100644 Host/logical/LogicCon.cs create mode 100644 Host/logical/LogicConnect.cs create mode 100644 Host/login.Designer.cs create mode 100644 Host/login.cs create mode 100644 Host/login.resx create mode 100644 Host/packages.config create mode 100644 Host/用户使用手册.pdf create mode 100644 HostSetup/HostSetup.vdproj create mode 100644 ICService/ICService.csproj create mode 100644 ICService/Properties/Resources.Designer.cs create mode 100644 ICService/Properties/Resources.resx create mode 100644 ICService/PushMessage.cs create mode 100644 ICService/app.config create mode 100644 ICService/packages.config create mode 100644 IDExcuter/AlarmRing.cs create mode 100644 IDExcuter/DataProcessCenter.cs create mode 100644 IDExcuter/DbHelper.cs create mode 100644 IDExcuter/IDataHelper.cs create mode 100644 IDExcuter/IViewHelper.cs create mode 100644 IDExcuter/LogicConnect.cs create mode 100644 IDExcuter/Machine.cs create mode 100644 IDExcuter/Properties/Resources.Designer.cs create mode 100644 IDExcuter/Properties/Resources.resx create mode 100644 IDExcuter/SIDExcuter.csproj create mode 100644 IDExcuter/Stand.cs create mode 100644 IDExcuter/app.config create mode 100644 IDExcuter/packages.config create mode 100644 RestApi/BoxData.cs create mode 100644 RestApi/DataGetService.cs create mode 100644 RestApi/IDataGet.cs create mode 100644 RestApi/Properties/AssemblyInfo.cs create mode 100644 RestApi/RestApi.csproj create mode 100644 RestApi/RestHandler.cs create mode 100644 RestApi/app.config create mode 100644 RestApi/packages.config create mode 100644 Utility/ConnectDBItem.cs create mode 100644 Utility/DB2DBUtility.cs create mode 100644 Utility/EntityItem.cs create mode 100644 Utility/MLog.cs create mode 100644 Utility/OraDBUtility.cs create mode 100644 Utility/PgDBUtility.cs create mode 100644 Utility/Properties/Resources.Designer.cs create mode 100644 Utility/Properties/Resources.resx create mode 100644 Utility/RedisDB.cs create mode 100644 Utility/SqlDBUtility.cs create mode 100644 Utility/StringConnectItem.cs create mode 100644 Utility/T_ALARM_PARAM.cs create mode 100644 Utility/T_DICT_DATA.cs create mode 100644 Utility/Utility.csproj create mode 100644 Utility/VibSimulation.cs create mode 100644 Utility/app.config create mode 100644 Utility/packages.config create mode 100644 client/AlarmShowForm.Designer.cs create mode 100644 client/AlarmShowForm.cs create mode 100644 client/AlarmShowForm.resx create mode 100644 client/AppSetting.config create mode 100644 client/DataAccessForm.cs create mode 100644 client/DataAccessForm.designer.cs create mode 100644 client/DataAccessForm.resx create mode 100644 client/DataSearchForm.Designer.cs create mode 100644 client/DataSearchForm.cs create mode 100644 client/DataSearchForm.resx create mode 100644 client/ExportCsv.cs create mode 100644 client/FileComparer.cs create mode 100644 client/IClientMainForm.cs create mode 100644 client/IClientMainForm.designer.cs create mode 100644 client/IClientMainForm.resx create mode 100644 client/LogForm.Designer.cs create mode 100644 client/LogForm.cs create mode 100644 client/LogForm.resx create mode 100644 client/MessageShowForm.Designer.cs create mode 100644 client/MessageShowForm.cs create mode 100644 client/MessageShowForm.resx create mode 100644 client/OnlineRollForm.Designer.cs create mode 100644 client/OnlineRollForm.cs create mode 100644 client/OnlineRollForm.resx create mode 100644 client/OriginRollForm.Designer.cs create mode 100644 client/OriginRollForm.cs create mode 100644 client/OriginRollForm.resx create mode 100644 client/Plot_energy.cs create mode 100644 client/Plot_energy.designer.cs create mode 100644 client/Plot_energy.resx create mode 100644 client/Plotting.cs create mode 100644 client/Plotting.designer.cs create mode 100644 client/Plotting.resx create mode 100644 client/PlottingReview.cs create mode 100644 client/PlottingReview.designer.cs create mode 100644 client/PlottingReview.resx create mode 100644 client/Program.cs create mode 100644 client/Properties/Resources.Designer.cs create mode 100644 client/Properties/Resources.resx create mode 100644 client/Resources/$this.Icon.ico create mode 100644 client/Resources/$this.icon.bmp create mode 100644 client/Resources/Back-64.png create mode 100644 client/Resources/Exit_64.png create mode 100644 client/Resources/Forward_64.png create mode 100644 client/Resources/Help_64.png create mode 100644 client/Resources/Icon1.ico create mode 100644 client/Resources/Image1.bmp create mode 100644 client/Resources/Open_64.png create mode 100644 client/Resources/Pause_64.png create mode 100644 client/Resources/Play_64.png create mode 100644 client/Resources/Refresh_64.png create mode 100644 client/Resources/Settings_64.png create mode 100644 client/Resources/Stop-64.png create mode 100644 client/Resources/VibrationTest.ico create mode 100644 client/Resources/VibrationTest.png create mode 100644 client/Resources/baosteel.png create mode 100644 client/Resources/baosteel150.png create mode 100644 client/Resources/search_64.png create mode 100644 client/Resources/不可见.png create mode 100644 client/Resources/可见.ico create mode 100644 client/Resources/可见.png create mode 100644 client/SetAlarmForm.cs create mode 100644 client/SetAlarmForm.designer.cs create mode 100644 client/SetAlarmForm.resx create mode 100644 client/SetAlarmRingForm.cs create mode 100644 client/SetAlarmRingForm.designer.cs create mode 100644 client/SetAlarmRingForm.resx create mode 100644 client/SetDataStorageForm.cs create mode 100644 client/SetDataStorageForm.designer.cs create mode 100644 client/SetDataStorageForm.resx create mode 100644 client/SetDisplayForm.cs create mode 100644 client/SetDisplayForm.designer.cs create mode 100644 client/SetDisplayForm.resx create mode 100644 client/SetPasswordForm.cs create mode 100644 client/SetPasswordForm.designer.cs create mode 100644 client/SetPasswordForm.resx create mode 100644 client/VibrationTest.ico create mode 100644 client/app.config create mode 100644 client/client.csproj create mode 100644 client/controls/ChannelSelect.cs create mode 100644 client/controls/ChannelSelect.designer.cs create mode 100644 client/controls/ChannelSelect.resx create mode 100644 client/controls/GraCheckedEnergy.cs create mode 100644 client/controls/GraCheckedEnergy.designer.cs create mode 100644 client/controls/GraCheckedEnergy.resx create mode 100644 client/controls/GraCheckedTime.cs create mode 100644 client/controls/GraCheckedTime.designer.cs create mode 100644 client/controls/GraCheckedTime.resx create mode 100644 client/controls/GraCheckedTimeRe.cs create mode 100644 client/controls/GraCheckedTimeRe.designer.cs create mode 100644 client/controls/GraCheckedTimeRe.resx create mode 100644 client/controls/GraOrder.cs create mode 100644 client/controls/GraOrder.designer.cs create mode 100644 client/controls/GraOrder.resx create mode 100644 client/controls/WizardBaseChannel.cs create mode 100644 client/controls/WizardBaseChannel.designer.cs create mode 100644 client/controls/WizardBaseChannel.resx create mode 100644 client/controls/titileSet.cs create mode 100644 client/controls/titileSet.designer.cs create mode 100644 client/controls/titileSet.resx create mode 100644 client/dbaccess.conf create mode 100644 client/high.wav create mode 100644 client/logical/ConfigHelper.cs create mode 100644 client/logical/IConfigHelper.cs create mode 100644 client/logical/LogicCon.cs create mode 100644 client/logical/LogicConnect.cs create mode 100644 client/login.Designer.cs create mode 100644 client/login.cs create mode 100644 client/login.resx create mode 100644 client/low.wav create mode 100644 client/mid.wav create mode 100644 client/packages.config create mode 100644 client/用户使用手册.pdf create mode 100644 dllFiles/Apache.NMS.ActiveMQ.dll create mode 100644 dllFiles/Apache.NMS.dll create mode 100644 dllFiles/AxInterop.AcroPDFLib.dll create mode 100644 dllFiles/Commons.dll create mode 100644 dllFiles/ICSharpCode.SharpZipLib.dll create mode 100644 dllFiles/Interop.AcroPDFLib.dll create mode 100644 dllFiles/Memcached.ClientLibrary.dll create mode 100644 dllFiles/Microsoft.Practices.EnterpriseLibrary.Common.dll create mode 100644 dllFiles/Microsoft.Threading.Tasks.Extensions.Desktop.dll create mode 100644 dllFiles/Microsoft.Threading.Tasks.Extensions.dll create mode 100644 dllFiles/Microsoft.Threading.Tasks.dll create mode 100644 dllFiles/Mono.Security.dll create mode 100644 dllFiles/NationalInstruments.Common.dll create mode 100644 dllFiles/NationalInstruments.DAQmx.dll create mode 100644 dllFiles/Newtonsoft.Json.dll create mode 100644 dllFiles/Npgsql.dll create mode 100644 dllFiles/StackExchange.Redis.dll create mode 100644 dllFiles/TcmControl.dll create mode 100644 dllFiles/WeifenLuo.WinFormsUI.Docking.dll create mode 100644 dllFiles/ZedGraph.dll create mode 100644 dllFiles/log4net.dll create mode 100644 dllFiles/用户使用手册.pdf create mode 100644 readme.txt diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b06e864 --- /dev/null +++ b/.gitignore @@ -0,0 +1,212 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studio 2015 cache/options directory +.vs/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +## TODO: Comment the next line if you want to checkin your +## web deploy settings but do note that will include unencrypted +## passwords +#*.pubxml + +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# LightSwitch generated files +GeneratedArtifacts/ +_Pvt_Extensions/ +ModelManifest.xml diff --git a/1420轧机振动数据库修改.txt b/1420轧机振动数据库修改.txt new file mode 100644 index 0000000..111f529 --- /dev/null +++ b/1420轧机振动数据库修改.txt @@ -0,0 +1,11 @@ +update t_coilinfo set origPath=replace(origPath, '\\', '\'); +update t_coilinfo set energyPath=replace(energyPath, '\\', '\'); +alter table t_alarm_info add standno int; +alter table t_alarm_info add energy float; + + + +update t_coilinfo_client set origPath=replace(origPath, '\\', '\'); +update t_coilinfo_client set energyPath=replace(energyPath, '\\', '\'); +alter table t_alarm_info_client add standno int; +alter table t_alarm_info_client add energy float; \ No newline at end of file diff --git a/CIDExcuter/AlarmRing.cs b/CIDExcuter/AlarmRing.cs new file mode 100644 index 0000000..4220d3a --- /dev/null +++ b/CIDExcuter/AlarmRing.cs @@ -0,0 +1,136 @@ +using System; +using System.Threading; +using CRVM.Entity; + +namespace CRVM.CIDExcuter +{ + public class AlarmRing + { + /// + /// 播放波形文件 + /// + /// 文件路径 + /// 一般情况下为0 + /// + /// + [System.Runtime.InteropServices.DllImport("winmm.dll")] + public static extern bool PlaySound(String Filename, int Mod, int Flags); + protected const int SND_SYNC = 0x0; //同步播放,线程阻塞 + protected const int SND_ASYNC = 0x1;//异步播放 + protected const int SND_NODEFAULT = 0x2; + protected const int SND_MEMORY = 0x4; + protected const int SND_LOOP = 0x8; + protected const int SND_NOSTOP = 0x10; + protected const int SND_NOWAIT = 0x2000; + protected const int SND_ALIAS = 0x10000; + protected const int SND_ALIAS_ID = 0x110000; + protected const int SND_FILENAME = 0x20000; + protected const int SND_RESOURCE = 0x40004; + protected const int SND_PURGE = 0x40; + protected const int SND_APPLICATION = 0x80; + + + + + private Thread vp; + /// + /// 开启报警铃声 + /// + public void Ring(bool low, bool mid, bool high) + { + if (vp != null && vp.IsAlive) + { + vp.Abort(); + } + if (mid) + { + PlaySound("mid.wav", 0, SND_FILENAME | SND_ASYNC); + //PlaySound("low.wav", 0, SND_FILENAME | SND_ASYNC); + } + else if (high) + { + PlaySound("high.wav", 0, SND_FILENAME | SND_ASYNC); + //PlaySound("low.wav", 0, SND_FILENAME | SND_ASYNC); + } + else if (low) + { + PlaySound("low.wav", 0, SND_FILENAME | SND_ASYNC); + } + + } + + public void Ring() + { + if (SysParam.Instance.ringType == 1) + { + PlaySound("mid.wav", 0, SND_FILENAME | SND_ASYNC); + //PlaySound("low.wav", 0, SND_FILENAME | SND_ASYNC); + } + else if (SysParam.Instance.ringType == 2) + { + PlaySound("high.wav", 0, SND_FILENAME | SND_ASYNC); + //PlaySound("low.wav", 0, SND_FILENAME | SND_ASYNC); + } + else if (SysParam.Instance.ringType == 0) + { + PlaySound("low.wav", 0, SND_FILENAME | SND_ASYNC); + } + + } + /// + /// 根据报警标记播放报警信息 + /// + /// 报警标记[机架号,类型] + public void AlarmVoice(bool[,] alarmFlag) + { + if (vp != null && vp.IsAlive) + { + vp.Abort(); + } + vp = new Thread(() => AlarmVoicePlay(alarmFlag)); + vp.Start(); + } + + internal void DefectVoice(bool[,] tempDefectFlag, bool[,] alarmFlag) + { + if (vp != null && vp.IsAlive) + { + vp.Abort(); + } + vp = new Thread(() => DefectVoicePlay(tempDefectFlag, alarmFlag)); + vp.Start(); + //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " 线程号:" + Thread.CurrentThread.ManagedThreadId + " 线程池:" + Thread.CurrentThread.IsThreadPoolThread); + } + + private void AlarmVoicePlay(bool[,] alarmFlag) + { + for (int i = 5; i >= 1; i--) + { + for (int j = 3; j >= 1; j--) + { + if (alarmFlag[i - 1, j - 1]) + { + PlaySound(SysParam.Instance.appPath + @"\ring\alarm" + i + "-" + j + ".wav", 0, SND_FILENAME | SND_ASYNC); + Thread.Sleep(2000); + } + } + } + } + + private void DefectVoicePlay(bool[,] defectFlag, bool[,] alarmFlag) + { + //for (int i = 5; i >= 1; i--) + //{ + // for (int j = 3; j >= 1; j--) + // { + // if (defectFlag[i - 1, j - 1]) + // { + // PlaySound(SysParam.Instance.appPath+@"\ring\defect" + i + "-" + j + ".wav", 0, SND_FILENAME | SND_ASYNC); + // Thread.Sleep(2000); + // } + // } + //} + AlarmVoicePlay(alarmFlag); + } + } +} diff --git a/CIDExcuter/CIDExcuter.csproj b/CIDExcuter/CIDExcuter.csproj new file mode 100644 index 0000000..492ceba --- /dev/null +++ b/CIDExcuter/CIDExcuter.csproj @@ -0,0 +1,105 @@ + + + + + Debug + AnyCPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3} + Library + Properties + CRVM.CIDExcuter + CIDExcuter + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll + + + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.IO.dll + + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Runtime.dll + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Threading.Tasks.dll + + + + + + + + + + + + + + + + + + + + + + + + {6ea706f6-065d-469e-ab39-7395d780548b} + Entity + + + {27d3ba32-12d4-484e-83d0-573d30fc2a60} + HBase + + + {98dc5466-7295-439a-bbca-a5d4dc219776} + ICService + + + {883a056a-e138-47c0-b8e5-f23fd82f0631} + Utility + + + + + + + + + + \ No newline at end of file diff --git a/CIDExcuter/DataProcessCenter.cs b/CIDExcuter/DataProcessCenter.cs new file mode 100644 index 0000000..f08cbc2 --- /dev/null +++ b/CIDExcuter/DataProcessCenter.cs @@ -0,0 +1,1038 @@ +using System; +using CRVM.Entity; +using System.Threading; +using System.Threading.Tasks; +using System.Runtime.InteropServices; +using ICService; +using System.Collections.Generic; +using CRVM.Utility; +using System.Timers; +//using CRVM.Driver; + +namespace CRVM.CIDExcuter +{ + + public class OrginalCollectDataEventArgs : EventArgs { } + + public delegate void ComeNewDataHandle(OrginalCollectDataEventArgs e); + public class DataProcessCenter + { + //调试 + System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(); + public event ComeNewDataHandle DataChanged; + private Machine mac; + private IDataHelper dataHelper; + + private bool isAlarmingNow; + private bool isAlarmingLast; + private bool lowRing, midRing, highRing; + private bool isDefect; + private bool[,] ringflag = new bool[SysParam.Instance.SpeedChannelCount, 3];//报警范围内使用,记录报警范围内哪个机架哪个频段发生报警 + private bool[,] defectflag = new bool[SysParam.Instance.SpeedChannelCount, 3];//报警范围内使用,记录报警范围内哪个机架哪个频段发生报警 + private double[] alarm_MaxEnergy = new double[SysParam.Instance.SpeedChannelCount];//报警范围内使用,记录五个机架报警范围内产生的最大能量值 + private int[] alarm_Position = new int[SysParam.Instance.SpeedChannelCount]; + + + private AlarmRing alarmRing; + public List alarmInfoNow = new List(); + public List alarmInfoNowMG = new List(); + public string[] alarmInfoLast; + + private double[] lineSpdFactor = { 1.0, 1.0, 1.0, 1.0, 1.0 }; + + int isCoilHasDefect = 0; + private Dictionary defectData = new Dictionary();//记录当次的缺陷报警记录 + private Dictionary allDefectData = new Dictionary();//记录所有的缺陷报警信息 + private Dictionary maxDefectEnergy = new Dictionary();//发生缺陷时的最大能量值 + private double maxDefectEnergyValue = 0.0d;//记录最大能量值 + + private bool isDefectNow = false;//记录此次采集是否超越缺陷报警线 + private bool isDefectLast = false;//记录上次采集是否超越缺陷报警线 + private bool isDefectFirstPiont = false;//是否第一个点超越报警线 + private int defectStartPos = -1; + private Dictionary defectPos = new Dictionary();//记录所有的缺陷报警信息 + private Dictionary defectMaxEnergy = new Dictionary();//发生缺陷时的最大能量值 + + bool before = false; + bool now = false; + //private ZDSate zdState; + private bool[] zdStateData; + int i = 0; + + double coilenMax = 0.0d; + int nextCoilCounter = 0; + + private System.Timers.Timer alarmParamUpdate = new System.Timers.Timer(); + + public DataProcessCenter(Machine mac) + { + this.mac = mac; + dataHelper = new IDataHelper(mac); + alarmRing = new AlarmRing(); + mac.startTime = DateTime.Now; + + //zdState = new ZDSate(); + //zdStateData = new bool[zdState.linesCount]; + + /* ---------------------定时从数据库更新报警参数任务--------------------*/ + alarmParamUpdate.Interval = 5 * 60 * 1000; //执行间隔时间,单位为毫秒, 5 minutes; + alarmParamUpdate.Elapsed += new System.Timers.ElapsedEventHandler(AlarmParamUpdate); + alarmParamUpdate.Enabled = true; + alarmParamUpdate.Start(); + } + /// + /// 定时从数据库更新报警参数 + /// + /// + /// + private void AlarmParamUpdate(object source, ElapsedEventArgs e) + { + DbHelper.GetInstance("").autoUpdateAlarmParam(); + } + public void DataProcess() //数据处理 + { + //for (int i = 0; i < zdStateData.Length; i++) + //{ + // zdStateData[i] = false; + //} + //DevelopLog.DeBug.WriteLogFile("DataProcess()", $"threadid:{Thread.CurrentThread.ManagedThreadId.ToString()},stackTrace:{stackTrace.GetFrame(1).GetMethod().ToString()}"); + //Console.WriteLine($"nowTime:{DateTime.Now.ToString("yyyy-mm-dd hh:mm:ss:FFF")}, DataProcess() --threadid:{Thread.CurrentThread.ManagedThreadId.ToString()}," + + // $"stackTrace:{stackTrace.GetFrame(1).GetMethod().ToString()}"); + isAlarmingNow = false;//初始化报警状态 + isDefectNow = false; + lowRing = false; + midRing = false; + highRing = false; + + for (int i = 0; i < SysParam.Instance.channelCount; i++)//全部通道 + { + //消除直流偏置 + DCBias(mac.Stand[i].vib); + //根据当前速度设定各机架报警系数 + GetAlarmParam(mac.Stand[i].speed, mac.Stand[i]); + //分频滤波 + mac.Stand[i].vibLow = SysParam.Instance.filterAlgor(mac.Stand[i].vib, mac.Stand[i].band_Fre_L1, mac.Stand[i].band_Fre_L2, SysParam.Instance.samplePoint, 100, SysParam.Instance.sampleFre); + mac.Stand[i].vibMid = SysParam.Instance.filterAlgor(mac.Stand[i].vib, mac.Stand[i].band_Fre_M1, mac.Stand[i].band_Fre_M2, SysParam.Instance.samplePoint, 100, SysParam.Instance.sampleFre); + mac.Stand[i].vibHig = SysParam.Instance.filterAlgor(mac.Stand[i].vib, mac.Stand[i].band_Fre_H1, mac.Stand[i].band_Fre_H2, SysParam.Instance.samplePoint, 100, SysParam.Instance.sampleFre); + //各通道、各频段能量值计算 + mac.Stand[i].energy_All = GetRMS(mac.Stand[i].vib); + mac.Stand[i].energy_L = GetRMS(mac.Stand[i].vibLow); + mac.Stand[i].energy_M = GetRMS(mac.Stand[i].vibMid); + mac.Stand[i].energy_H = GetRMS(mac.Stand[i].vibHig); + } + + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)//仅针对有速度的通道进行报警判断 + { + //轧机振动报警判断 + AlarmJudge(mac.Stand[i], i); + } + //alarmingProcess();//20240312 + //DevelopLog.DeBug.WriteLogFile("alarming", SysParam.Instance.alarming1.ToString() + "|" + SysParam.Instance.alarming2.ToString() + "|" + //+ SysParam.Instance.alarming3.ToString() + "|" + SysParam.Instance.alarming4.ToString() + "|" + SysParam.Instance.alarming5.ToString() + "|" + //+ SysParam.Instance.alarmingType.ToString()); + + //向L1 tdc发送轧机振动状态信息 + //zdState.WriteData(zdStateData); + + //播放报警铃声 + //alarmRing.Ring(lowRing, midRing, highRing); + //如报警结束,播放语音报告报警机架 + if (isAlarmingLast && !isAlarmingNow) + { + bool[,] tempAlarmFlag = (bool[,])ringflag.Clone(); + SysParam.Instance.ringflag = (bool[,])ringflag.Clone(); + + //ringflag.Initialize(); + ringflag = new bool[SysParam.Instance.SpeedChannelCount, 3]; + if (isDefect) + { + isDefect = false; + bool[,] tempDefectFlag = (bool[,])defectflag.Clone(); + defectflag.Initialize(); + alarmRing.DefectVoice(tempDefectFlag, tempAlarmFlag); + } + else + { + alarmRing.AlarmVoice(tempAlarmFlag); + } + } + + nextCoilCounter++; + if (coilenMax <= mac.stripLength && nextCoilCounter > 20) + { + coilenMax = mac.stripLength; + } + + //存储数据 + if (!SysParam.Instance.fileCreated) + { + dataHelper.CreateFileHead(); + } + dataHelper.writeNew(SysParam.Instance.samplePoint); + //更新报警信息 + if (isAlarmingNow) + { + for (int k = 0; k < SysParam.Instance.SpeedChannelCount; k++) + { + UpdateAlarmInfo(mac.Stand[k], k); ;//更新报警信息 + } + } + //来了剪切信号 + if (mac.cutted) + { + Dictionary tempDefectPos = new Dictionary(); + foreach (KeyValuePair item in defectPos) + { + tempDefectPos.Add(item.Key, item.Value); + } + + Dictionary tempDefectMaxEnergy = new Dictionary(); + foreach (KeyValuePair item in defectMaxEnergy) + { + tempDefectMaxEnergy.Add(item.Key, item.Value); + } + int dislen = Convert.ToInt32(coilenMax); + + //dataHelper.CloseFile(1, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy); + dataHelper.CloseFile(1, alarmInfoNow, Convert.ToInt32(dislen), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy); + + //dataHelper.CloseFile(1, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, allDefectData, maxDefectEnergy); + stateRefresh(); + + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录start + isCoilHasDefect = 0; + defectData.Clear(); + allDefectData.Clear(); + maxDefectEnergy.Clear(); + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录end + + isDefectNow = false;//记录此次采集是否超越缺陷报警线 + isDefectLast = false;//记录上次采集是否超越缺陷报警线 + isDefectFirstPiont = false;//是否第一个点超越报警线 + defectStartPos = -1; + defectPos.Clear();//记录所有的缺陷报警信息 + defectMaxEnergy.Clear();//发生缺陷时的最大能量值 + maxDefectEnergyValue = 0.0d; + + coilenMax = 0.0d; + nextCoilCounter = 0; + mac.stripLength = 0; + } + //累计采集时间超过半小时,文件强制关闭 + if ((DateTime.Now - mac.startTime).TotalMinutes > 30) + //if ((DateTime.Now - mac.startTime).TotalMinutes > 10) + + { + mac.cutted = true; + Dictionary tempDefectPos = new Dictionary(); + foreach (KeyValuePair item in defectPos) + { + tempDefectPos.Add(item.Key, item.Value); + } + + Dictionary tempDefectMaxEnergy = new Dictionary(); + foreach (KeyValuePair item in defectMaxEnergy) + { + tempDefectMaxEnergy.Add(item.Key, item.Value); + } + + dataHelper.CloseFile(0, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy); + stateRefresh(); + + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录start + isCoilHasDefect = 0; + defectData.Clear(); + allDefectData.Clear(); + maxDefectEnergy.Clear(); + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录end + + isDefectNow = false;//记录此次采集是否超越缺陷报警线 + isDefectLast = false;//记录上次采集是否超越缺陷报警线 + isDefectFirstPiont = false;//是否第一个点超越报警线 + defectStartPos = -1; + defectPos.Clear();//记录所有的缺陷报警信息 + defectMaxEnergy.Clear();//发生缺陷时的最大能量值 + maxDefectEnergyValue = 0.0d; + } + //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss fff") + " 8 FileStore"); + double temptime = DateTime.Now.ToOADate(); + //更新绘图所需数据 + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + ArrayMove(mac.Stand[i].tVib, mac.Stand[i].vib); + + + mac.Stand[i].list_Energy_All.Add(mac.Stand[i].energy_All); + mac.Stand[i].list_Energy_L.Add(mac.Stand[i].energy_L); + mac.Stand[i].list_Energy_M.Add(mac.Stand[i].energy_M); + mac.Stand[i].list_Energy_H.Add(mac.Stand[i].energy_H); + + mac.Stand[i].list_Alarm_L.Add(mac.Stand[i].alarm_L_Value_ck); + mac.Stand[i].list_Alarm_M.Add(mac.Stand[i].alarm_M_Value_ck); + mac.Stand[i].list_Alarm_H.Add(mac.Stand[i].alarm_H_Value_ck); + + mac.Stand[i].list_Defect_L.Add(mac.Stand[i].defect_L_Value_ck); + mac.Stand[i].list_Defect_M.Add(mac.Stand[i].defect_M_Value_ck); + mac.Stand[i].list_Defect_H.Add(mac.Stand[i].defect_H_Value_ck); + + mac.Stand[i].list_Energy_Speed.Add(mac.Stand[i].speed); + } + mac.xAxisEnergy.Add(temptime); + mac.distance_Running.Add(mac.stripLength); + if (mac.cutted) + { + mac.list_CutTime.Add(temptime); + } + if (mac.list_CutTime.Count > 0 && mac.list_CutTime[0] < mac.xAxisEnergy.Head) + { + mac.list_CutTime.RemoveAt(0); + } + + //剪切信号复位 + mac.cutted = false; + //帧数据结束 + isAlarmingLast = isAlarmingNow; + SysParam.Instance.isDatahandlered = true;//此次采集的数据全部处理结束标记 + isDefectLast = isDefectNow; + + + } + + private void alarmingProcess() + { + if (SysParam.Instance.alarming1 || SysParam.Instance.alarming2 || SysParam.Instance.alarming3 || SysParam.Instance.alarming4 || SysParam.Instance.alarming5) + { + if (SysParam.Instance.alarming5 && SysParam.Instance.alarming4) + { + SysParam.Instance.alarmingType = 2; + } + else + { + SysParam.Instance.alarmingType = 1; + } + } + else + { + SysParam.Instance.alarmingType = 0; + } + + if (SysParam.Instance.alarmingType == 2)//现场共振了记录报警信息 + { + for (int k = 3; k < SysParam.Instance.SpeedChannelCount; k++)//只看4、5机架 + { + mac.Stand[k].alarm_M_Times++; + if (mac.Stand[k].alarm_M_Times == 1)//第一次报警记录开始位置 + { + mac.Stand[k].tempAlarmMidInfostart = Convert.ToInt32(mac.stripLength); + ringflag[k, 1] = true; + mac.Stand[k].alarmMidInfo.Add(new Stand.AlarmInfo()); + mac.Stand[k].indexMid++; + mac.Stand[k].alarmMidInfo[mac.Stand[k].indexMid - 1].startPos = mac.Stand[k].tempAlarmMidInfostart; + mac.Stand[k].alarmMidInfo[mac.Stand[k].indexMid - 1].endPos = mac.Stand[k].tempAlarmMidInfostart; + mac.Stand[k].alarmMidInfo[mac.Stand[k].indexMid - 1].value = mac.Stand[k].energy_M; + mac.Stand[k].alarmMidInfo[mac.Stand[k].indexMid - 1].time = DateTime.Now; + isAlarmingNow = true; + } + + if (mac.Stand[k].alarm_M_Times > 1)//连续报警时,不断更新结束位置 + { + if (mac.Stand[k].alarmMidInfo[mac.Stand[k].indexMid - 1].value < mac.Stand[k].energy_M) + { + mac.Stand[k].alarmMidInfo[mac.Stand[k].indexMid - 1].value = mac.Stand[k].energy_M; + } + mac.Stand[k].alarmMidInfo[mac.Stand[k].indexMid - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + } + } + } + else + { + for (int k = 3; k < SysParam.Instance.SpeedChannelCount; k++)//只看4、5机架 + { + mac.Stand[k].alarm_M_Times = 0; + } + } + } + + private void DCBias(double[] temp)////数组先求平均然后数组中的每个值减去这个平均值 + { + double tempValue = 0; + int length = temp.Length; + for (int i = 0; i < length; i++) + { + tempValue += temp[i]; + } + tempValue = tempValue / length; + for (int i = 0; i < length; i++) + { + temp[i] -= tempValue; + } + } + + //查表,该机架在当前速度下的报警参数 + private void GetAlarmParam(double speed, Stand std) + { + int ias = std.alarm_spd.Length; + int i_fre = std.fre_l_S1.Length - 1; + int iIndex = std.alarm_spd[0].alarmSpeed; + if (speed <= std.alarm_spd[0].alarmSpeed) + { + std.band_Fre_L1 = std.fre_l_S1[0]; + std.band_Fre_L2 = std.fre_l_S2[0]; + std.band_Fre_M1 = std.fre_m_S1[0]; + std.band_Fre_M2 = std.fre_m_S2[0]; + std.band_Fre_H1 = std.fre_h_S1[0]; + std.band_Fre_H2 = std.fre_h_S2[0]; + std.alarm_L_Value_ck = std.fre_l_V[0]; + std.alarm_M_Value_ck = std.fre_m_V[0]; + std.alarm_H_Value_ck = std.fre_h_V[0]; + std.defect_L_Value_ck = std.fre_l_D[0]; + std.defect_M_Value_ck = std.fre_m_D[0]; + std.defect_H_Value_ck = std.fre_h_D[0]; + } + else if (speed >= std.alarm_spd[ias - 1].alarmSpeed) + { + std.band_Fre_L1 = std.fre_l_S1[i_fre]; + std.band_Fre_L2 = std.fre_l_S2[i_fre]; + std.band_Fre_M1 = std.fre_m_S1[i_fre]; + std.band_Fre_M2 = std.fre_m_S2[i_fre]; + std.band_Fre_H1 = std.fre_h_S1[i_fre]; + std.band_Fre_H2 = std.fre_h_S2[i_fre]; + std.alarm_L_Value_ck = std.fre_l_V[i_fre]; + std.alarm_M_Value_ck = std.fre_m_V[i_fre]; + std.alarm_H_Value_ck = std.fre_h_V[i_fre]; + std.defect_L_Value_ck = std.fre_l_D[i_fre]; + std.defect_M_Value_ck = std.fre_m_D[i_fre]; + std.defect_H_Value_ck = std.fre_h_D[i_fre]; + } + else + { + std.band_Fre_L1 = std.fre_l_S1[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_L2 = std.fre_l_S2[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_M1 = std.fre_m_S1[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_M2 = std.fre_m_S2[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_H1 = std.fre_h_S1[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_H2 = std.fre_h_S2[Convert.ToInt32(speed - iIndex)]; + std.alarm_L_Value_ck = std.fre_l_V[Convert.ToInt32(speed - iIndex)]; + std.alarm_M_Value_ck = std.fre_m_V[Convert.ToInt32(speed - iIndex)]; + std.alarm_H_Value_ck = std.fre_h_V[Convert.ToInt32(speed - iIndex)]; + std.defect_L_Value_ck = std.fre_l_D[Convert.ToInt32(speed - iIndex)]; + std.defect_M_Value_ck = std.fre_m_D[Convert.ToInt32(speed - iIndex)]; + std.defect_H_Value_ck = std.fre_h_D[Convert.ToInt32(speed - iIndex)]; + } + } + + private double GetRMS(double[] temp) + { + double rms = 0; + int length = temp.Length; + for (int i = 0; i < length; i++) + { + rms += temp[i] * temp[i]; + } + rms = Math.Sqrt(rms / length); + return rms; + } + + //数据递归画图用 + private void ArrayMove(double[] longArray, double[] shortArray) + { + int longlength = longArray.Length; + int shortlength = shortArray.Length; + if (longlength > shortlength) + { + for (int i = 0; i < longlength - shortlength; i++) + { + longArray[i] = longArray[i + shortlength]; + } + for (int i = 0; i < shortlength; i++) + { + longArray[i + longlength - shortlength] = shortArray[i]; + } + } + } + + private void ListAdd(List tempList, double value) + { + tempList.Add(value); + if (tempList.Count > SysParam.Instance.energyPoints + 1) + { + tempList.RemoveAt(0); + } + } + + /// + /// 振动报警判断 45机架 + /// + private void AlarmJudge45(Stand std, int standNo) + { + bool alarmingFlag = false; + + bool flag = false; + + //低频报警信息 + if (std.energy_L >= std.alarm_L_Value_ck) + { + alarmingFlag = true; + + /*std.alarm_L_Times++; + if (std.alarm_L_Times == 1) + { + std.tempAlarmLowInfostart = Convert.ToInt32(mac.stripLength); + } + if (std.alarm_L_Times == std.alarm_L_Times_ck) + { + ringflag[standNo, 0] = true; + std.alarmLowInfo.Add(new Stand.AlarmInfo()); + std.indexLow++; + std.alarmLowInfo[std.indexLow - 1].startPos = std.tempAlarmLowInfostart; + std.alarmLowInfo[std.indexLow - 1].time = DateTime.Now; + } + if (std.alarm_L_Times >= std.alarm_L_Times_ck) + { + if (std.alarmLowInfo[std.indexLow - 1].value < std.energy_L) + { + std.alarmLowInfo[std.indexLow - 1].value = std.energy_L; + } + std.alarmLowInfo[std.indexLow - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + lowRing = true; + + flag = true; + }*/ + if (std.energy_L >= std.defect_L_Value_ck && std.speed > 300) + { + defectflag[standNo, 0] = true; + isDefect = true; + isCoilHasDefect = 1; + isDefectNow = true; + + flag = true; + } + } + else + { + //std.alarm_L_Times = 0; + } + + //中频报警位置 + if (std.energy_M >= std.alarm_M_Value_ck) + { + alarmingFlag = true; + + /*std.alarm_M_Times++; + if (std.alarm_M_Times == 1) + { + std.tempAlarmMidInfostart = Convert.ToInt32(mac.stripLength); + } + if (std.alarm_M_Times == std.alarm_M_Times_ck) + { + ringflag[standNo, 1] = true; + std.alarmMidInfo.Add(new Stand.AlarmInfo()); + std.indexMid++; + std.alarmMidInfo[std.indexMid - 1].startPos = std.tempAlarmMidInfostart; + std.alarmMidInfo[std.indexMid - 1].time = DateTime.Now; + + } + if (std.alarm_M_Times >= std.alarm_M_Times_ck) + { + if (std.alarmMidInfo[std.indexMid - 1].value < std.energy_M) + { + std.alarmMidInfo[std.indexMid - 1].value = std.energy_M; + } + std.alarmMidInfo[std.indexMid - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + midRing = true; + + flag = true; + + }*/ + if (std.energy_M >= std.defect_M_Value_ck && std.speed > 300) + { + defectflag[standNo, 1] = true; + isDefect = true; + isCoilHasDefect = 1; + isDefectNow = true; + + flag = true; + } + } + else + { + //std.alarm_M_Times = 0; + } + + //高频报警信息 + if (std.energy_H >= std.alarm_H_Value_ck) + { + alarmingFlag = true; + + /*std.alarm_H_Times++; + if (std.alarm_H_Times == 1) + { + std.tempAlarmHighInfostart = Convert.ToInt32(mac.stripLength); + } + if (std.alarm_H_Times == std.alarm_H_Times_ck) + { + ringflag[standNo, 2] = true; + std.alarmHighInfo.Add(new Stand.AlarmInfo()); + std.indexHigh++; + std.alarmHighInfo[std.indexHigh - 1].startPos = std.tempAlarmHighInfostart; + std.alarmHighInfo[std.indexHigh - 1].time = DateTime.Now; + + } + if (std.alarm_H_Times >= std.alarm_H_Times_ck) + { + if (std.alarmHighInfo[std.indexHigh - 1].value < std.energy_H) + { + std.alarmHighInfo[std.indexHigh - 1].value = std.energy_H; + } + std.alarmHighInfo[std.indexHigh - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + highRing = true; + + flag = true; + }*/ + if (std.energy_H >= std.defect_H_Value_ck && std.speed > 300) + { + defectflag[standNo, 2] = true; + isDefect = true; + isCoilHasDefect = 1; + isDefectNow = true; + + flag = true; + } + } + else + { + //std.alarm_H_Times = 0; + } + + if (isDefectNow) + { + if (std.energy_H > maxDefectEnergyValue) + { + maxDefectEnergyValue = std.energy_H; + } + if (std.energy_M > maxDefectEnergyValue) + { + maxDefectEnergyValue = std.energy_M; + } + if (std.energy_L > maxDefectEnergyValue) + { + maxDefectEnergyValue = std.energy_L; + } + } + + if (isDefectFirstPiont == false && isDefectNow == true) + { + isDefectFirstPiont = true; + } + + if (isDefectNow && isDefectFirstPiont == true && defectStartPos == -1) + { + defectStartPos = Convert.ToInt32(mac.stripLength); + if (!defectPos.ContainsKey(defectStartPos)) + { + defectPos.Add(defectStartPos, defectStartPos); + } + else + { + defectPos[defectStartPos] = defectStartPos; + } + isDefectFirstPiont = false; + } + + if (isDefectLast == true && isDefectNow == false && defectStartPos != -1) + { + defectPos[defectStartPos] = Convert.ToInt32(mac.stripLength); + defectMaxEnergy[defectStartPos] = maxDefectEnergyValue; + maxDefectEnergyValue = 0.0d; + defectStartPos = -1; + } + + + if (standNo == 0) + { + SysParam.Instance.alarming1 = alarmingFlag ? true : false; + } + if (standNo == 1) + { + SysParam.Instance.alarming2 = alarmingFlag ? true : false; + } + if (standNo == 2) + { + SysParam.Instance.alarming3 = alarmingFlag ? true : false; + } + if (standNo == 3) + { + SysParam.Instance.alarming4 = alarmingFlag ? true : false; + } + if (standNo == 4) + { + SysParam.Instance.alarming5 = alarmingFlag ? true : false; + } + if (standNo == 5) + { + SysParam.Instance.alarming6 = alarmingFlag ? true : false; + } + + + /*if (flag) + { + now = true; + + zdStateData[standNo * 8 + 1] = true; + zdStateData[standNo * 8 + 0] = false; + before = true; + } + else + { + now = false; + if (before == true) + { + zdStateData[standNo * 8 + 1] = false; + zdStateData[standNo * 8 + 0] = true; + if (i < 11) + { + before = true; + i++; + } + else + { + before = false; + i = 0; + } + } + else + { + zdStateData[standNo * 8 + 1] = false; + zdStateData[standNo * 8 + 0] = false; + before = false; + } + }*/ + } + + + private void AlarmJudge(Stand std, int standNo) + { + //低频报警信息 + if (std.energy_L >= std.alarm_L_Value_ck) + { + std.alarm_L_Times++; + if (std.alarm_L_Times == 1) + { + std.tempAlarmLowInfostart = Convert.ToInt32(mac.stripLength); + } + if (std.alarm_L_Times == std.alarm_L_Times_ck) + { + ringflag[standNo, 0] = true; + std.alarmLowInfo.Add(new Stand.AlarmInfo()); + std.indexLow++; + std.alarmLowInfo[std.indexLow - 1].startPos = std.tempAlarmLowInfostart; + std.alarmLowInfo[std.indexLow - 1].time = DateTime.Now; + } + if (std.alarm_L_Times >= std.alarm_L_Times_ck) + { + if (std.alarmLowInfo[std.indexLow - 1].value < std.energy_L) + { + std.alarmLowInfo[std.indexLow - 1].value = std.energy_L; + } + std.alarmLowInfo[std.indexLow - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + lowRing = true; + } + if (std.energy_L >= std.defect_L_Value_ck && std.speed > 300) + { + defectflag[standNo, 0] = true; + isDefect = true; + isCoilHasDefect = 1; + isDefectNow = true; + } + } + else + { + std.alarm_L_Times = 0; + } + + //中频报警位置 + if (std.energy_M >= std.alarm_M_Value_ck) + { + std.alarm_M_Times++; + if (std.alarm_M_Times == 1) + { + std.tempAlarmMidInfostart = Convert.ToInt32(mac.stripLength); + } + if (std.alarm_M_Times == std.alarm_M_Times_ck) + { + ringflag[standNo, 1] = true; + std.alarmMidInfo.Add(new Stand.AlarmInfo()); + std.indexMid++; + std.alarmMidInfo[std.indexMid - 1].startPos = std.tempAlarmMidInfostart; + std.alarmMidInfo[std.indexMid - 1].time = DateTime.Now; + + } + if (std.alarm_M_Times >= std.alarm_M_Times_ck) + { + if (std.alarmMidInfo[std.indexMid - 1].value < std.energy_M) + { + std.alarmMidInfo[std.indexMid - 1].value = std.energy_M; + } + std.alarmMidInfo[std.indexMid - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + midRing = true; + } + if (std.energy_M >= std.defect_M_Value_ck && std.speed > 300) + { + defectflag[standNo, 1] = true; + isDefect = true; + isCoilHasDefect = 1; + isDefectNow = true; + } + } + else + { + std.alarm_M_Times = 0; + } + + //高频报警信息 + if (std.energy_H >= std.alarm_H_Value_ck) + { + std.alarm_H_Times++; + if (std.alarm_H_Times == 1) + { + std.tempAlarmHighInfostart = Convert.ToInt32(mac.stripLength); + } + if (std.alarm_H_Times == std.alarm_H_Times_ck) + { + ringflag[standNo, 2] = true; + std.alarmHighInfo.Add(new Stand.AlarmInfo()); + std.indexHigh++; + std.alarmHighInfo[std.indexHigh - 1].startPos = std.tempAlarmHighInfostart; + std.alarmHighInfo[std.indexHigh - 1].time = DateTime.Now; + + } + if (std.alarm_H_Times >= std.alarm_H_Times_ck) + { + if (std.alarmHighInfo[std.indexHigh - 1].value < std.energy_H) + { + std.alarmHighInfo[std.indexHigh - 1].value = std.energy_H; + } + std.alarmHighInfo[std.indexHigh - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + highRing = true; + } + if (std.energy_H >= std.defect_H_Value_ck && std.speed > 300) + { + defectflag[standNo, 2] = true; + isDefect = true; + isCoilHasDefect = 1; + isDefectNow = true; + } + } + else + { + std.alarm_H_Times = 0; + } + + if (isDefectNow) + { + if (std.energy_H > maxDefectEnergyValue) + { + maxDefectEnergyValue = std.energy_H; + } + if (std.energy_M > maxDefectEnergyValue) + { + maxDefectEnergyValue = std.energy_M; + } + if (std.energy_L > maxDefectEnergyValue) + { + maxDefectEnergyValue = std.energy_L; + } + } + + if (isDefectFirstPiont == false && isDefectNow == true) + { + isDefectFirstPiont = true; + } + + if (isDefectNow && isDefectFirstPiont == true && defectStartPos == -1) + { + defectStartPos = Convert.ToInt32(mac.stripLength); + if (!defectPos.ContainsKey(defectStartPos)) + { + defectPos.Add(defectStartPos, defectStartPos); + } + else + { + defectPos[defectStartPos] = defectStartPos; + } + isDefectFirstPiont = false; + } + + if (isDefectLast == true && isDefectNow == false && defectStartPos != -1) + { + defectPos[defectStartPos] = Convert.ToInt32(mac.stripLength); + defectMaxEnergy[defectStartPos] = maxDefectEnergyValue; + maxDefectEnergyValue = 0.0d; + defectStartPos = -1; + } + + + if (standNo == 0) + { + SysParam.Instance.alarming1 = isAlarmingNow ? true : false; + } + if (standNo == 1) + { + SysParam.Instance.alarming2 = isAlarmingNow ? true : false; + } + if (standNo == 2) + { + SysParam.Instance.alarming3 = isAlarmingNow ? true : false; + } + if (standNo == 3) + { + SysParam.Instance.alarming4 = isAlarmingNow ? true : false; + } + if (standNo == 4) + { + SysParam.Instance.alarming5 = isAlarmingNow ? true : false; + } + + if (standNo == 5) + { + SysParam.Instance.alarming6 = isAlarmingNow ? true : false; + } + } + + private void UpdateAlarmInfo(Stand std, int stdNo) + { + if (std.indexLow > 0) + { + AlarmInfo2String(std.alarmLowInfo[std.indexLow - 1], stdNo, "低频"); + } + if (std.indexMid > 0) + { + AlarmInfo2String(std.alarmMidInfo[std.indexMid - 1], stdNo, "中频"); + } + if (std.indexHigh > 0) + { + AlarmInfo2String(std.alarmHighInfo[std.indexHigh - 1], stdNo, "高频"); + } + } + + private void AlarmInfo2String(Stand.AlarmInfo alarminfo, int standNo, string alarmType) + { + string temp = alarminfo.time.ToString("MM/dd HH:mm:ss") + " " + (standNo + 1) + "号机架" + alarmType + " 位置:" + alarminfo.startPos.ToString("00000") + "-" + alarminfo.endPos.ToString("00000") + "m 能量:" + alarminfo.value.ToString("0.000") + "g"; + int index = temp.IndexOf("-") - 15;//查重,从报警时间后至位置起始点 + if (alarmInfoNow.Count > 15) + { + for (int i = alarmInfoNow.Count - 15; i < alarmInfoNow.Count; i++) + { + if (alarmInfoNow[i].Substring(15, index) == temp.Substring(15, index)) + { + alarmInfoNow.RemoveAt(i); + } + } + } + else + { + for (int i = 0; i < alarmInfoNow.Count; i++) + { + if (alarmInfoNow[i].Substring(15, index) == temp.Substring(15, index)) + { + alarmInfoNow.RemoveAt(i); + } + } + } + alarmInfoNow.Add(temp); + + string tempMG = alarminfo.time.ToString("MM/dd HH:mm:ss") + "\r\n" + (standNo + 1) + "号机架" + alarmType + "\r\n位置:" + alarminfo.startPos.ToString("00000") + "-" + alarminfo.endPos.ToString("00000") + "m\r\n能量:" + alarminfo.value.ToString("0.000") + "g"; + int indexMG = temp.IndexOf("-") - 15;//查重,从报警时间后至位置起始点 + if (alarmInfoNowMG.Count > 15) + { + for (int i = alarmInfoNowMG.Count - 15; i < alarmInfoNowMG.Count; i++) + { + if (alarmInfoNowMG[i].Substring(15, index) == temp.Substring(15, index)) + { + alarmInfoNowMG.RemoveAt(i); + } + } + } + else + { + for (int i = 0; i < alarmInfoNowMG.Count; i++) + { + if (alarmInfoNowMG[i].Substring(15, index) == temp.Substring(15, index)) + { + alarmInfoNowMG.RemoveAt(i); + } + } + } + alarmInfoNowMG.Add(temp); + + alarmInfoNowChanged = true; + } + + public bool alarmInfoNowChanged { set; get; } + public bool alarmInfoLastChanged { set; get; } + private void stateRefresh() + { + if (alarmInfoNow.Count > 0) + { + alarmInfoLastChanged = true; + alarmInfoLast = alarmInfoNow.ToArray(); + alarmInfoNowChanged = true; + alarmInfoNow.Clear(); + } + + if (alarmInfoNowMG.Count > 0) + { + alarmInfoNowMG.Clear(); + } + + mac.startTime = DateTime.Now; + mac.lenCountStart = mac.lenCountNow; + //报警参数复位 + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + //报警次数清零 + mac.Stand[i].alarm_L_Times = 0; + mac.Stand[i].alarm_M_Times = 0; + mac.Stand[i].alarm_H_Times = 0; + } + } + + public void Stop() + { + Thread.Sleep(500);//等待0.5秒,以免数据未存储完毕 + if (dataHelper != null) + { + Dictionary tempDefectPos = new Dictionary(); + foreach (KeyValuePair item in defectPos) + { + tempDefectPos.Add(item.Key, item.Value); + } + + Dictionary tempDefectMaxEnergy = new Dictionary(); + foreach (KeyValuePair item in defectMaxEnergy) + { + tempDefectMaxEnergy.Add(item.Key, item.Value); + } + + //dataHelper.CloseFile(0, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy); + dataHelper.CloseFile(2, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy);//0为超时,1为正常剪切,2为主动关闭 + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录start + isCoilHasDefect = 0; + defectData.Clear(); + allDefectData.Clear(); + maxDefectEnergy.Clear(); + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录end + } + stateRefresh(); + + //zdState.Stop(); + } + } +} diff --git a/CIDExcuter/DataProcessCenter.cs.bak b/CIDExcuter/DataProcessCenter.cs.bak new file mode 100644 index 0000000..fd1c4c7 --- /dev/null +++ b/CIDExcuter/DataProcessCenter.cs.bak @@ -0,0 +1,782 @@ +using System; +using CRVM.Entity; +using System.Threading; +using System.Threading.Tasks; +using System.Runtime.InteropServices; +using ICService; +using System.Collections.Generic; +using CRVM.Utility; +using CRVM.Driver; + +namespace CRVM.CIDExcuter +{ + + public class OrginalCollectDataEventArgs : EventArgs { } + + public delegate void ComeNewDataHandle(OrginalCollectDataEventArgs e); + public class DataProcessCenter + { + public event ComeNewDataHandle DataChanged; + private Machine mac; + private IDataHelper dataHelper; + + private bool isAlarmingNow; + private bool isAlarmingLast; + private bool lowRing, midRing, highRing; + private bool isDefect; + private bool[,] ringflag = new bool[SysParam.Instance.SpeedChannelCount, 3];//报警范围内使用,记录报警范围内哪个机架哪个频段发生报警 + private bool[,] defectflag = new bool[SysParam.Instance.SpeedChannelCount, 3];//报警范围内使用,记录报警范围内哪个机架哪个频段发生报警 + private double[] alarm_MaxEnergy = new double[SysParam.Instance.SpeedChannelCount];//报警范围内使用,记录五个机架报警范围内产生的最大能量值 + private int[] alarm_Position = new int[SysParam.Instance.SpeedChannelCount]; + + + private AlarmRing alarmRing; + public List alarmInfoNow = new List(); + public List alarmInfoNowMG = new List(); + public string[] alarmInfoLast; + + private double[] lineSpdFactor = { 1.0, 1.0, 1.0, 1.0, 1.0 }; + + int isCoilHasDefect = 0; + private Dictionary defectData = new Dictionary();//记录当次的缺陷报警记录 + private Dictionary allDefectData = new Dictionary();//记录所有的缺陷报警信息 + private Dictionary maxDefectEnergy = new Dictionary();//发生缺陷时的最大能量值 + private double maxDefectEnergyValue = 0.0d;//记录最大能量值 + + private bool isDefectNow = false;//记录此次采集是否超越缺陷报警线 + private bool isDefectLast = false;//记录上次采集是否超越缺陷报警线 + private bool isDefectFirstPiont = false;//是否第一个点超越报警线 + private int defectStartPos = -1; + private Dictionary defectPos = new Dictionary();//记录所有的缺陷报警信息 + private Dictionary defectMaxEnergy = new Dictionary();//发生缺陷时的最大能量值 + + bool before = false; + bool now = false; + //private ZDSate zdState; + private bool[] zdStateData; + int i = 0; + + double coilenMax = 0.0d; + int nextCoilCounter = 0; + + + public DataProcessCenter(Machine mac) + { + this.mac = mac; + dataHelper = new IDataHelper(mac); + alarmRing = new AlarmRing(); + mac.startTime = DateTime.Now; + + //zdState = new ZDSate(); + //zdStateData = new bool[zdState.linesCount]; + } + + public void DataProcess() //数据处理 + { + //for (int i = 0; i < zdStateData.Length; i++) + //{ + // zdStateData[i] = false; + //} + + isAlarmingNow = false;//初始化报警状态 + isDefectNow = false; + lowRing = false; + midRing = false; + highRing = false; + + for (int i = 0; i < SysParam.Instance.channelCount; i++)//全部通道 + { + //消除直流偏置 + DCBias(mac.Stand[i].vib); + //根据当前速度设定各机架报警系数 + GetAlarmParam(mac.Stand[i].speed, mac.Stand[i]); + //分频滤波 + mac.Stand[i].vibLow = SysParam.Instance.filterAlgor(mac.Stand[i].vib, mac.Stand[i].band_Fre_L1, mac.Stand[i].band_Fre_L2, SysParam.Instance.samplePoint, 100, SysParam.Instance.sampleFre); + mac.Stand[i].vibMid = SysParam.Instance.filterAlgor(mac.Stand[i].vib, mac.Stand[i].band_Fre_M1, mac.Stand[i].band_Fre_M2, SysParam.Instance.samplePoint, 100, SysParam.Instance.sampleFre); + mac.Stand[i].vibHig = SysParam.Instance.filterAlgor(mac.Stand[i].vib, mac.Stand[i].band_Fre_H1, mac.Stand[i].band_Fre_H2, SysParam.Instance.samplePoint, 100, SysParam.Instance.sampleFre); + //各通道、各频段能量值计算 + mac.Stand[i].energy_All = GetRMS(mac.Stand[i].vib); + mac.Stand[i].energy_L = GetRMS(mac.Stand[i].vibLow); + mac.Stand[i].energy_M = GetRMS(mac.Stand[i].vibMid); + mac.Stand[i].energy_H = GetRMS(mac.Stand[i].vibHig); + } + + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)//仅针对有速度的通道进行报警判断 + { + //轧机振动报警判断 + AlarmJudge(mac.Stand[i], i); + } + alarmingProcess();//20240312 + DevelopLog.DeBug.WriteLogFile("alarming", SysParam.Instance.alarming1.ToString() + "|" + SysParam.Instance.alarming2.ToString() + "|" + + SysParam.Instance.alarming3.ToString() + "|" + SysParam.Instance.alarming4.ToString() + "|" + SysParam.Instance.alarming5.ToString() + "|" + + SysParam.Instance.alarmingType.ToString()); + + //向L1 tdc发送轧机振动状态信息 + //zdState.WriteData(zdStateData); + + //播放报警铃声 + //alarmRing.Ring(lowRing, midRing, highRing); + //如报警结束,播放语音报告报警机架 + if (isAlarmingLast && !isAlarmingNow) + { + bool[,] tempAlarmFlag = (bool[,])ringflag.Clone(); + SysParam.Instance.ringflag = (bool[,])ringflag.Clone(); + + //ringflag.Initialize(); + ringflag = new bool[SysParam.Instance.SpeedChannelCount, 3]; + if (isDefect) + { + isDefect = false; + bool[,] tempDefectFlag = (bool[,])defectflag.Clone(); + defectflag.Initialize(); + alarmRing.DefectVoice(tempDefectFlag, tempAlarmFlag); + } + else + { + alarmRing.AlarmVoice(tempAlarmFlag); + } + } + + nextCoilCounter++; + if (coilenMax <= mac.stripLength && nextCoilCounter > 20) + { + coilenMax = mac.stripLength; + } + + //存储数据 + if (!SysParam.Instance.fileCreated) + { + dataHelper.CreateFileHead(); + } + dataHelper.writeNew(SysParam.Instance.samplePoint); + //更新报警信息 + if (isAlarmingNow) + { + for (int k = 0; k < SysParam.Instance.SpeedChannelCount; k++) + { + UpdateAlarmInfo(mac.Stand[k], k); ;//更新报警信息 + } + } + //来了剪切信号 + if (mac.cutted) + { + Dictionary tempDefectPos = new Dictionary(); + foreach (KeyValuePair item in defectPos) + { + tempDefectPos.Add(item.Key, item.Value); + } + + Dictionary tempDefectMaxEnergy = new Dictionary(); + foreach (KeyValuePair item in defectMaxEnergy) + { + tempDefectMaxEnergy.Add(item.Key, item.Value); + } + int dislen = Convert.ToInt32(coilenMax); + + //dataHelper.CloseFile(1, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy); + dataHelper.CloseFile(1, alarmInfoNow, Convert.ToInt32(dislen), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy); + + //dataHelper.CloseFile(1, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, allDefectData, maxDefectEnergy); + stateRefresh(); + + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录start + isCoilHasDefect = 0; + defectData.Clear(); + allDefectData.Clear(); + maxDefectEnergy.Clear(); + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录end + + isDefectNow = false;//记录此次采集是否超越缺陷报警线 + isDefectLast = false;//记录上次采集是否超越缺陷报警线 + isDefectFirstPiont = false;//是否第一个点超越报警线 + defectStartPos = -1; + defectPos.Clear();//记录所有的缺陷报警信息 + defectMaxEnergy.Clear();//发生缺陷时的最大能量值 + maxDefectEnergyValue = 0.0d; + + coilenMax = 0.0d; + nextCoilCounter = 0; + mac.stripLength = 0; + } + //累计采集时间超过半小时,文件强制关闭 + if ((DateTime.Now - mac.startTime).TotalMinutes > 30) + { + mac.cutted = true; + Dictionary tempDefectPos = new Dictionary(); + foreach (KeyValuePair item in defectPos) + { + tempDefectPos.Add(item.Key, item.Value); + } + + Dictionary tempDefectMaxEnergy = new Dictionary(); + foreach (KeyValuePair item in defectMaxEnergy) + { + tempDefectMaxEnergy.Add(item.Key, item.Value); + } + + dataHelper.CloseFile(0, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy); + stateRefresh(); + + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录start + isCoilHasDefect = 0; + defectData.Clear(); + allDefectData.Clear(); + maxDefectEnergy.Clear(); + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录end + + isDefectNow = false;//记录此次采集是否超越缺陷报警线 + isDefectLast = false;//记录上次采集是否超越缺陷报警线 + isDefectFirstPiont = false;//是否第一个点超越报警线 + defectStartPos = -1; + defectPos.Clear();//记录所有的缺陷报警信息 + defectMaxEnergy.Clear();//发生缺陷时的最大能量值 + maxDefectEnergyValue = 0.0d; + } + //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss fff") + " 8 FileStore"); + double temptime = DateTime.Now.ToOADate(); + //更新绘图所需数据 + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + ArrayMove(mac.Stand[i].tVib, mac.Stand[i].vib); + + + mac.Stand[i].list_Energy_All.Add(mac.Stand[i].energy_All); + mac.Stand[i].list_Energy_L.Add(mac.Stand[i].energy_L); + mac.Stand[i].list_Energy_M.Add(mac.Stand[i].energy_M); + mac.Stand[i].list_Energy_H.Add(mac.Stand[i].energy_H); + + mac.Stand[i].list_Alarm_L.Add(mac.Stand[i].alarm_L_Value_ck); + mac.Stand[i].list_Alarm_M.Add(mac.Stand[i].alarm_M_Value_ck); + mac.Stand[i].list_Alarm_H.Add(mac.Stand[i].alarm_H_Value_ck); + + mac.Stand[i].list_Defect_L.Add(mac.Stand[i].defect_L_Value_ck); + mac.Stand[i].list_Defect_M.Add(mac.Stand[i].defect_M_Value_ck); + mac.Stand[i].list_Defect_H.Add(mac.Stand[i].defect_H_Value_ck); + + mac.Stand[i].list_Energy_Speed.Add(mac.Stand[i].speed); + } + mac.xAxisEnergy.Add(temptime); + mac.distance_Running.Add(mac.stripLength); + if (mac.cutted) + { + mac.list_CutTime.Add(temptime); + } + if (mac.list_CutTime.Count > 0 && mac.list_CutTime[0] < mac.xAxisEnergy.Head) + { + mac.list_CutTime.RemoveAt(0); + } + + //剪切信号复位 + mac.cutted = false; + //帧数据结束 + isAlarmingLast = isAlarmingNow; + SysParam.Instance.isDatahandlered = true;//此次采集的数据全部处理结束标记 + isDefectLast = isDefectNow; + + + } + + private void alarmingProcess() + { + if (SysParam.Instance.alarming1 || SysParam.Instance.alarming2 || SysParam.Instance.alarming3 || SysParam.Instance.alarming4 || SysParam.Instance.alarming5) + { + if (SysParam.Instance.alarming5 && SysParam.Instance.alarming4) + { + SysParam.Instance.alarmingType = 2; + } + else + { + SysParam.Instance.alarmingType = 1; + } + } + else + { + SysParam.Instance.alarmingType = 0; + } + } + + private void DCBias(double[] temp)////数组先求平均然后数组中的每个值减去这个平均值 + { + double tempValue = 0; + int length = temp.Length; + for (int i = 0; i < length; i++) + { + tempValue += temp[i]; + } + tempValue = tempValue / length; + for (int i = 0; i < length; i++) + { + temp[i] -= tempValue; + } + } + + //查表,该机架在当前速度下的报警参数 + private void GetAlarmParam(double speed, Stand std) + { + int ias = std.alarm_spd.Length; + int i_fre = std.fre_l_S1.Length - 1; + int iIndex = std.alarm_spd[0].alarmSpeed; + if (speed <= std.alarm_spd[0].alarmSpeed) + { + std.band_Fre_L1 = std.fre_l_S1[0]; + std.band_Fre_L2 = std.fre_l_S2[0]; + std.band_Fre_M1 = std.fre_m_S1[0]; + std.band_Fre_M2 = std.fre_m_S2[0]; + std.band_Fre_H1 = std.fre_h_S1[0]; + std.band_Fre_H2 = std.fre_h_S2[0]; + std.alarm_L_Value_ck = std.fre_l_V[0]; + std.alarm_M_Value_ck = std.fre_m_V[0]; + std.alarm_H_Value_ck = std.fre_h_V[0]; + std.defect_L_Value_ck = std.fre_l_D[0]; + std.defect_M_Value_ck = std.fre_m_D[0]; + std.defect_H_Value_ck = std.fre_h_D[0]; + } + else if (speed >= std.alarm_spd[ias - 1].alarmSpeed) + { + std.band_Fre_L1 = std.fre_l_S1[i_fre]; + std.band_Fre_L2 = std.fre_l_S2[i_fre]; + std.band_Fre_M1 = std.fre_m_S1[i_fre]; + std.band_Fre_M2 = std.fre_m_S2[i_fre]; + std.band_Fre_H1 = std.fre_h_S1[i_fre]; + std.band_Fre_H2 = std.fre_h_S2[i_fre]; + std.alarm_L_Value_ck = std.fre_l_V[i_fre]; + std.alarm_M_Value_ck = std.fre_m_V[i_fre]; + std.alarm_H_Value_ck = std.fre_h_V[i_fre]; + std.defect_L_Value_ck = std.fre_l_D[i_fre]; + std.defect_M_Value_ck = std.fre_m_D[i_fre]; + std.defect_H_Value_ck = std.fre_h_D[i_fre]; + } + else + { + std.band_Fre_L1 = std.fre_l_S1[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_L2 = std.fre_l_S2[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_M1 = std.fre_m_S1[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_M2 = std.fre_m_S2[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_H1 = std.fre_h_S1[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_H2 = std.fre_h_S2[Convert.ToInt32(speed - iIndex)]; + std.alarm_L_Value_ck = std.fre_l_V[Convert.ToInt32(speed - iIndex)]; + std.alarm_M_Value_ck = std.fre_m_V[Convert.ToInt32(speed - iIndex)]; + std.alarm_H_Value_ck = std.fre_h_V[Convert.ToInt32(speed - iIndex)]; + std.defect_L_Value_ck = std.fre_l_D[Convert.ToInt32(speed - iIndex)]; + std.defect_M_Value_ck = std.fre_m_D[Convert.ToInt32(speed - iIndex)]; + std.defect_H_Value_ck = std.fre_h_D[Convert.ToInt32(speed - iIndex)]; + } + } + + private double GetRMS(double[] temp) + { + double rms = 0; + int length = temp.Length; + for (int i = 0; i < length; i++) + { + rms += temp[i] * temp[i]; + } + rms = Math.Sqrt(rms / length); + return rms; + } + + //数据递归画图用 + private void ArrayMove(double[] longArray, double[] shortArray) + { + int longlength = longArray.Length; + int shortlength = shortArray.Length; + if (longlength > shortlength) + { + for (int i = 0; i < longlength - shortlength; i++) + { + longArray[i] = longArray[i + shortlength]; + } + for (int i = 0; i < shortlength; i++) + { + longArray[i + longlength - shortlength] = shortArray[i]; + } + } + } + + private void ListAdd(List tempList, double value) + { + tempList.Add(value); + if (tempList.Count > SysParam.Instance.energyPoints + 1) + { + tempList.RemoveAt(0); + } + } + + /// + /// 振动报警判断 + /// + private void AlarmJudge(Stand std, int standNo) + { + bool alarmingFlag = false; + + bool flag = false; + + //低频报警信息 + if (std.energy_L >= std.alarm_L_Value_ck) + { + alarmingFlag = true; + + std.alarm_L_Times++; + if (std.alarm_L_Times == 1) + { + std.tempAlarmLowInfostart = Convert.ToInt32(mac.stripLength); + } + if (std.alarm_L_Times == std.alarm_L_Times_ck) + { + ringflag[standNo, 0] = true; + std.alarmLowInfo.Add(new Stand.AlarmInfo()); + std.indexLow++; + std.alarmLowInfo[std.indexLow - 1].startPos = std.tempAlarmLowInfostart; + std.alarmLowInfo[std.indexLow - 1].time = DateTime.Now; + } + if (std.alarm_L_Times >= std.alarm_L_Times_ck) + { + if (std.alarmLowInfo[std.indexLow - 1].value < std.energy_L) + { + std.alarmLowInfo[std.indexLow - 1].value = std.energy_L; + } + std.alarmLowInfo[std.indexLow - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + lowRing = true; + + flag = true; + } + if (std.energy_L >= std.defect_L_Value_ck && std.speed > 300) + { + defectflag[standNo, 0] = true; + isDefect = true; + isCoilHasDefect = 1; + isDefectNow = true; + + flag = true; + } + } + else + { + std.alarm_L_Times = 0; + } + + //中频报警位置 + if (std.energy_M >= std.alarm_M_Value_ck) + { + alarmingFlag = true; + + std.alarm_M_Times++; + if (std.alarm_M_Times == 1) + { + std.tempAlarmMidInfostart = Convert.ToInt32(mac.stripLength); + } + if (std.alarm_M_Times == std.alarm_M_Times_ck) + { + ringflag[standNo, 1] = true; + std.alarmMidInfo.Add(new Stand.AlarmInfo()); + std.indexMid++; + std.alarmMidInfo[std.indexMid - 1].startPos = std.tempAlarmMidInfostart; + std.alarmMidInfo[std.indexMid - 1].time = DateTime.Now; + + } + if (std.alarm_M_Times >= std.alarm_M_Times_ck) + { + if (std.alarmMidInfo[std.indexMid - 1].value < std.energy_M) + { + std.alarmMidInfo[std.indexMid - 1].value = std.energy_M; + } + std.alarmMidInfo[std.indexMid - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + midRing = true; + + flag = true; + + } + if (std.energy_M >= std.defect_M_Value_ck && std.speed > 300) + { + defectflag[standNo, 1] = true; + isDefect = true; + isCoilHasDefect = 1; + isDefectNow = true; + + flag = true; + } + } + else + { + std.alarm_M_Times = 0; + } + + //高频报警信息 + if (std.energy_H >= std.alarm_H_Value_ck) + { + alarmingFlag = true; + + std.alarm_H_Times++; + if (std.alarm_H_Times == 1) + { + std.tempAlarmHighInfostart = Convert.ToInt32(mac.stripLength); + } + if (std.alarm_H_Times == std.alarm_H_Times_ck) + { + ringflag[standNo, 2] = true; + std.alarmHighInfo.Add(new Stand.AlarmInfo()); + std.indexHigh++; + std.alarmHighInfo[std.indexHigh - 1].startPos = std.tempAlarmHighInfostart; + std.alarmHighInfo[std.indexHigh - 1].time = DateTime.Now; + + } + if (std.alarm_H_Times >= std.alarm_H_Times_ck) + { + if (std.alarmHighInfo[std.indexHigh - 1].value < std.energy_H) + { + std.alarmHighInfo[std.indexHigh - 1].value = std.energy_H; + } + std.alarmHighInfo[std.indexHigh - 1].endPos = Convert.ToInt32(mac.stripLength); + isAlarmingNow = true; + highRing = true; + + flag = true; + } + if (std.energy_H >= std.defect_H_Value_ck && std.speed > 300) + { + defectflag[standNo, 2] = true; + isDefect = true; + isCoilHasDefect = 1; + isDefectNow = true; + + flag = true; + } + } + else + { + std.alarm_H_Times = 0; + } + + if (isDefectNow) + { + if (std.energy_H > maxDefectEnergyValue) + { + maxDefectEnergyValue = std.energy_H; + } + if (std.energy_M > maxDefectEnergyValue) + { + maxDefectEnergyValue = std.energy_M; + } + if (std.energy_L > maxDefectEnergyValue) + { + maxDefectEnergyValue = std.energy_L; + } + } + + if (isDefectFirstPiont == false && isDefectNow == true) + { + isDefectFirstPiont = true; + } + + if (isDefectNow && isDefectFirstPiont == true && defectStartPos == -1) + { + defectStartPos = Convert.ToInt32(mac.stripLength); + if (!defectPos.ContainsKey(defectStartPos)) + { + defectPos.Add(defectStartPos, defectStartPos); + } + else + { + defectPos[defectStartPos] = defectStartPos; + } + isDefectFirstPiont = false; + } + + if (isDefectLast == true && isDefectNow == false && defectStartPos != -1) + { + defectPos[defectStartPos] = Convert.ToInt32(mac.stripLength); + defectMaxEnergy[defectStartPos] = maxDefectEnergyValue; + maxDefectEnergyValue = 0.0d; + defectStartPos = -1; + } + + + if (standNo == 0) + { + SysParam.Instance.alarming1 = alarmingFlag ? true : false; + } + if (standNo == 1) + { + SysParam.Instance.alarming2 = alarmingFlag ? true : false; + } + if (standNo == 2) + { + SysParam.Instance.alarming3 = alarmingFlag ? true : false; + } + if (standNo == 3) + { + SysParam.Instance.alarming4 = alarmingFlag ? true : false; + } + if (standNo == 4) + { + SysParam.Instance.alarming5 = alarmingFlag ? true : false; + } + + + /*if (flag) + { + now = true; + + zdStateData[standNo * 8 + 1] = true; + zdStateData[standNo * 8 + 0] = false; + before = true; + } + else + { + now = false; + if (before == true) + { + zdStateData[standNo * 8 + 1] = false; + zdStateData[standNo * 8 + 0] = true; + if (i < 11) + { + before = true; + i++; + } + else + { + before = false; + i = 0; + } + } + else + { + zdStateData[standNo * 8 + 1] = false; + zdStateData[standNo * 8 + 0] = false; + before = false; + } + }*/ + } + + private void UpdateAlarmInfo(Stand std, int stdNo) + { + if (std.indexLow > 0) + { + AlarmInfo2String(std.alarmLowInfo[std.indexLow - 1], stdNo, "低频"); + } + if (std.indexMid > 0) + { + AlarmInfo2String(std.alarmMidInfo[std.indexMid - 1], stdNo, "中频"); + } + if (std.indexHigh > 0) + { + AlarmInfo2String(std.alarmHighInfo[std.indexHigh - 1], stdNo, "高频"); + } + } + + private void AlarmInfo2String(Stand.AlarmInfo alarminfo, int standNo, string alarmType) + { + string temp = alarminfo.time.ToString("MM/dd HH:mm:ss") + " " + (standNo + 1) + "号机架" + alarmType + " 位置:" + alarminfo.startPos.ToString("00000") + "-" + alarminfo.endPos.ToString("00000") + "m 能量:" + alarminfo.value.ToString("0.000") + "g"; + int index = temp.IndexOf("-") - 15;//查重,从报警时间后至位置起始点 + if (alarmInfoNow.Count > 15) + { + for (int i = alarmInfoNow.Count - 15; i < alarmInfoNow.Count; i++) + { + if (alarmInfoNow[i].Substring(15, index) == temp.Substring(15, index)) + { + alarmInfoNow.RemoveAt(i); + } + } + } + else + { + for (int i = 0; i < alarmInfoNow.Count; i++) + { + if (alarmInfoNow[i].Substring(15, index) == temp.Substring(15, index)) + { + alarmInfoNow.RemoveAt(i); + } + } + } + alarmInfoNow.Add(temp); + + string tempMG = alarminfo.time.ToString("MM/dd HH:mm:ss") + "\r\n" + (standNo + 1) + "号机架" + alarmType + "\r\n位置:" + alarminfo.startPos.ToString("00000") + "-" + alarminfo.endPos.ToString("00000") + "m\r\n能量:" + alarminfo.value.ToString("0.000") + "g"; + int indexMG = temp.IndexOf("-") - 15;//查重,从报警时间后至位置起始点 + if (alarmInfoNowMG.Count > 15) + { + for (int i = alarmInfoNowMG.Count - 15; i < alarmInfoNowMG.Count; i++) + { + if (alarmInfoNowMG[i].Substring(15, index) == temp.Substring(15, index)) + { + alarmInfoNowMG.RemoveAt(i); + } + } + } + else + { + for (int i = 0; i < alarmInfoNowMG.Count; i++) + { + if (alarmInfoNowMG[i].Substring(15, index) == temp.Substring(15, index)) + { + alarmInfoNowMG.RemoveAt(i); + } + } + } + alarmInfoNowMG.Add(temp); + + alarmInfoNowChanged = true; + } + + public bool alarmInfoNowChanged { set; get; } + public bool alarmInfoLastChanged { set; get; } + private void stateRefresh() + { + if (alarmInfoNow.Count > 0) + { + alarmInfoLastChanged = true; + alarmInfoLast = alarmInfoNow.ToArray(); + alarmInfoNowChanged = true; + alarmInfoNow.Clear(); + } + + if (alarmInfoNowMG.Count > 0) + { + alarmInfoNowMG.Clear(); + } + + mac.startTime = DateTime.Now; + mac.lenCountStart = mac.lenCountNow; + //报警参数复位 + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + //报警次数清零 + mac.Stand[i].alarm_L_Times = 0; + mac.Stand[i].alarm_M_Times = 0; + mac.Stand[i].alarm_H_Times = 0; + } + } + + public void Stop() + { + Thread.Sleep(500);//等待0.5秒,以免数据未存储完毕 + if (dataHelper != null) + { + Dictionary tempDefectPos = new Dictionary(); + foreach (KeyValuePair item in defectPos) + { + tempDefectPos.Add(item.Key, item.Value); + } + + Dictionary tempDefectMaxEnergy = new Dictionary(); + foreach (KeyValuePair item in defectMaxEnergy) + { + tempDefectMaxEnergy.Add(item.Key, item.Value); + } + + //dataHelper.CloseFile(0, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy); + dataHelper.CloseFile(2, alarmInfoNow, Convert.ToInt32(mac.stripLength), isCoilHasDefect, tempDefectPos, tempDefectMaxEnergy);//0为超时,1为正常剪切,2为主动关闭 + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录start + isCoilHasDefect = 0; + defectData.Clear(); + allDefectData.Clear(); + maxDefectEnergy.Clear(); + //剪切信号时,清除当前缺陷记录和上一卷所有的缺陷记录end + } + stateRefresh(); + + //zdState.Stop(); + } + } +} diff --git a/CIDExcuter/DbHelper.cs b/CIDExcuter/DbHelper.cs new file mode 100644 index 0000000..7ad4866 --- /dev/null +++ b/CIDExcuter/DbHelper.cs @@ -0,0 +1,1338 @@ +using System; +using System.Collections.Generic; +using System.Text; +using CRVM.Utility; +using System.Xml; +using System.IO; +using System.Data; +using CRVM.Entity; +using System.Linq; + +namespace CRVM.CIDExcuter +{ + public class DbHelper + { + private string _path; + private LogicConnect DBlogicConn; + private LogicConnect l2Connect; + private LogicConnect localConnect; + private EDBItem soudb; + private EDBItem desdb; + private int freq = 5;//频率(秒) + private static DbHelper _instance = null; + + private string coldid_before = ""; + + public EDBItem SouDB + { + get { return soudb; } + set { soudb = value; } + } + + public EDBItem DesDB + { + get { return desdb; } + set { desdb = value; } + } + public int Freq + { + get { return freq; } + set { freq = value; } + } + + public DbHelper(string path) + { + _path = path; + } + + public static DbHelper GetInstance(string path) + { + if (_instance == null) + { + _instance = new DbHelper(path); + _instance.DesDB = new EDBItem(); + _instance.SouDB = new EDBItem(); + } + return _instance; + } + public bool isStart { get; set; } + + public bool LoadConfigData(DbHelper dbhelper) + { + XmlDocument xmldoc = new XmlDocument(); + try + { + string ipath = _path + "\\dbaccess.conf"; + if (File.Exists(ipath)) + { + xmldoc.Load(ipath); + string systemName = ""; + if (xmldoc.DocumentElement.Attributes.Count > 0) + systemName = xmldoc.DocumentElement.Attributes[0].InnerText; + XmlNodeList nodes = xmldoc.SelectNodes("Schm/DB"); + int count = nodes.Count; + string DbName = nodes[0].Attributes[0].InnerText; + soudb.DataType = nodes[0].ChildNodes[0].Attributes[0].InnerText; + soudb.Database = nodes[0].ChildNodes[0].Attributes[1].InnerText; + soudb.Userid = nodes[0].ChildNodes[0].Attributes[2].InnerText; + soudb.Password = nodes[0].ChildNodes[0].Attributes[3].InnerText; + soudb.Ipaddress = nodes[0].ChildNodes[0].Attributes[4].InnerText; + string DestDbName = nodes[1].Attributes[0].InnerText; + desdb.DataType = nodes[1].ChildNodes[0].Attributes[0].InnerText; + desdb.Database = nodes[1].ChildNodes[0].Attributes[1].InnerText; + desdb.Userid = nodes[1].ChildNodes[0].Attributes[2].InnerText; + desdb.Password = nodes[1].ChildNodes[0].Attributes[3].InnerText; + desdb.Ipaddress = nodes[1].ChildNodes[0].Attributes[4].InnerText; + return true; + } + else + { + return false; + } + } + catch (XmlException) + { + return false; + } + } + + /// + /// 重设L2数据库操作对象 + /// + /// + public bool SetL2Connect() + { + try + { + l2Connect = new LogicConnect(soudb, soudb.Userid); + return true; + } + catch (Exception) + { + return false; + } + } + + /// + /// 重设本地数据库操作对象 + /// + /// + public bool SetLocalConnect() + { + try + { + localConnect = new LogicConnect(desdb, desdb.Userid); + return true; + } + catch (Exception) + { + return false; + } + } + /// + /// 剪切时向t_coil_info_client表中插入一条新纪录 + /// + /// + /// + /// + /// + /// + public void AddNewCoilInfo(int alarmFlag, int endFlag, string OrigPath, string EnergyPath, string disLength, int defectflag) + { + try + { + //将本次记录之前的当前卷标记全部置为0,保证当前卷标记唯一性 + string update_sql = "update t_coil_info_client set nowflag = 0 where nowflag = 1"; + localConnect.DataBase(update_sql); + + //插入新纪录,并将当前卷标记置为1 + string insert_sql = string.Format("insert into t_coil_info_client (createdate,endflag,origPath,energyPath,alarmflag,nowflag,defectflag,disLength) values('{0}',{1},'{2}','{3}',{4},1,{5},{6})", + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), endFlag, OrigPath, EnergyPath, alarmFlag, defectflag, disLength); + localConnect.DataBase(insert_sql); + + DevelopLog.DeBug.WriteLogFile("AddNewCoilInfo", insert_sql.ToString()); + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("AddNewCoilInfo", ex.ToString()); + DevelopLog.DeBug.WriteLogFile("AddNewCoilInfo", String.Format("|OrigPath:{0},EnergyPath:{1}|" + ex.ToString(), OrigPath, EnergyPath)); + } + } + + /// + /// 从L2数据库获取钢卷信息,补充到本地t_coil_info_client表,并将冷卷号更新到t_alarm_info_client表中 + /// 梅钢项目不使用 + /// + public void UpdateLocalCoilInfo() + { + try + { + //获取L2钢卷信息表中最新的一条记录 + string sql_l2 = "select excoilid,entcoilid,length,innerdiam,outdiam,alloycode,extthick,extwidth,hentry from app.fv_vibration_proddata where rownum = 1"; + DataTable l2data = l2Connect.DataBase(sql_l2); + + if (l2data != null) + { + if (l2data.Rows.Count != 0) + { + //若本次从L2获取的最新第一条记录的卷号与上次记录的卷号一致,则表示L2新卷号还没有生成 + if (l2data.Rows[0]["excoilid"].ToString().Trim() == coldid_before) + { + return; + } + + //根据L2信息更新本地t_coil_info_client表中热卷号、冷卷号、钢种牌号、宽度、入口厚度、出口厚度、钢种等级信息 + string coilinfo_update_sql = string.Format("update t_coil_info_client set hotcoilid='{0}',coldcoilid='{1}',alloycode='{2}',width={3},entrythick={4},exitthick={5} where nowflag = 1 and endflag = 1", + l2data.Rows[0]["entcoilid"], l2data.Rows[0]["excoilid"], l2data.Rows[0]["alloycode"], Convert.ToDouble(l2data.Rows[0]["extwidth"]), Convert.ToDouble(l2data.Rows[0]["hentry"]), Convert.ToDouble(l2data.Rows[0]["extthick"])); + localConnect.DataBase(coilinfo_update_sql); + + //更新t_alarm_info_client中的冷卷号信息 + string alarm_update_sql = string.Format("update t_alarm_info_client set coldcoilid= '{0}' where nowflag= 1", l2data.Rows[0]["excoilid"]); + localConnect.DataBase(alarm_update_sql); + coldid_before = l2data.Rows[0]["excoilid"].ToString().Trim();//记录上一卷的冷卷号 + + //更新缺陷表中的钢卷号 + updateLocalDefectCoilNo(l2data.Rows[0]["excoilid"].ToString().Trim()); + } + } + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("UpdateLocalCoilInfo", ex.ToString()); + throw ex; + } + } + + /// + /// 保存数据库配置 + /// + /// + public bool SaveConfigData() + { + StreamWriter write = new StreamWriter(_path + "\\dbaccess.conf", false, Encoding.GetEncoding("gb2312")); + StringBuilder str = new StringBuilder(); + str = str.AppendLine(" "); + str = str.AppendLine(""); + str = str.AppendLine(" "); + if (soudb != null) + { + str = str.AppendLine(" "); + } + str = str.AppendLine(" "); + str = str.AppendLine(" "); + if (desdb != null) + { + str = str.AppendLine(" "); + } + str = str.AppendLine(" "); + str = str.AppendLine(""); + write.WriteLine(str.ToString()); + write.Close(); + return true; + } + + /// + /// 测试数据库是否连接成功 + /// + /// + /// + public bool IsConnected(EDBItem item) + { + DBlogicConn = new LogicConnect(item, item.Userid); + DataTable dt = new DataTable(); + if (item.DataType == "oracle") + { + try + { + dt = DBlogicConn.DataBase("select * from all_tables"); + return true; + } + catch (Exception) + { + return false; + } + } + else if (item.DataType == "postgres") + { + try + { + dt = DBlogicConn.DataBase("select * from pg_am"); + return true; + } + catch (Exception) + { + return false; + } + } + else if (item.DataType == "db2") + { + try + { + dt = DBlogicConn.DataBase("select tabname from syscat.tables where tabschema = current schema"); + return true; + } + catch (Exception) + { + return false; + } + } + return false; + } + + /// + /// 当前文件结束后在t_alarm_info_client表中插入本文件对应的报警信息 + /// + /// + /// + /// + /// + /// + /// + public void InsertAlarmInfo(int[] start, int[] end, int[] standNo, int[] alarmType, double[] energy) + { + try + { + //将t_alarm_info_client表中当前卷标志全部置为0 + string update_sql = "update t_alarm_info_client set nowflag = 0 where nowflag = 1"; + localConnect.DataBase(update_sql); + + //插入新纪录,并将新纪录的当前卷标志置为1 + DateTime nowtime = DateTime.Now; + for (int i = 0; i < start.Length; i++) + { + string time = nowtime.AddMilliseconds(-i).ToString("yyyy-MM-dd HH:mm:ss.fff"); + string insert_sql = string.Format("insert into t_alarm_info_client (createdate,startpos,endpos,standno,alarmtype,energy,nowflag) values('{0}',{1},{2},{3},{4},{5},1)", + time, start[i], end[i], standNo[i] + 1, alarmType[i], energy[i]); + localConnect.DataBase(insert_sql); + } + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("InsertAlarmInfo", ex.ToString()); + } + } + /// + /// + /// + /// + /// + public void RollDataInfo(Machine mac, DataTable rolldata) + { + if (mac == null) + { + return; + } + + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + mac.Stand[i].rollDiameterBL = 10000.0; + mac.Stand[i].rollDiameterBU = 10000.0; + mac.Stand[i].rollDiameterML = 10000.0; + mac.Stand[i].rollDiameterMU = 10000.0; + mac.Stand[i].rollDiameterWL = 10000.0; + mac.Stand[i].rollDiameterWU = 10000.0; + } + try + { + if (rolldata != null) + { + if (rolldata.Rows.Count == 1) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + + mac.Stand[i].rollDiameterWU = Convert.ToDouble(rolldata.Rows[0][i * 6 + 0]); + mac.Stand[i].rollDiameterWL = Convert.ToDouble(rolldata.Rows[0][i * 6 + 1]); + //中间辊 c102机组轧机无中间辊 + mac.Stand[i].rollDiameterMU = Convert.ToDouble(rolldata.Rows[0][i * 6 + 2]); + mac.Stand[i].rollDiameterML = Convert.ToDouble(rolldata.Rows[0][i * 6 + 3]); + mac.Stand[i].rollDiameterBU = Convert.ToDouble(rolldata.Rows[0][i * 6 + 4]); + mac.Stand[i].rollDiameterBL = Convert.ToDouble(rolldata.Rows[0][i * 6 + 5]); + + } + } + } + } + catch (Exception) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + mac.Stand[i].rollDiameterBL = 10000.0; + mac.Stand[i].rollDiameterBU = 10000.0; + mac.Stand[i].rollDiameterML = 10000.0; + mac.Stand[i].rollDiameterMU = 10000.0; + mac.Stand[i].rollDiameterWL = 10000.0; + mac.Stand[i].rollDiameterWU = 10000.0; + } + } + finally + { + + } + } + /// + /// 根据L2轧辊信息更新本地轧辊表 + /// 梅钢项目不使用 + /// + /// + public void UpdateLocalRollData(DataTable data) + { + try + { + string nowtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + for (int i = 0; i < data.Rows.Count; i++) + { + string update_sql = string.Format("insert into T_ROLL_DATA (createdate,rollno,standno,rolltype,rollposition,DiameterMiddle) values('{0}','{1}',{2},'{3}','{4}',{5})", nowtime, + data.Rows[i]["rollno"], data.Rows[i]["standno"], data.Rows[i]["rolltype"].ToString(), data.Rows[i]["rollposition"], data.Rows[i]["diametermiddle"]); + localConnect.DataBase(update_sql); + } + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("UpdateLocalRollData", ex.ToString()); + } + } + + /// + /// 获取t_roll_data表中所有的时刻点 + /// /// 梅钢项目不使用 + /// + /// + public DataTable SelCreateTimeRolData() + { + try + { + string select_sql = "select distinct createdate from t_roll_data"; + return localConnect.DataBase(select_sql); + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 获取t_roll_data表中某个时刻点的轧辊数据 + /// 梅钢项目不使用 + /// + /// + /// + public DataTable SelRollDataByCreateDate(string createdate) + { + try + { + string select_sql = string.Format("select rollno,diametermiddle,standno,rollposition,rolltype from t_roll_data where createdate='{0}'", createdate); + return localConnect.DataBase(select_sql); + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 获取L2在线轧辊信息 + /// + /// + public DataTable GetL2OnlineRollInfo() + { + string std_sql = "select "; + for (int i = 0; i < SysParam.Instance.SpeedChannelCount - 1; i++) + { + std_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", (i + 1).ToString()); + } + std_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", (SysParam.Instance.SpeedChannelCount).ToString()); + std_sql += " from t_roll_online where seqno=1"; + try + { + //string select_sql = "select standno,rollposition,to_char(diametermiddle/1000,'9999.99') as diametermiddle,rolltype,rollno from app.fv_vibration_rolldata where rollstatus='I'"; + //string stand1_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "1"); + //string stand2_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "2"); + //string stand3_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "3"); + //string stand4_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "4"); + //string stand5_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "5"); + //string stand6_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", "6"); + //string select_sql = "select " + stand1_sql + stand2_sql + stand3_sql + stand4_sql + stand5_sql + stand6_sql + " from t_roll_online where seqno=1"; + //return localConnect.DataBase(select_sql); + return localConnect.DataBase(std_sql); + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 验证用户输入的密码是否正确 + /// + /// + /// + public bool IsUser(string password) + { + try + { + string select_sql = string.Format("select * from t_users where pswd='{0}' and name = 'tcm'", password); + DataTable dt = localConnect.DataBase(select_sql); + + if (dt.Rows.Count > 0) + { + return true; + } + return false; + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 获取t_coil_info_client表中所有的冷卷号 + /// + /// + public List SelAllCoilIDs() + { + List coillist = new List(); + string select_sql = "select coldcoilno from t_coil_info_client"; + try + { + DataTable data = localConnect.DataBase(select_sql); + if (data != null) + { + for (int i = 0; i < data.Rows.Count; i++) + { + coillist.Add(data.Rows[i]["coldcoilno"].ToString()); + } + } + return coillist; + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 修改用户密码 + /// + /// + public void ChangePassWord(string newpswd) + { + try + { + string update_sql = string.Format("update t_users set pswd='{0}' where name='tcm'", newpswd); + localConnect.DataBase(update_sql); + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 在t_alarm_info_client表中根据冷卷号搜索钢卷报警信息 + /// + /// + /// + public DataTable SelAlarmInfoByColdId(string coldcoilid) + { + try + { + string select_sql = string.Format("select startpos,endpos,standno,alarmtype,energy from t_alarm_info_client where coldcoilid='{0}'", coldcoilid); + return localConnect.DataBase(select_sql); + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 在t_coil_info_client表中搜索时间范围内的钢卷信息 + /// + /// + /// + /// + /// + public DataTable GetCoilInfoByDate(bool isAlarm, DateTime startTime, DateTime endTime) + { + try + { + string select_sql = string.Format("select to_char(createdate,'YYYY-MM-DD HH24:MI:SS'),alarmflag,coldcoilno_hotcoild,coldcoilno,coldcoil_steegrade,coldcoil_alloycode, coldcoil_extwidth,coldcoil_entthick,coldcoil_extthick,dislength,coldcoil_len,endflag,origpath,energypath from t_coil_info_client where createdate<='{0}'and createdate>='{1}'", endTime, startTime); + if (isAlarm) + { + select_sql += " and alarmflag = 1"; + } + select_sql += " order by createdate desc"; + return localConnect.DataBase(select_sql); + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 在t_coil_info_client表中根据冷卷号搜索钢卷信息 + /// + /// + /// + public DataTable GetCoilInfoByColdId(string coldcoilno) + { + try + { + string select_sql = ""; + if (coldcoilno.Trim() == "") + { + select_sql = string.Format("select to_char(createdate,'YYYY-MM-DD HH24:MI:SS'),alarmflag,coldcoilno_hotcoild,coldcoilno,coldcoil_steegrade,coldcoil_alloycode, coldcoil_extwidth,coldcoil_entthick,coldcoil_extthick,dislength,coldcoil_len,endflag,origpath,energypath from t_coil_info_client where coldcoilno = 'xxxxxxxxxx'", coldcoilno); + } + else + { + select_sql = string.Format("select to_char(createdate,'YYYY-MM-DD HH24:MI:SS'),alarmflag,coldcoilno_hotcoild,coldcoilno,coldcoil_steegrade,coldcoil_alloycode, coldcoil_extwidth,coldcoil_entthick,coldcoil_extthick,dislength,coldcoil_len,endflag,origpath,energypath from t_coil_info_client where coldcoilno like '%{0}%' ", coldcoilno); + } + return localConnect.DataBase(select_sql); + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 在t_coil_info_client表中根据原始数据路径搜索钢卷信息 + /// + /// + /// + public DataTable GetCoilInfoByOriginPath(string originPath, Machine macReview) + { + string select_sql = "select coldcoilno,coldcoil_steegrade,coldcoil_extwidth,coldcoil_extthick,coldcoil_alloycode,"; + for (int i = 0; i < SysParam.Instance.SpeedChannelCount - 1; i++) + { + select_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", (i + 1).ToString()); + } + select_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", SysParam.Instance.SpeedChannelCount.ToString()); + select_sql += string.Format(" from t_coil_info_client where origpath='{0}'", originPath); + try + { + //string coil_sql = "select coldcoilno,coldcoil_steegrade,coldcoil_extwidth,coldcoil_extthick,coldcoil_alloycode,"; + + //string stand1_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "1"); + //string stand2_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "2"); + //string stand3_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "3"); + //string stand4_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "4"); + //string stand5_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", "5"); + + //string where_sql = string.Format(" from t_coil_info_client where origpath='{0}'", originPath); + //string sql = coil_sql + stand1_sql + stand2_sql + stand3_sql + stand4_sql + stand5_sql + where_sql; + //DataTable dt = localConnect.DataBase(sql); + DataTable dt = localConnect.DataBase(select_sql); + if (dt.Rows.Count == 1) + { + macReview.review_coldcoilno = dt.Rows[0]["coldcoilno"].ToString(); + macReview.review_extThick = dt.Rows[0]["coldcoil_extthick"].ToString(); + macReview.review_alloyCode = dt.Rows[0]["coldcoil_alloycode"].ToString(); + macReview.review_steelGrade = dt.Rows[0]["coldcoil_steegrade"].ToString(); + macReview.review_width = dt.Rows[0]["coldcoil_extwidth"].ToString(); + + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + macReview.Stand[i].rollDiameterWU = Convert.ToDouble(dt.Rows[0]["wrdiaup" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterWL = Convert.ToDouble(dt.Rows[0]["wrdialow" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterMU = Convert.ToDouble(dt.Rows[0]["imrdiaup" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterML = Convert.ToDouble(dt.Rows[0]["imrdialow" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterBU = Convert.ToDouble(dt.Rows[0]["burdiaup" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterBL = Convert.ToDouble(dt.Rows[0]["burdialow" + (i + 1).ToString()]); + } + } + return dt; + } + catch (Exception ex) + { + DataTable errordt = new DataTable(); + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + macReview.Stand[i].rollDiameterWU = 0; + macReview.Stand[i].rollDiameterWL = 0; + macReview.Stand[i].rollDiameterMU = 0; + macReview.Stand[i].rollDiameterML = 0; + macReview.Stand[i].rollDiameterBU = 0; + macReview.Stand[i].rollDiameterBL = 0; + + } + DevelopLog.DeBug.WriteLogFile("GetCoilInfoByOriginPath", ex.ToString()); + return errordt; + } + } + + /// + /// 在t_coil_info_client表中根据能量数据路径搜索钢卷信息 + /// + /// + /// + public DataTable GetCoilInfoByEnergyPath(string energyPath, Machine macReview) + { + + string select_sql = "select coldcoilno,coldcoil_steegrade,coldcoil_extwidth,coldcoil_extthick,coldcoil_alloycode,"; + for (int i = 0; i < SysParam.Instance.SpeedChannelCount - 1; i++) + { + select_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", (i + 1).ToString()); + } + select_sql += string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", SysParam.Instance.SpeedChannelCount.ToString()); + select_sql += string.Format(" from t_coil_info_client where energypath='{0}'", energyPath); + try + { + //string coil_sql = "select coldcoilno,coldcoil_steegrade,coldcoil_extwidth,coldcoil_extthick,coldcoil_alloycode,"; + + //string stand1_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "1"); + //string stand2_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "2"); + //string stand3_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "3"); + //string stand4_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0},", "4"); + //string stand5_sql = string.Format("wrdiaup{0},wrdialow{0},imrdiaup{0},imrdialow{0},burdiaup{0},burdialow{0}", "5"); + + //string where_sql = string.Format(" from t_coil_info_client where energypath='{0}'", energyPath); + //string sql = coil_sql + stand1_sql + stand2_sql + stand3_sql + stand4_sql + stand5_sql + where_sql; + //DataTable dt = localConnect.DataBase(sql); + DataTable dt = localConnect.DataBase(select_sql); + if (dt.Rows.Count == 1) + { + macReview.review_coldcoilno = dt.Rows[0]["coldcoilno"].ToString(); + macReview.review_extThick = dt.Rows[0]["coldcoil_extthick"].ToString(); + macReview.review_alloyCode = dt.Rows[0]["coldcoil_alloycode"].ToString(); + macReview.review_steelGrade = dt.Rows[0]["coldcoil_steegrade"].ToString(); + macReview.review_width = dt.Rows[0]["coldcoil_extwidth"].ToString(); + + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + macReview.Stand[i].rollDiameterWU = Convert.ToDouble(dt.Rows[0]["wrdiaup" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterWL = Convert.ToDouble(dt.Rows[0]["wrdialow" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterMU = Convert.ToDouble(dt.Rows[0]["imrdiaup" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterML = Convert.ToDouble(dt.Rows[0]["imrdialow" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterBU = Convert.ToDouble(dt.Rows[0]["burdiaup" + (i + 1).ToString()]); + macReview.Stand[i].rollDiameterBL = Convert.ToDouble(dt.Rows[0]["burdialow" + (i + 1).ToString()]); + } + } + return dt; + } + catch (Exception ex) + { + DataTable errordt = new DataTable(); + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + macReview.Stand[i].rollDiameterWU = 0; + macReview.Stand[i].rollDiameterWL = 0; + macReview.Stand[i].rollDiameterMU = 0; + macReview.Stand[i].rollDiameterML = 0; + macReview.Stand[i].rollDiameterBU = 0; + macReview.Stand[i].rollDiameterBL = 0; + + } + DevelopLog.DeBug.WriteLogFile("GetCoilInfoByEnergyPath", ex.ToString()); + return errordt; + } + } + + public bool recordLocalDefectData(Dictionary defectList, Dictionary defectMaxEnergyValue)//剪切时插入本地数据库缺陷表 + { + return true; + + + if (defectList.Count >= 1) + { + string coil_sql = "select coldcoilno,coldcoil_muid from t_coil_online where seqno=1 "; + DataTable coil_dt = localConnect.DataBase(coil_sql); + if (coil_dt.Rows.Count == 1) + { + string coldcoilno = coil_dt.Rows[0]["coldcoilno"].ToString(); + string coldcoil_muid = coil_dt.Rows[0]["coldcoil_muid"].ToString(); + + if (coldcoilno.Trim() != "") + { + string update_sql = "update t_defect_data set "; + int count = 0; + foreach (KeyValuePair item in defectList) + { + count++; + if (count == 21) + { + break; + } + string tmp = " defectstart" + count.ToString() + "=" + item.Key.ToString() + ","; + tmp += "defectend" + count.ToString() + "=" + item.Value.ToString() + ","; + if (defectMaxEnergyValue.ContainsKey(item.Key)) + { + tmp += "maxenergy" + count.ToString() + "=" + defectMaxEnergyValue[item.Key] + ","; + } + else + { + tmp += "maxenergy" + count.ToString() + "=" + "0.0" + ","; + } + + update_sql = update_sql + tmp; + } + + for (int i = count; i <= 20; i++) + { + string tmp = " defectstart" + count.ToString() + "=0,"; + tmp += "defectend" + count.ToString() + "=0,"; + tmp += "maxenergy" + count.ToString() + "=0.0,"; + update_sql = update_sql + tmp; + } + + update_sql += "coldcoilid='" + coldcoilno + "', muid=" + coldcoil_muid + ",sndflag=0"; + DevelopLog.DeBug.WriteLogFile("update t_defect_data:", update_sql); + localConnect.DataBase(update_sql); + return true; + } + return true; + } + else + { + DevelopLog.DeBug.WriteLogFile("read online table failed, info recordocalDefectData:", coil_sql); + return false; + } + } + else + { + return true; + } + + + + //string sql = "update t_defect_data set ";//将表内当前所有的当前卷标记都置为0 + //try + //{ + // localConnect.DataBase(sql); + + // sql = ""; + // DateTime nowtime = DateTime.Now; + // int index = 1; + // foreach (KeyValuePair item in defectList) + // { + // string time = nowtime.AddMilliseconds(-index).ToString("yyyy/MM/dd HH:mm:ss.fff"); + // string maxEnergyValue = "0.0"; + // //if (defectMaxEnergyValue.ContainsKey(item.Key)) + // //{ + // // maxEnergyValue = defectMaxEnergyValue[item.Key].ToString(); + // //} + // sql += string.Format("insert into t_defect_data (defectstart,defectend,nowFlag,inserttime,defectindex,maxenergy) values ('{0}','{1}','1','{2}','{3}','{4}');", item.Key, item.Value, time, index, maxEnergyValue); + // index++; + // } + // DevelopLog.DeBug.WriteLogFile("info recordocalDefectData:", sql); + // localConnect.DataBase(sql); + //} + //catch (Exception ex) + //{ + // DevelopLog.DeBug.WriteLogFile("error recordocalDefectData:", sql); + // return false; + //} + //return true; + } + + public bool updateLocalDefectCoilNo(string coldcoilId)//获取钢卷号时,更新缺陷表中的钢卷号 + { + DevelopLog.DeBug.WriteLogFile("updateLocalDefectCoilNo:", coldcoilId); + string sql = string.Format("update t_defect_data set coldcoilid = '{0}' where nowFlag = '1';", coldcoilId);//将表内当前卷标记的钢卷号更新 + try + { + localConnect.DataBase(sql); + //if (GetDefectSndStatus() == 1) + //{ + // return updateL2DefectData(coldcoilId); + //} + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("updateLocalDefectCoilNo:", sql); + return false; + } + return true; + } + + public bool updateL2DefectData(string coldcoilId)//根据卷号更新L2缺陷表 + { + /*DataTable dt = new DataTable(); + dt = getLoaclDefectData(coldcoilId);//获取本地缺陷数据包括卷号 + if (dt == null || dt.Rows.Count == 0) + { + return false; + } + string updatesql = ""; + + string MECREATOR = "PC"; + string MESID = "2"; + string SOURCE = "1"; + string ACTION = "1"; + string DEFCREATOR = "C502"; + string DEFSIDE = "2"; + string DEFTYPE = "51B1"; + string DEFECTTEXT = "zhendong"; + string INTENSITY = "1"; + string TURNFLAG = "1"; + + try + { + + if (dt.Rows.Count > 0) + { + LogicConnect con = new LogicConnect(soudb, soudb.Userid); + for (int i = 0; i < dt.Rows.Count; i++) + { + string MEID = dt.Rows[i][3].ToString(); + string SID = dt.Rows[i][2].ToString(); + string DEFEND = dt.Rows[i][1].ToString(); + string DEFSTART = dt.Rows[i][0].ToString(); + string INTENSITYVAL = dt.Rows[i][4].ToString(); + + updatesql = string.Format("insert into DEFECT (MEID,MECREATOR,MESID,SID,SOURCE,ACTION,DEFCREATOR,DEFEND,DEFSIDE,DEFSTART,DEFTYPE,DEFECTTEXT,INTENSITY,INTENSITYVAL,TURNFLAG) values ({0},'{1}',{2},{3},'{4}',{5},'{6}',{7},'{8}',{9},'{10}','{11}','{12}',{13},{14})", + MEID, MECREATOR, MESID, SID, SOURCE, ACTION, DEFCREATOR, DEFEND, DEFSIDE, DEFSTART, DEFTYPE, DEFECTTEXT, INTENSITY, INTENSITYVAL, TURNFLAG); + con.DataBase(updatesql); + DevelopLog.DeBug.WriteLogFile("infoupdateL2DefectData:", updatesql); + } + } + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("error:updateL2DefectData:", updatesql); + return false; + }*/ + return true; + } + + public DataTable getLoaclDefectData(string coldcoilid)//根据卷号获取本地缺陷数据 + { + /*DataTable dt = new DataTable(); + string muidSql = ""; + string maxSidSql = ""; + string localDefectSql = ""; + try + { + //查询muid + LogicConnect con = new LogicConnect(soudb, soudb.Userid); + muidSql = string.Format("select MEID2PH from SV_MEID where coldcoilid='{0}'", coldcoilid); + DevelopLog.DeBug.WriteLogFile("infomuidSql:", muidSql); + + string muid = ""; + dt = con.SelTableData("SV_MEID", muidSql); + if (dt.Rows.Count != 1) + { + return null; + } + else + { + muid = dt.Rows[0][0].ToString(); + } + DevelopLog.DeBug.WriteLogFile("getLoaclDefectData muid:", muid); + + //查询最大SID + maxSidSql = string.Format("select max(SID) from DEFECT where meid='{0}'", muid); + DevelopLog.DeBug.WriteLogFile("infomaxSidSql:", maxSidSql); + + int maxSID = 0; + dt = con.SelTableData("DEFECT", maxSidSql); + if (dt.Rows.Count == 1) + { + if (dt.Rows[0][0].ToString().Trim() != "") + { + maxSID = Convert.ToInt32(dt.Rows[0][0]); + } + } + DevelopLog.DeBug.WriteLogFile("getLoaclDefectData muid:", maxSID.ToString()); + + con = new LogicConnect(desdb, desdb.Userid); + dt = new DataTable(); + localDefectSql = string.Format("select defectstart,defectend,defectindex,muid,maxEnergy from t_defect_data where coldcoilid='{0}'", coldcoilid); + DevelopLog.DeBug.WriteLogFile("infolocalDefectSql:", localDefectSql); + + dt = con.SelTableData("t_defect_data", localDefectSql); + if (dt.Rows.Count > 0) + { + for (int i = 0; i < dt.Rows.Count; i++) + { + dt.Rows[i][3] = muid; + dt.Rows[i][2] = Convert.ToInt32(dt.Rows[i][2]) + maxSID; + } + } + else + { + return null; + } + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("getLoaclDefectData:", localDefectSql); + DevelopLog.DeBug.WriteLogFile("muidSql:", muidSql); + DevelopLog.DeBug.WriteLogFile("maxSidSql:", maxSidSql); + return null; + } + return dt;*/ + return null; + } + + public void recordLogInfo(string userName, string logInfo) + { + try + { + string insert_sql = string.Format("insert into t_log_info (seqno,username,loginfo) values((select max(seqno) + 1 from t_log_info),'{0}','{1}')", + userName, logInfo); + localConnect.DataBase(insert_sql); + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("recordLogInfo", ex.ToString()); + recordLogInfoFirst(userName, logInfo); + } + } + public void recordLogInfoFirst(string userName, string logInfo) + { + try + { + string insert_sql = string.Format("insert into t_log_info (seqno,username,loginfo) values(1,'{0}','{1}')", + userName, logInfo); + localConnect.DataBase(insert_sql); + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("recordLogInfoFirst", ex.ToString()); + } + } + + public DataTable GetLogInfoByDate(DateTime startTime, DateTime endTime) + { + try + { + string select_sql = string.Format("select seqno,to_char(toc,'YYYY-MM-DD HH24:MI:SS'),loginfo,username from t_log_info where toc<='{0}'and toc>='{1}' and seqno >0", endTime, startTime); + + select_sql += " order by seqno desc"; + return localConnect.DataBase(select_sql); + } + catch (Exception ex) + { + throw ex; + } + } + + /// + /// 获取基本配置参数,包括报警次数,采样点数等 + /// + /// + public DataTable GetBaseConfig() + { + string sql_str = "select key,value from t_dict_data;"; + try + { + DataTable dt = localConnect.DataBase(sql_str); + return dt; + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("GetBaseConfig()", ex.ToString()); + DataTable errdt = new DataTable(); + return errdt; + } + } + + /// + /// 获取报警参数 + /// + /// + public DataTable GetAlarmParam() + { + string sql_str = "select standno,alarmspeed,lowpassl,lowpassu,lowalarmvalue,lowdefectvalue,midpassl," + + "midpassu,midalarmvalue,middefectvalue,highpassl,highpassu,highalarmvalue,highdefectvalue," + + "alarmtimes_l,alarmtimes_m,alarmtimes_h from t_alarm_param order by standno ,alarmspeed ;"; + try + { + DataTable dt = localConnect.DataBase(sql_str); + return dt; + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("GetBaseConfig()", ex.ToString()); + DataTable errdt = new DataTable(); + return errdt; + } + } + /// + /// 获取指定机架的报警参数 + /// + /// + /// + public DataTable GetAlarmParamByStanNo(int standNo) + { + string sql_str = "select alarmspeed,lowpassl,lowpassu,lowalarmvalue,lowdefectvalue,midpassl," + + "midpassu,midalarmvalue,middefectvalue,highpassl,highpassu,highalarmvalue,higdefectvalue from t_alarm_param" + + String.Format(" where standno={};", standNo); + try + { + DataTable dt = localConnect.DataBase(sql_str); + return dt; + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("GetBaseConfig()", ex.ToString()); + DataTable errdt = new DataTable(); + return errdt; + } + } + + /// + /// 新增报警参数记录 + /// + /// + /// + public void AddAlarmParamByStandNo(EntityAlarmSpeed data, int standNo) + { + try + { + string insert_sql = "insert into t_alarm_param (standno,alarmspeed,lowpassl," + + "lowpassu,lowalarmvalue,lowdefectvalue,midpassl,midpassu,midalarmvalue,middefectvalue,highpassl," + String.Format("highpassu,highalarmvalue,highdefectvalue) values({0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13})", standNo, + data.alarmSpeed, data.lowPassL, data.lowPassU, data.lowAlarmValue, data.lowDefectValue, data.midPassL, data.midPassU, + data.midAlarmValue, data.midDefectValue, data.highPassL, data.highPassU, data.highAlarmValue, data.highDefectValue); + ; + localConnect.DataBase(insert_sql); + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("AddAlarmParamByStandNo", ex.ToString()); + } + } + + /// + /// 单个机架报警参数更新 + /// + /// + /// + public void UpdateAlarmParamByStandNo(IList data, int standNo) + { + if (data == null || data.Count == 0) + { + return; + } + if (standNo > 0 && standNo < SysParam.Instance.SpeedChannelCount + 1) + { + //报警参数 + DeleteAlarmParamByStandNo(standNo); + try + { + foreach (EntityAlarmSpeed item in data) + { + AddAlarmParamByStandNo(item, standNo); + } + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("SaveAlarmParam", String.Format("standno:{0},Error:", standNo) + ex.ToString()); + + } + //报警次数 + UpdateAlarmTimes(standNo, SysParam.Instance.channel[standNo - 1].alarmTimes_l, + SysParam.Instance.channel[standNo - 1].alarmTimes_m, + SysParam.Instance.channel[standNo - 1].alarmTimes_h); + + } + } + + /// + /// 删除指定机架的报警参数 + /// + /// + public void DeleteAlarmParamByStandNo(int standNo) + { + string delete_sql = String.Format("delete from t_alarm_param where standno = {0};", standNo); + try + { + localConnect.DataBase(delete_sql); + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("GetBaseConfig()", ex.ToString()); + } + + } + + /// + /// 保存有速度机架的整个报警参数 + /// + /// + /// + public bool SaveAlarmParam(Dictionary> datas) + { + //报警参数 + foreach (KeyValuePair> items in datas) + { + if (items.Value != null && items.Value.Count > 0) + { + int standNoi = items.Key + 1; + if (standNoi > 0 && standNoi < SysParam.Instance.SpeedChannelCount + 1) + { + DeleteAlarmParamByStandNo(standNoi); + try + { + foreach (EntityAlarmSpeed item in items.Value) + { + AddAlarmParamByStandNo(item, standNoi); + } + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("SaveAlarmParam", String.Format("standno:{0},Error:", standNoi) + ex.ToString()); + return false; + } + + } + + } + } + //报警次数 + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + + UpdateAlarmTimes(i + 1, SysParam.Instance.channel[i].alarmTimes_l, + SysParam.Instance.channel[i].alarmTimes_m, + SysParam.Instance.channel[i].alarmTimes_h); + + } + return true; + } + + /// + /// 将数据库报警参数更新到系统 + /// + public void autoUpdateAlarmParam() + { + //报警参数 + DataTable eas = GetAlarmParam(); + if (eas == null) + { + return; + } + try + { + Dictionary> config_base = new Dictionary>(); + for (int i = 0; i < eas.Rows.Count; i++) + { + + DataRow row = eas.Rows[i]; + EntityAlarmSpeed itemdata = new EntityAlarmSpeed(); + int standNo = Convert.ToInt32(row["standno"]); + itemdata.alarmSpeed = Convert.ToInt32(row["alarmspeed"]); + itemdata.lowPassL = Convert.ToInt32(row["lowpassl"]); + itemdata.lowPassU = Convert.ToInt32(row["lowpassu"]); + itemdata.lowAlarmValue = Convert.ToSingle(row["lowalarmvalue"]); + itemdata.lowDefectValue = Convert.ToSingle(row["lowdefectvalue"]); + itemdata.midPassL = Convert.ToInt32(row["midpassl"]); + itemdata.midPassU = Convert.ToInt32(row["midpassu"]); + itemdata.midAlarmValue = Convert.ToSingle(row["midalarmvalue"]); + itemdata.midDefectValue = Convert.ToSingle(row["middefectvalue"]); + itemdata.highPassL = Convert.ToInt32(row["highpassl"]); + itemdata.highPassU = Convert.ToInt32(row["highpassu"]); + itemdata.highAlarmValue = Convert.ToSingle(row["highalarmvalue"]); + itemdata.highDefectValue = Convert.ToSingle(row["highdefectvalue"]); + + if (!config_base.ContainsKey(standNo - 1)) + { + IList itemlist = new List(); + config_base.Add(standNo - 1, itemlist); + } + config_base[standNo - 1].Add(itemdata); + } + for (int j = 0; j < config_base.Keys.Count; j++) + { + SysParam.Instance.channel[j].alarmConfig = config_base[j].ToArray();//报警参数 + //eas.Select(String.Format("standno={0}", j + 1)); + DataRow dr = eas.Select(String.Format("standno={0}", j + 1))[0]; + SysParam.Instance.channel[j].alarmTimes_l = Convert.ToInt32(dr["alarmtimes_l"]);//报警次数 + SysParam.Instance.channel[j].alarmTimes_m = Convert.ToInt32(dr["alarmtimes_m"]);//报警次数 + SysParam.Instance.channel[j].alarmTimes_h = Convert.ToInt32(dr["alarmtimes_h"]);//报警次数 + } + Console.WriteLine("test"); + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("autoUpdateAlarmParam", ex.Message); + } + //报警次数 + //DataTable kv = GetBaseConfig(); + //if (kv == null) + //{ + // return; + //} + //else + //{ + // try + // { + // for (int i = 0; i < kv.Rows.Count; i++) + // { + // string keyi = Convert.ToString(kv.Rows[i]["key"]); + // if (keyi == "alarmTimes_l" || keyi == "alarmTimes_m" || keyi == "alarmTimes_h") + // { + // for (int j = 0; j < SysParam.Instance.SpeedChannelCount; j++) + // { + // if (keyi == "alarmTimes_l") + // { + // SysParam.Instance.channel[j].alarmTimes_l = Convert.ToInt32(kv.Rows[i]["value"]); + // } + // else if (keyi == "alarmTimes_m") + // { + // SysParam.Instance.channel[j].alarmTimes_m = Convert.ToInt32(kv.Rows[i]["value"]); + // } + // else + // { + // SysParam.Instance.channel[j].alarmTimes_h = Convert.ToInt32(kv.Rows[i]["value"]); + // } + // //else if(keyi == "vibSens") + // //{ + // // SysParam.Instance.channel[j].vibSens = Convert.ToInt32(kv.Rows[i]["value"]); + // //} + // //else + // //{ + // // SysParam.Instance.channel[j].speedSens = Convert.ToInt32(kv.Rows[i]["value"]); + // //} + // //else + // //{ + // // DevelopLog.DeBug.WriteLogFile("autoUpdateAlarmParam-BaseConfig", "Error:参数异常,key="+keyi); + // //} + // } + // } + // //else if (keyi == "samplePoint") + // //{ + // // SysParam.Instance.samplePoint = Convert.ToInt32(kv.Rows[i]["value"]); + // //} + // //else if (keyi == "sampleFre") + // //{ + // // SysParam.Instance.sampleFre = Convert.ToInt32(kv.Rows[i]["value"]); + // //} + + + // } + // } + // catch (Exception ex) + // { + // DevelopLog.DeBug.WriteLogFile("autoUpdateAlarmParam-BaseConfig", ex.Message); + // } + + //} + + } + public void UpdateAlarmTimes(int standNo, int l, int m, int h) + { + if (l < 0 || m < 0 || h < 0 || standNo < 0 || standNo > SysParam.Instance.SpeedChannelCount) + { + DevelopLog.DeBug.WriteLogFile("UpdateAlarmTimes", + String.Format("参数异常:standNo={0},l={1},m={2},h={3}", standNo, l, m, h)); + return; + } + try + { + string update_sql = String.Format("update t_alarm_param set alarmtimes_l={0},alarmtimes_m={1},alarmtimes_h={2} where standno={3};", l, m, h, standNo); + localConnect.DataBase(update_sql); + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("UpdateAlarmTimes", ex.ToString()); + } + } + + + } +} diff --git a/CIDExcuter/IDataHelper.cs b/CIDExcuter/IDataHelper.cs new file mode 100644 index 0000000..75bc4ee --- /dev/null +++ b/CIDExcuter/IDataHelper.cs @@ -0,0 +1,257 @@ +using System; +using System.Collections.Generic; +using System.IO; +using CRVM.Entity; +using System.Threading; +using System.Threading.Tasks; +using System.Data; + +namespace CRVM.CIDExcuter +{ + public class IDataHelper + { + protected Machine mac; + protected StreamWriter fileTxtOriginalWriter, fileTxtEnergyWriter; + protected BinaryWriter fileBitOriginalWriter; + private string saveFileName; + private string savePathOrigin; + private string savePathEnergy; + private string savePathAlarm; + + Dictionary allDefectData = new Dictionary(); + Dictionary defectMaxEnergyValue = new Dictionary(); + + public IDataHelper(Machine mac) + { + this.mac = mac; + } + + //创建文件 + public void CreateFileHead() + { + string temppath = SysParam.Instance.savePath + "\\" + DateTime.Now.ToString("yyyyMMdd") + "\\"; + savePathAlarm = temppath + "AlarmInfo" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; + saveFileName = DateTime.Now.ToString("yyyyMMddHHmmss"); + if (!Directory.Exists(temppath)) + { + Directory.CreateDirectory(temppath + "original data\\"); + Directory.CreateDirectory(temppath + "energy data\\"); + } + Console.WriteLine(DateTime.Now.ToString("HH:mm:ss fff") + " CreateFileHead 0"); + if (SysParam.Instance.checkTXT) + { + savePathOrigin = temppath + "original data\\" + saveFileName + ".txt"; + fileTxtOriginalWriter = new StreamWriter(new FileStream(savePathOrigin, FileMode.OpenOrCreate)); + + fileTxtOriginalWriter.WriteLine("原始数据"); + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + fileTxtOriginalWriter.Write((i + 1) + "#机架振动" + "\t"); + } + fileTxtOriginalWriter.WriteLine(); + fileTxtOriginalWriter.WriteLine(SysParam.Instance.sampleFre); + fileTxtOriginalWriter.WriteLine(SysParam.Instance.samplePoint); + } + else if (SysParam.Instance.checkBIT) + { + savePathOrigin = temppath + "original data\\" + saveFileName + ".dat"; + fileBitOriginalWriter = new BinaryWriter(new FileStream(savePathOrigin, FileMode.OpenOrCreate)); + + Console.WriteLine(DateTime.Now.ToString("HH:mm:ss fff") + " CreateFileHead 1"); + fileBitOriginalWriter.Write("原始数据"); + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + fileBitOriginalWriter.Write((i + 1) + "#机架振动"); + } + fileBitOriginalWriter.Write("/r/n"); + fileBitOriginalWriter.Write(Convert.ToSingle(SysParam.Instance.sampleFre)); + fileBitOriginalWriter.Write(Convert.ToSingle(SysParam.Instance.samplePoint)); + } + Console.WriteLine(DateTime.Now.ToString("HH:mm:ss fff") + " CreateFileHead 2"); + savePathEnergy = temppath + "energy data\\" + saveFileName + ".txt"; + fileTxtEnergyWriter = new StreamWriter(new FileStream(savePathEnergy, FileMode.OpenOrCreate)); + + //能量数据 + string tempStr = ""; + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + tempStr = tempStr + (i + 1) + "#机架,"; + } + tempStr = tempStr.Substring(0, tempStr.Length - 1) + "能量数据\r\n"; + + tempStr = tempStr + "采样点数:" + SysParam.Instance.samplePoint + ";采样频率(Hz):" + SysParam.Instance.sampleFre + "\r\n"; + + int istandno = 0; + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + istandno++; + tempStr = tempStr + istandno + "#机架轧制速度" + "\t" + istandno + "#机架全局" + "\t" + istandno + "#机架低频" + "\t" + istandno + "#机架中频" + "\t" + + istandno + "#机架高频" + "\t" + istandno + "#机架低频报警值" + "\t" + istandno + "#机架中频报警值" + "\t" + istandno + "#机架高频报警值" + "\t"; + } + fileTxtEnergyWriter.WriteLine(tempStr); + + Console.WriteLine(DateTime.Now.ToString("HH:mm:ss fff") + " CreateFileHead 3"); + SysParam.Instance.fileCreated = true; + } + + //采集数据写入文件 + public virtual void writeNew(int dataCount) + { + //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss fff") + " " + Thread.CurrentThread.ManagedThreadId + " " + Thread.CurrentThread.IsThreadPoolThread); + //原始数据 + //int dataCount = data.GetLength(1); + if (SysParam.Instance.checkBIT) + { + fileBitOriginalWriter.Write(Convert.ToSingle(1111)); + for (int i = 0; i < dataCount; i++) + { + for (int k = 0; k < SysParam.Instance.channelCount; k++) + { + fileBitOriginalWriter.Write(Convert.ToSingle(mac.Stand[k].vib[i])); + } + } + for (int k = 0; k < SysParam.Instance.SpeedChannelCount; k++) + { + fileBitOriginalWriter.Write(Convert.ToSingle(mac.Stand[k].speed)); + } + fileBitOriginalWriter.Write(Convert.ToSingle(mac.stripLength)); + + } + else if (SysParam.Instance.checkTXT) + { + for (int i = 0; i < dataCount; i++) + { + for (int k = 0; k < SysParam.Instance.channelCount; k++) + { + fileTxtOriginalWriter.Write((mac.Stand[k].vib[i]).ToString("e6") + "\t"); + } + fileTxtOriginalWriter.WriteLine(); //new line of data (start next scan); + } + for (int k = 0; k < 5; k++) + { + fileTxtOriginalWriter.Write(mac.Stand[k].speed.ToString("e6") + "\t"); + } + fileTxtOriginalWriter.WriteLine(mac.stripLength.ToString("e6")); + } + + for (int k = 0; k < SysParam.Instance.channelCount; k++) + { + fileTxtEnergyWriter.Write(mac.Stand[k].speed.ToString("e6") + "\t" + mac.Stand[k].energy_All.ToString("e6") + "\t" + mac.Stand[k].energy_L.ToString("e6") + "\t" + + mac.Stand[k].energy_M.ToString("e6") + "\t" + mac.Stand[k].energy_H.ToString("e6") + "\t" + mac.Stand[k].alarm_L_Value_ck.ToString("e6") + "\t" + + mac.Stand[k].alarm_M_Value_ck.ToString("e6") + "\t" + mac.Stand[k].alarm_H_Value_ck.ToString("e6") + "\t"); + } + fileTxtEnergyWriter.WriteLine(); + + + } + + /// + /// 文件写入关闭,写报警日志并更新数据库 + /// + /// 文件结束标志:0=超时,1=剪切,2=手动关闭 + /// 写报警日志所需报警信息 + /// 钢卷剪切长度 + public virtual void CloseFile(int endFlag, List alarmInfo, int cutLength, int defectflag, Dictionary allDefectData, Dictionary defectMaxEnergyValue) + { + //关闭文件流 + if (SysParam.Instance.fileCreated)////连续执行两次closefile函数会造成不能向已关闭的文件中写 + { + if (SysParam.Instance.checkTXT) + { + fileTxtOriginalWriter.Close(); + } + else if (SysParam.Instance.checkBIT) + { + fileBitOriginalWriter.Write(Convert.ToSingle(111111111)); + fileBitOriginalWriter.Close(); + } + fileTxtEnergyWriter.Close(); + } + SysParam.Instance.fileCreated = false; + string[] tempAlarmInfo = alarmInfo.ToArray(); + + string savePathOriginTemp = this.savePathOrigin; + string savePathEnergyTemp = this.savePathEnergy; + + new Task(() => WriteAlarmInfo(endFlag, tempAlarmInfo, cutLength, savePathOriginTemp, savePathEnergyTemp, defectflag)).Start(); + + if (allDefectData.Keys.Count > 0) + { + DbHelper.GetInstance("").recordLocalDefectData(allDefectData, defectMaxEnergyValue); + } + } + + private void WriteAlarmInfo(int endFlag, string[] alarmInfo, int cutLength, string savePathOrigin, string savePathEnergy, int defectflag) + { + int alarmstate = 0;//无报警 + //写报警日志 + if (alarmInfo.Length > 0) + { + alarmstate = 1;//有报警 + string alarmlog = ""; + for (int i = 0; i < alarmInfo.Length; i++) + { + alarmlog = alarmlog + alarmInfo[i] + Environment.NewLine; + } + //结束时再空两行以区分不同钢卷 + alarmlog = alarmlog + Environment.NewLine + Environment.NewLine; + File.AppendAllText(savePathAlarm, alarmlog); + } + + //数据库写入钢卷文件信息 + DbHelper.GetInstance("").AddNewCoilInfo(alarmstate, endFlag, savePathOrigin, savePathEnergy, cutLength.ToString(), defectflag); + //数据库写入报警信息 + if (alarmstate == 1) + { + AlarmInfoInsertDb(); + } + } + + private void AlarmInfoInsertDb() + { + //报警信息合并 + List start = new List(); + List end = new List(); + List value = new List(); + List standNo = new List(); + List alarmType = new List(); + for (int k = 0; k < SysParam.Instance.SpeedChannelCount; k++) + { + for (int i = 0; i < mac.Stand[k].indexLow; i++) + { + start.Add(mac.Stand[k].alarmLowInfo[i].startPos); + end.Add(mac.Stand[k].alarmLowInfo[i].endPos); + value.Add(mac.Stand[k].alarmLowInfo[i].value); + standNo.Add(k); + alarmType.Add(0); + } + mac.Stand[k].indexLow = 0; + mac.Stand[k].alarmLowInfo.Clear(); + for (int i = 0; i < mac.Stand[k].indexMid; i++) + { + start.Add(mac.Stand[k].alarmMidInfo[i].startPos); + end.Add(mac.Stand[k].alarmMidInfo[i].endPos); + value.Add(mac.Stand[k].alarmMidInfo[i].value); + standNo.Add(k); + alarmType.Add(1); + } + mac.Stand[k].indexMid = 0; + mac.Stand[k].alarmMidInfo.Clear(); + for (int i = 0; i < mac.Stand[k].indexHigh; i++) + { + start.Add(mac.Stand[k].alarmHighInfo[i].startPos); + end.Add(mac.Stand[k].alarmHighInfo[i].endPos); + value.Add(mac.Stand[k].alarmHighInfo[i].value); + standNo.Add(k); + alarmType.Add(2); + } + mac.Stand[k].indexHigh = 0; + mac.Stand[k].alarmHighInfo.Clear(); + + } + + DbHelper.GetInstance("").InsertAlarmInfo(start.ToArray(), end.ToArray(), standNo.ToArray(), alarmType.ToArray(), value.ToArray()); + } + + } +} diff --git a/CIDExcuter/IViewHelper.cs b/CIDExcuter/IViewHelper.cs new file mode 100644 index 0000000..19bbba6 --- /dev/null +++ b/CIDExcuter/IViewHelper.cs @@ -0,0 +1,380 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.IO; +using CRVM.Entity; + +namespace CRVM.CIDExcuter +{ + public class IViewHelper + { + + private List> _originDataList; + public List> originDataList + { + get { return _originDataList; } + } + + private List> _originSpeedList; + public List> originSpeedList + { + get { return _originSpeedList; } + } + + private List _originDistanceList; + public List originDistanceList + { + get { return _originDistanceList; } + } + + + private double[,] _energyData; + public double[,] energyData + { + get { return _energyData; } + } + + private Dictionary indColmun; + + private int _signalLengthOrigin; + public int signalLengthOrigin + { + get { return _signalLengthOrigin; } + } + + private int _signalLengthEnergy; + public int signalLengthEnergy + { + get { return _signalLengthEnergy; } + } + + public IViewHelper(string path) + { + ReadFile(path); + } + + public void ReadFile(string path) + { + if (path.Contains(".txt")) + { + if (path.Contains("original")) + { + readOk = readTxtOrigData(path); + } + else + { + readOk = readEnergyData(path); + } + } + else if (path.Contains(".dat")) + { + readOk = readOrigData(path); + } + else + { + readOk = false; + } + } + + public int IndexChannel(string keys) + { + if (indColmun.ContainsKey(keys)) + return indColmun[keys]; + else + return -1; + } + + private bool readOk = true; + private string[] _channel; + + public bool FileOk + { + get { return readOk; } + } + + private bool readEnergyData(string path) + { + //Stream myStream = new FileStream(_path, FileMode.Open); + FileStream file = File.OpenRead(path); + StreamReader myread = new StreamReader(file); + + int colum = 0; + string tempstr = myread.ReadLine(); + if (tempstr.Substring(tempstr.Length - 4, 4) == "能量数据") + { + string content1 = tempstr.Substring(0, tempstr.Length - 4); + string[] split1; + split1 = content1.Split(','); + _channel = new string[split1.GetLength(0)]; + Array.Copy(split1, 0, _channel, 0, split1.GetLength(0)); + for (int i = 0; i < _channel.Length; i++) + { + string str = (i + 1) + "#机架"; + if (_channel[i] == str) + { + colum += 8; + } + } + string XXX = myread.ReadLine(); + string[] x1 = new string[1]; + string[] xx1 = new string[1]; + string[] xx2 = new string[1]; + x1 = XXX.Split(';'); + xx1 = x1[0].Split(':'); + xx2 = x1[1].Split(':'); + myread.ReadLine(); + if (SysParam.Instance.reSampleFre == 0 || SysParam.Instance.reSamplePoint == 0) + { + SysParam.Instance.reSamplePoint = Convert.ToInt32(xx1[1]); + SysParam.Instance.reSampleFre = Convert.ToInt32(xx2[1]); + } + //SysParam.Instance.time_1 = Convert.ToSingle(xx1[1]) / Convert.ToSingle(xx2[1]); + string line = myread.ReadToEnd(); + string[] line1 = line.Replace("\r\n", "@").Split('@'); + _signalLengthEnergy = line1.Length - 1; + _energyData = new double[colum, _signalLengthEnergy]; + string[] line2; + for (int i = 0; i < _signalLengthEnergy; i++) + { + line2 = line1[i].Replace("\t", "@").Split('@'); + for (int j = 0; j < colum; j++) + { + _energyData[j, i] = Convert.ToDouble(line2[j]); + } + } + } + else + { + myread.Close(); + file.Close(); + return false; + } + myread.Close(); + file.Close(); + return true; + } + + private bool readTxtOrigData(string path) + { + FileStream file = File.OpenRead(path); + StreamReader myread = new StreamReader(file); + + string tempStr = myread.ReadLine(); + try + { + if (tempStr == "原始数据") + { + tempStr = myread.ReadLine(); + string[] split1; + split1 = tempStr.Split('\t'); + string[] channel = new string[split1.Length - 1]; + Array.Copy(split1, 0, channel, 0, split1.GetLength(0) - 1); + indColmun = new Dictionary(); + for (int i = 0; i < channel.Length; i++) + { + indColmun.Add(channel[i], i); + } + SysParam.Instance.reSampleFre = Convert.ToInt32(myread.ReadLine()); + SysParam.Instance.reSamplePoint = Convert.ToInt32(myread.ReadLine()); + _originDataList = new List>();////存放通道数据 + for (int i = 0; i < channel.Length; i++) + { + List listm = new List(); + _originDataList.Add(listm); + } + + _originSpeedList = new List>();//存放速度和轧制距离 + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + List listm = new List(); + _originSpeedList.Add(listm); + } + + _originDistanceList = new List(); + + while (!myread.EndOfStream) + { + for (int i = 0; i < SysParam.Instance.samplePoint; i++) + { + string line = myread.ReadLine(); + string[] line1 = line.Split('\t'); + for (int j = 0; j < channel.Length; j++) + { + _originDataList[j].Add(Convert.ToSingle(line1[j])); + } + } + string disSpeed = myread.ReadLine(); + string[] disspeed = disSpeed.Split('\t'); + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)//速度信息 + { + _originSpeedList[i].Add(Convert.ToDouble(disspeed[i])); + } + _originDistanceList.Add(Convert.ToDouble(disspeed[5])); + } + + _signalLengthOrigin = _originDataList[0].Count; + + myread.Close(); + file.Close(); + return true; + } + else + { + myread.Close(); + file.Close(); + return false; + } + + } + catch (Exception) + { + myread.Close(); + file.Close(); + return false; + } + + } + + private bool readOrigData(string path) + { + //DevelopLog.DeBug.WriteLogFile("开始读文件","开始"); + try + { + Stream myStream = new FileStream(path, FileMode.Open); + _signalLengthOrigin = 0; + BinaryReader MyReader = new BinaryReader(myStream, Encoding.UTF8); + string tempStr = MyReader.ReadString(); + if (tempStr == "原始数据") + { + //读取头 + tempStr = MyReader.ReadString(); + indColmun = new Dictionary(); + int channelCount = 0; + while (tempStr != "/r/n") + { + indColmun.Add(tempStr, channelCount); + tempStr = MyReader.ReadString(); + channelCount += 1; + } + SysParam.Instance.reSampleFre = Convert.ToInt32(MyReader.ReadSingle()); + SysParam.Instance.reSamplePoint = Convert.ToInt32(MyReader.ReadSingle()); + //建立数据结构 + _originDataList = new List>(); + for (int i = 0; i < channelCount; i++) + { + //定义数据长度,避免自动扩充时溢出 + List listm = new List();// 30 * 60 * SysParam.Instance.reSampleFre); + _originDataList.Add(listm); + } + _originSpeedList = new List>();//存放速度和轧制距离 + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + List listm = new List(); + _originSpeedList.Add(listm); + } + _originDistanceList = new List(); + + //开始读取数据 + float signaldata = 0; + signaldata = MyReader.ReadSingle(); + SysParam.Instance.OrigDataNum = 0; + try + { + while (signaldata == Convert.ToSingle("1111")) + { + for (int i = 0; i < SysParam.Instance.reSamplePoint; i++) + { + for (int k = 0; k < channelCount; k++) + { + _originDataList[k].Add(MyReader.ReadSingle()); + } + } + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + _originSpeedList[i].Add(MyReader.ReadSingle()); + } + _originDistanceList.Add(MyReader.ReadSingle()); + signaldata = MyReader.ReadSingle(); + SysParam.Instance.OrigDataNum++; + _signalLengthOrigin = SysParam.Instance.OrigDataNum * SysParam.Instance.reSamplePoint; + } + } + catch (Exception) + { + for (int k = 0; k < channelCount; k++)////去掉读取不正确的那帧不完整的数据,将前面正确读取的部分保留 + { + for (int i = SysParam.Instance.OrigDataNum * SysParam.Instance.reSamplePoint; i < _originDataList[k].Count; i++) + { + _originDataList[k].RemoveAt(i); + } + } + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + for (int j = SysParam.Instance.OrigDataNum; j < _originSpeedList[i].Count; j++) + { + _originSpeedList[i].RemoveAt(j); + } + } + for (int i = SysParam.Instance.OrigDataNum; i < _originDistanceList.Count; i++) + { + _originDistanceList.RemoveAt(i); + } + } + + _signalLengthOrigin = _originDataList[0].Count; + MyReader.Close(); + myStream.Close(); + return true; + + } + MyReader.Close(); + myStream.Close(); + return false; + + } + catch (Exception) + { + return false; + } + } + + public string selectAlarmFile(string filePath) + { + //根据文件的时间选择对应时间段的报警配置文件 + if (!System.IO.Directory.Exists(SysParam.Instance.appPath + "//AlarmConfig//")) + { + //使用当前报警配置文件 + return SysParam.Instance.appPath + @"\AppSetting.config"; + } + FileInfo[] fileinfos = new DirectoryInfo(SysParam.Instance.appPath + @"\AlarmConfig\").GetFiles(); + FileInfo selectFile = null; + + DateTime myfileTime = new FileInfo(filePath).LastWriteTime; + DateTime selectFileTime = DateTime.Now; + + foreach (FileInfo thisfileinfo in fileinfos) + { + DateTime eachfiletime = thisfileinfo.LastWriteTime; + if (eachfiletime > myfileTime) + { + if (eachfiletime < selectFileTime) + { + selectFileTime = eachfiletime; + selectFile = thisfileinfo; + } + } + } + if (selectFile != null) + { + return selectFile.FullName; + } + else + { + //使用当前报警配置文件 + return SysParam.Instance.appPath + @"\AppSetting.config"; + } + } + } + +} + diff --git a/CIDExcuter/LogicConnect.cs b/CIDExcuter/LogicConnect.cs new file mode 100644 index 0000000..95c67ef --- /dev/null +++ b/CIDExcuter/LogicConnect.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using CRVM.Utility; +using System.Data; +using System.Collections; + +using System.Data.OleDb; + +namespace CRVM.CIDExcuter +{ + public class LogicConnect + { + private IDBAccess projDB = null; + private StringConnectItem connstrItem = null; + public EDBItem dbItem; + private string connstr = ""; + private string tablestr; + + public LogicConnect(EDBItem dbItem, string tablestr) + { + + this.dbItem = dbItem; + this.tablestr = tablestr; + ConnectStrs(dbItem); + } + + public void ConnectStrs(EDBItem dbItem) + { + // dbItem = connstrItem.dbItem; + + if (dbItem != null) + { + connstrItem = new StringConnectItem(); + connstr = StringConnectItem.InitialStrConn(dbItem); + projDB = DBFactory.CreateAccess(dbItem.DataType); + } + else + { + throw new Exception("请配置数据库数据!"); + } + } + public DataTable SelTableData(string tablename) + { + DataTable dt = new DataTable(); + dt = projDB.SelTableData(tablename, connstr); + return dt; + } + public DataTable SelTableData(string tablename,string sql) + { + DataTable dt = new DataTable(); + dt = projDB.SelTableData(tablename,connstr,sql ); + return dt; + } + public DataTable DataBase(string sql) + { + DataTable dt = new DataTable(); + dt = projDB.DataBase(connstr, sql); + return dt; + } + /// + /// 获取事件信息 + /// + /// + public DataTable GetEventInfo(ShowStyle style) + { + string sql = "select seq, eventname, field,datavalue,status,tom from T_BPC_TRIGGER order by seq asc"; + DataTable dt = new DataTable(); + dt = projDB.GetData(connstr, sql, style); + return dt; + } + + } +} + diff --git a/CIDExcuter/Machine.cs b/CIDExcuter/Machine.cs new file mode 100644 index 0000000..0782a03 --- /dev/null +++ b/CIDExcuter/Machine.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using CRVM.Entity; + +namespace CRVM.CIDExcuter +{ + + public class Machine + { + private Stand[] stands; + + public Stand[] Stand + { + get { return stands; } + set { stands = value; } + } + //当前卷开始时间 + public DateTime startTime { set; get; } + //起始位置 + public UInt32 lenCountStart { get; set; } + //当前剪切计数器计数值 + public UInt32 lenCountNow { get; set; } + //剪切状态 + public bool cutted { get; set; } + //轧制总长度 + public int cutLength { get; set; } + //当前轧制长度 + public double stripLength { get; set; } + //出口线速度 + public double lengthSpeed { get; set; } + + public RollingArray distance_Running { get; set; }//持续更新的各点轧制距离信息 + + public double[] distance_Pause { get; set; }//暂存各点轧制距离信息 + + //能量曲线时间轴上的数据点 + public RollingArray xAxisEnergy { get; set; } + + public double[] xAxisTime { set; get; } + + + public List list_CutTime { set; get; } + + //public int index { get; set; } + + + public Machine(int stdCount, int vibLength, int tvibLength, int energyLength) + { + xAxisEnergy = new RollingArray(energyLength + 1); + distance_Running = new RollingArray(energyLength + 1); + xAxisTime = new double[tvibLength]; + list_CutTime = new List(); + for (int i = energyLength; i >= 0; i--) + { + xAxisEnergy.Add(DateTime.Now.AddSeconds(-i * Convert.ToDouble(SysParam.Instance.samplePoint) / SysParam.Instance.sampleFre).ToOADate()); + distance_Running.Add(0.0); + } + for (int i = 0; i < tvibLength; i++) + { + xAxisTime[i] = Convert.ToDouble(i) / SysParam.Instance.sampleFre; + } + stands = new Stand[stdCount]; + lengthSpeed = 0; + for (int i = 0; i < stdCount; i++) + { + Stand std = new Stand(); + std.Initial(vibLength, tvibLength, energyLength); + stands[i] = std; + } + } + + //数据回放用 + public string review_coldcoilno { get; set; } + public string review_entThick { get; set; } + public string review_extThick { get; set; } + public string review_width { get; set; } + public string review_steelGrade { get; set; } + public string review_alloyCode { get; set; } + + } +} diff --git a/CIDExcuter/Properties/AssemblyInfo.cs b/CIDExcuter/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7ce2a29 --- /dev/null +++ b/CIDExcuter/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("CIDExcuter")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CIDExcuter")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("31396fdf-18b7-43c2-89d6-ef19bdb9575a")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CIDExcuter/Stand.cs b/CIDExcuter/Stand.cs new file mode 100644 index 0000000..1ee00e6 --- /dev/null +++ b/CIDExcuter/Stand.cs @@ -0,0 +1,342 @@ +using System; +using System.Collections.Generic; +using CRVM.Entity; + +namespace CRVM.CIDExcuter +{ + //[DataContract] + public class Stand + { + + public double[] vib { get; set; } + public double[] vibLow { get; set; } + public double[] vibMid { get; set; } + public double[] vibHig { get; set; } + + //分频段能量、速度 + public double energy_All { get; set; } + public double energy_L { get; set; } + public double energy_M { get; set; } + public double energy_H { get; set; } + public double speed { get; set; } + + + + //用于绘制时域曲线 + public double[] tVib { get; set; } + + + //用于绘制能量曲线 + public RollingArray list_Energy_All { get; set; } + public RollingArray list_Energy_L { get; set; } + public RollingArray list_Energy_M { get; set; } + public RollingArray list_Energy_H { get; set; } + public RollingArray list_Energy_Speed { get; set; } + + //用于绘制报警线 + + public RollingArray list_Alarm_L { set; get; } + public RollingArray list_Alarm_M { set; get; } + public RollingArray list_Alarm_H { set; get; } + + //用于绘制缺陷线 + public RollingArray list_Defect_L { set; get; } + public RollingArray list_Defect_M { set; get; } + public RollingArray list_Defect_H { set; get; } + + #region 报警参数插值算法 + private EntityAlarmSpeed[] _alarm_spd = new EntityAlarmSpeed[10]; + + public EntityAlarmSpeed[] alarm_spd + { + get { return _alarm_spd; } + set { _alarm_spd = value; } + } + public int[] fre_l_S1 { get; set; } + public int[] fre_l_S2 { get; set; } + public double[] fre_l_V { get; set; } + public double[] fre_l_D { get; set; } + public int[] fre_m_S1 { get; set; } + public int[] fre_m_S2 { get; set; } + public double[] fre_m_V { get; set; } + public double[] fre_m_D { get; set; } + public int[] fre_h_S1 { get; set; } + public int[] fre_h_S2 { get; set; } + public double[] fre_h_V { get; set; } + public double[] fre_h_D { get; set; } + + public void SetAlarmFred(EntityAlarmSpeed[] alarmspd) + { + _alarm_spd = alarmspd; + if (_alarm_spd != null) + { + if (_alarm_spd.Length <= 1) + { + fre_l_S1 = new int[1]; + fre_l_S2 = new int[1]; + fre_l_V = new double[1]; + fre_l_D = new double[1]; + fre_m_S1 = new int[1]; + fre_m_S2 = new int[1]; + fre_m_V = new double[1]; + fre_m_D = new double[1]; + fre_h_S1 = new int[1]; + fre_h_S2 = new int[1]; + fre_h_V = new double[1]; + fre_h_D = new double[1]; + fre_l_S1[0] = _alarm_spd[0].lowPassL; + fre_l_S2[0] = _alarm_spd[0].lowPassU; + fre_l_V[0] = _alarm_spd[0].lowAlarmValue; + fre_l_D[0] = _alarm_spd[0].lowDefectValue; + fre_m_S1[0] = _alarm_spd[0].midPassL; + fre_m_S2[0] = _alarm_spd[0].midPassU; + fre_m_V[0] = _alarm_spd[0].midAlarmValue; + fre_m_D[0] = _alarm_spd[0].midDefectValue; + fre_h_S1[0] = _alarm_spd[0].highPassL; + fre_h_S2[0] = _alarm_spd[0].highPassU; + fre_h_V[0] = _alarm_spd[0].highAlarmValue; + fre_h_D[0] = _alarm_spd[0].highDefectValue; + } + else + { + int iIndCount = _alarm_spd[_alarm_spd.Length - 1].alarmSpeed - _alarm_spd[0].alarmSpeed + 1; + + fre_l_S1 = new int[iIndCount]; + fre_l_S2 = new int[iIndCount]; + fre_l_V = new double[iIndCount]; + fre_l_D = new double[iIndCount]; + fre_m_S1 = new int[iIndCount]; + fre_m_S2 = new int[iIndCount]; + fre_m_V = new double[iIndCount]; + fre_m_D = new double[iIndCount]; + fre_h_S1 = new int[iIndCount]; + fre_h_S2 = new int[iIndCount]; + fre_h_V = new double[iIndCount]; + fre_h_D = new double[iIndCount]; + + fre_l_S1[0] = _alarm_spd[0].lowPassL; + fre_l_S2[0] = _alarm_spd[0].lowPassU; + fre_l_V[0] = _alarm_spd[0].lowAlarmValue; + fre_l_D[0] = _alarm_spd[0].lowDefectValue; + fre_m_S1[0] = _alarm_spd[0].midPassL; + fre_m_S2[0] = _alarm_spd[0].midPassU; + fre_m_V[0] = _alarm_spd[0].midAlarmValue; + fre_m_D[0] = _alarm_spd[0].midDefectValue; + fre_h_S1[0] = _alarm_spd[0].highPassL; + fre_h_S2[0] = _alarm_spd[0].highPassU; + fre_h_V[0] = _alarm_spd[0].highAlarmValue; + fre_h_D[0] = _alarm_spd[0].highDefectValue; + + int i_start_l_s1 = _alarm_spd[0].lowPassL; + int i_start_l_s2 = _alarm_spd[0].lowPassU; + double i_start_l_v = _alarm_spd[0].lowAlarmValue; + double i_start_l_d = _alarm_spd[0].lowDefectValue; + int i_start_m_s1 = _alarm_spd[0].midPassL; + int i_start_m_s2 = _alarm_spd[0].midPassU; + double i_start_m_v = _alarm_spd[0].midAlarmValue; + double i_start_m_d = _alarm_spd[0].midDefectValue; + int i_start_h_s1 = _alarm_spd[0].highPassL; + int i_start_h_s2 = _alarm_spd[0].highPassU; + double i_start_h_v = _alarm_spd[0].highAlarmValue; + double i_start_h_d = _alarm_spd[0].highDefectValue; + int i_start_spd = _alarm_spd[0].alarmSpeed; + + int i_end_l_s1, i_end_l_s2, i_end_m_s1, i_end_m_s2, i_end_h_s1, i_end_h_s2, i_end_spd; + double i_end_l_v, i_end_m_v, i_end_h_v, i_end_l_d, i_end_m_d, i_end_h_d; + double i_step_l_s1, i_step_l_s2, i_step_l_v, i_step_l_d, i_step_m_s1, i_step_m_s2, i_step_m_v, i_step_m_d, i_step_h_s1, i_step_h_s2, i_step_h_v, i_step_h_d; + int i_sub_tmp = 0; + int i_index = 0; + for (int i = 1; i < _alarm_spd.Length; i++) + { + i_end_l_s1 = _alarm_spd[i].lowPassL; + i_end_l_s2 = _alarm_spd[i].lowPassU; + i_end_l_v = _alarm_spd[i].lowAlarmValue; + i_end_l_d = _alarm_spd[i].lowDefectValue; + i_end_m_s1 = _alarm_spd[i].midPassL; + i_end_m_s2 = _alarm_spd[i].midPassU; + i_end_m_v = _alarm_spd[i].midAlarmValue; + i_end_m_d = _alarm_spd[i].midDefectValue; + i_end_h_s1 = _alarm_spd[i].highPassL; + i_end_h_s2 = _alarm_spd[i].highPassU; + i_end_h_v = _alarm_spd[i].highAlarmValue; + i_end_h_d = _alarm_spd[i].highDefectValue; + + i_end_spd = _alarm_spd[i].alarmSpeed; + i_sub_tmp = i_end_spd - i_start_spd; + i_step_l_s1 = ((i_end_l_s1 - i_start_l_s1) / (i_sub_tmp * 1.0f)); + i_step_l_s2 = ((i_end_l_s2 - i_start_l_s2) / (i_sub_tmp * 1.0f)); + i_step_l_v = ((i_end_l_v - i_start_l_v) / (i_sub_tmp * 1.0f)); + i_step_l_d = ((i_end_l_d - i_start_l_d) / (i_sub_tmp * 1.0f)); + i_step_m_s1 = ((i_end_m_s1 - i_start_m_s1) / (i_sub_tmp * 1.0f)); + i_step_m_s2 = ((i_end_m_s2 - i_start_m_s2) / (i_sub_tmp * 1.0f)); + i_step_m_v = ((i_end_m_v - i_start_m_v) / (i_sub_tmp * 1.0f)); + i_step_m_d = ((i_end_m_d - i_start_m_d) / (i_sub_tmp * 1.0f)); + i_step_h_s1 = ((i_end_h_s1 - i_start_h_s1) / (i_sub_tmp * 1.0f)); + i_step_h_s2 = ((i_end_h_s2 - i_start_h_s2) / (i_sub_tmp * 1.0f)); + i_step_h_v = ((i_end_h_v - i_start_h_v) / (i_sub_tmp * 1.0f)); + i_step_h_d = ((i_end_h_d - i_start_h_d) / (i_sub_tmp * 1.0f)); + + for (int k = 1; k <= i_sub_tmp; k++) + { + fre_l_S1[k + i_index] = Convert.ToInt32(i_start_l_s1 + i_step_l_s1 * (k - 1)); + fre_l_S2[k + i_index] = Convert.ToInt32(i_start_l_s2 + i_step_l_s2 * (k - 1)); + fre_l_V[k + i_index] = (i_start_l_v + i_step_l_v * (k - 1)); + fre_l_D[k + i_index] = (i_start_l_d + i_step_l_d * (k - 1)); + fre_m_S1[k + i_index] = Convert.ToInt32(i_start_m_s1 + i_step_m_s1 * (k - 1)); + fre_m_S2[k + i_index] = Convert.ToInt32(i_start_m_s2 + i_step_m_s2 * (k - 1)); + fre_m_V[k + i_index] = (i_start_m_v + i_step_m_v * (k - 1)); + fre_m_D[k + i_index] = (i_start_m_d + i_step_m_d * (k - 1)); + fre_h_S1[k + i_index] = Convert.ToInt32(i_start_h_s1 + i_step_h_s1 * (k - 1)); + fre_h_S2[k + i_index] = Convert.ToInt32(i_start_h_s2 + i_step_h_s2 * (k - 1)); + fre_h_V[k + i_index] = (i_start_h_v + i_step_h_v * (k - 1)); + fre_h_D[k + i_index] = (i_start_h_d + i_step_h_d * (k - 1)); + } + + i_start_l_s1 = i_end_l_s1; + i_start_l_s2 = i_end_l_s2; + i_start_l_v = i_end_l_v; + i_start_l_d = i_end_l_d; + i_start_m_s1 = i_end_m_s1; + i_start_m_s2 = i_end_m_s2; + i_start_m_v = i_end_m_v; + i_start_m_d = i_end_m_d; + i_start_h_s1 = i_end_h_s1; + i_start_h_s2 = i_end_h_s2; + i_start_h_v = i_end_h_v; + i_start_h_d = i_end_h_d; + i_start_spd = i_end_spd; + + i_index += i_sub_tmp; + + fre_l_S1[i_index] = _alarm_spd[i].lowPassL; + fre_l_S2[i_index] = _alarm_spd[i].lowPassU; + fre_l_V[i_index] = _alarm_spd[i].lowAlarmValue; + fre_l_D[i_index] = _alarm_spd[i].lowDefectValue; + fre_m_S1[i_index] = _alarm_spd[i].midPassL; + fre_m_S2[i_index] = _alarm_spd[i].midPassU; + fre_m_V[i_index] = _alarm_spd[i].midAlarmValue; + fre_m_D[i_index] = _alarm_spd[i].midDefectValue; + fre_h_S1[i_index] = _alarm_spd[i].highPassL; + fre_h_S2[i_index] = _alarm_spd[i].highPassU; + fre_h_V[i_index] = _alarm_spd[i].highAlarmValue; + fre_h_D[i_index] = _alarm_spd[i].highDefectValue; + } + + fre_l_S1[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].lowPassL; + fre_l_S2[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].lowPassU; + fre_l_V[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].lowAlarmValue; + fre_l_D[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].lowDefectValue; + fre_m_S1[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].midPassL; + fre_m_S2[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].midPassU; + fre_m_V[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].midAlarmValue; + fre_m_D[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].midDefectValue; + fre_h_S1[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].highPassL; + fre_h_S2[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].highPassU; + fre_h_V[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].highAlarmValue; + fre_h_D[iIndCount - 1] = _alarm_spd[_alarm_spd.Length - 1].highDefectValue; + } + } + } + + #endregion + + #region 报警参数 + + //分频频率范围 + public int band_Fre_L1 { get; set; } + public int band_Fre_L2 { get; set; } + public int band_Fre_M1 { get; set; } + public int band_Fre_M2 { get; set; } + public int band_Fre_H1 { get; set; } + public int band_Fre_H2 { get; set; } + + + //报警参考值 + public double alarm_L_Value_ck { get; set; } + public double alarm_M_Value_ck { get; set; } + public double alarm_H_Value_ck { get; set; } + + public double defect_L_Value_ck { get; set; } + public double defect_M_Value_ck { get; set; } + public double defect_H_Value_ck { get; set; } + //报警参考次数 + public int alarm_L_Times_ck { get; set; } + public int alarm_M_Times_ck { get; set; } + public int alarm_H_Times_ck { get; set; } + + //记录能量值超过报警线次数 + public int alarm_L_Times { get; set; } + public int alarm_M_Times { get; set; } + public int alarm_H_Times { get; set; } + + + public class AlarmInfo + { + public DateTime time { set; get; } + public int startPos { set; get; } + public int endPos { set; get; } + public double value { set; get; } + } + public int tempAlarmLowInfostart { set; get; } + public int tempAlarmMidInfostart { set; get; } + public int tempAlarmHighInfostart { set; get; } + + public List alarmLowInfo = new List(); + public List alarmMidInfo = new List(); + public List alarmHighInfo = new List(); + + + + //统计报警次数 + public int indexLow { get; set; } + public int indexMid { get; set; } + public int indexHigh { get; set; } + + #endregion + + public double rollDiameterBU { set; get; } + public double rollDiameterBL { set; get; } + public double rollDiameterMU { set; get; } + public double rollDiameterML { set; get; } + public double rollDiameterWU { set; get; } + public double rollDiameterWL { set; get; } + + public void Initial(int vibLength, int tvibLength, int energyLength) + { + vib = new double[vibLength]; + vibLow = new double[vibLength]; + vibMid = new double[vibLength]; + vibHig = new double[vibLength]; + tVib = new double[tvibLength]; + + list_Energy_Speed = new RollingArray(energyLength + 1); + list_Energy_All = new RollingArray(energyLength + 1); + list_Energy_L = new RollingArray(energyLength + 1); + list_Energy_M = new RollingArray(energyLength + 1); + list_Energy_H = new RollingArray(energyLength + 1); + + list_Alarm_L = new RollingArray(energyLength + 1); + list_Alarm_M = new RollingArray(energyLength + 1); + list_Alarm_H = new RollingArray(energyLength + 1); + + list_Defect_L = new RollingArray(energyLength + 1); + list_Defect_M = new RollingArray(energyLength + 1); + list_Defect_H = new RollingArray(energyLength + 1); + for (int i = 0; i < energyLength + 1; i++) + { + list_Energy_Speed.Add(0.0); + list_Energy_All.Add(0.0); + list_Energy_L.Add(0.0); + list_Energy_M.Add(0.0); + list_Energy_H.Add(0.0); + list_Alarm_L.Add(0.0); + list_Alarm_M.Add(0.0); + list_Alarm_H.Add(0.0); + list_Defect_L.Add(0.0); + list_Defect_M.Add(0.0); + list_Defect_H.Add(0.0); + } + } + + } +} diff --git a/CIDExcuter/app.config b/CIDExcuter/app.config new file mode 100644 index 0000000..e03ea0a --- /dev/null +++ b/CIDExcuter/app.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CIDExcuter/packages.config b/CIDExcuter/packages.config new file mode 100644 index 0000000..09c7121 --- /dev/null +++ b/CIDExcuter/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CRVM.sln b/CRVM.sln new file mode 100644 index 0000000..779d536 --- /dev/null +++ b/CRVM.sln @@ -0,0 +1,168 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33214.272 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Host", "Host\Host.csproj", "{D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "client", "client\client.csproj", "{5FBBA2DF-49A3-4C0E-B667-4E552317E03B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IDriver", "Driver\IDriver.csproj", "{CA99539C-836B-4670-A392-59892C40CB79}" + ProjectSection(ProjectDependencies) = postProject + {883A056A-E138-47C0-B8E5-F23FD82F0631} = {883A056A-E138-47C0-B8E5-F23FD82F0631} + {6EA706F6-065D-469E-AB39-7395D780548B} = {6EA706F6-065D-469E-AB39-7395D780548B} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Entity", "Entity\Entity.csproj", "{6EA706F6-065D-469E-AB39-7395D780548B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utility", "Utility\Utility.csproj", "{883A056A-E138-47C0-B8E5-F23FD82F0631}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICService", "ICService\ICService.csproj", "{98DC5466-7295-439A-BBCA-A5D4DC219776}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SIDExcuter", "IDExcuter\SIDExcuter.csproj", "{A6D7F927-E946-40C5-B5E7-0EE05706E0F7}" + ProjectSection(ProjectDependencies) = postProject + {6EA706F6-065D-469E-AB39-7395D780548B} = {6EA706F6-065D-469E-AB39-7395D780548B} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HBase", "HBase\HBase.csproj", "{27D3BA32-12D4-484E-83D0-573D30FC2A60}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CIDExcuter", "CIDExcuter\CIDExcuter.csproj", "{B8CE572A-4981-4E0C-9E85-8AF0503360E3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RestApi", "RestApi\RestApi.csproj", "{BAF20FD6-881E-470C-97F3-38769D49BA66}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "ClientSetup", "ClientSetup\ClientSetup.vdproj", "{EE026F3B-4A51-4DAB-A75D-65074FC2E787}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "HostSetup", "HostSetup\HostSetup.vdproj", "{37881901-C81A-41A2-B958-0F87B760F218}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Debug|Any CPU.ActiveCfg = Debug|x86 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Debug|x86.ActiveCfg = Debug|x86 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Debug|x86.Build.0 = Debug|x86 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Release|Any CPU.ActiveCfg = Release|x86 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Release|Mixed Platforms.Build.0 = Release|x86 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Release|x86.ActiveCfg = Release|x86 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8}.Release|x86.Build.0 = Release|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Debug|Any CPU.ActiveCfg = Debug|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Debug|x86.ActiveCfg = Debug|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Debug|x86.Build.0 = Debug|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Release|Any CPU.ActiveCfg = Release|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Release|Mixed Platforms.Build.0 = Release|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Release|x86.ActiveCfg = Release|x86 + {5FBBA2DF-49A3-4C0E-B667-4E552317E03B}.Release|x86.Build.0 = Release|x86 + {CA99539C-836B-4670-A392-59892C40CB79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CA99539C-836B-4670-A392-59892C40CB79}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CA99539C-836B-4670-A392-59892C40CB79}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CA99539C-836B-4670-A392-59892C40CB79}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CA99539C-836B-4670-A392-59892C40CB79}.Debug|x86.ActiveCfg = Debug|Any CPU + {CA99539C-836B-4670-A392-59892C40CB79}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CA99539C-836B-4670-A392-59892C40CB79}.Release|Any CPU.Build.0 = Release|Any CPU + {CA99539C-836B-4670-A392-59892C40CB79}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {CA99539C-836B-4670-A392-59892C40CB79}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {CA99539C-836B-4670-A392-59892C40CB79}.Release|x86.ActiveCfg = Release|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Debug|x86.ActiveCfg = Debug|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Release|Any CPU.Build.0 = Release|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {6EA706F6-065D-469E-AB39-7395D780548B}.Release|x86.ActiveCfg = Release|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Debug|Any CPU.Build.0 = Debug|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Debug|x86.ActiveCfg = Debug|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Release|Any CPU.ActiveCfg = Release|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Release|Any CPU.Build.0 = Release|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {883A056A-E138-47C0-B8E5-F23FD82F0631}.Release|x86.ActiveCfg = Release|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Debug|x86.ActiveCfg = Debug|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Release|Any CPU.ActiveCfg = Release|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Release|Any CPU.Build.0 = Release|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {98DC5466-7295-439A-BBCA-A5D4DC219776}.Release|x86.ActiveCfg = Release|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Debug|x86.ActiveCfg = Debug|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Release|Any CPU.Build.0 = Release|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {A6D7F927-E946-40C5-B5E7-0EE05706E0F7}.Release|x86.ActiveCfg = Release|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Debug|Any CPU.Build.0 = Debug|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Debug|x86.ActiveCfg = Debug|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Release|Any CPU.ActiveCfg = Release|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Release|Any CPU.Build.0 = Release|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {27D3BA32-12D4-484E-83D0-573D30FC2A60}.Release|x86.ActiveCfg = Release|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Debug|x86.ActiveCfg = Debug|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Release|Any CPU.Build.0 = Release|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B8CE572A-4981-4E0C-9E85-8AF0503360E3}.Release|x86.ActiveCfg = Release|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Debug|x86.ActiveCfg = Debug|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Debug|x86.Build.0 = Debug|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Release|Any CPU.Build.0 = Release|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Release|x86.ActiveCfg = Release|Any CPU + {BAF20FD6-881E-470C-97F3-38769D49BA66}.Release|x86.Build.0 = Release|Any CPU + {EE026F3B-4A51-4DAB-A75D-65074FC2E787}.Debug|Any CPU.ActiveCfg = Debug + {EE026F3B-4A51-4DAB-A75D-65074FC2E787}.Debug|Mixed Platforms.ActiveCfg = Debug + {EE026F3B-4A51-4DAB-A75D-65074FC2E787}.Debug|x86.ActiveCfg = Debug + {EE026F3B-4A51-4DAB-A75D-65074FC2E787}.Release|Any CPU.ActiveCfg = Release + {EE026F3B-4A51-4DAB-A75D-65074FC2E787}.Release|Mixed Platforms.ActiveCfg = Release + {EE026F3B-4A51-4DAB-A75D-65074FC2E787}.Release|x86.ActiveCfg = Release + {37881901-C81A-41A2-B958-0F87B760F218}.Debug|Any CPU.ActiveCfg = Debug + {37881901-C81A-41A2-B958-0F87B760F218}.Debug|Mixed Platforms.ActiveCfg = Debug + {37881901-C81A-41A2-B958-0F87B760F218}.Debug|x86.ActiveCfg = Debug + {37881901-C81A-41A2-B958-0F87B760F218}.Release|Any CPU.ActiveCfg = Release + {37881901-C81A-41A2-B958-0F87B760F218}.Release|Mixed Platforms.ActiveCfg = Release + {37881901-C81A-41A2-B958-0F87B760F218}.Release|x86.ActiveCfg = Release + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {35863DD0-104E-45F3-9420-82E30025A77B} + EndGlobalSection +EndGlobal diff --git a/ClientSetup/ClientSetup.vdproj b/ClientSetup/ClientSetup.vdproj new file mode 100644 index 0000000..62f2839 --- /dev/null +++ b/ClientSetup/ClientSetup.vdproj @@ -0,0 +1,1350 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:ClientSetup" +"LanguageId" = "3:2052" +"CodePage" = "3:936" +"UILanguageId" = "3:2052" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_00AD86FDB6584CE7B84B5E120C88B5E8" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_012FAFA837D224600DE9BAC5D0995464" + "OwnerKey" = "8:_AF73921C52EAEBE4BCDED1C1D8A1BAC4" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_012FAFA837D224600DE9BAC5D0995464" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_0D58FBB69D65D7AF6ADABE56BBCB4C1F" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_47389D3B97744CD7A695E49EFEFE3075" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5D3973177D7FE12045EC38FA7A09A147" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5E3C6AAA3D544BADB5EC87D609C24DD1" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_6D5307AF61D242ED8EB27C12DF0D29EC" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7A7DAEC259B8379FCD6CF4492785116D" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7C16764EF6BF9DD59C4DB583510B2034" + "OwnerKey" = "8:_7A7DAEC259B8379FCD6CF4492785116D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7C16764EF6BF9DD59C4DB583510B2034" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_AF73921C52EAEBE4BCDED1C1D8A1BAC4" + "OwnerKey" = "8:_7A7DAEC259B8379FCD6CF4492785116D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_AF73921C52EAEBE4BCDED1C1D8A1BAC4" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_BFA0907C9BD64635B8B746BEF0DB8BCC" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_D44D7A8B032AC23E86D40A7A3F35C34C" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_D8A6478CD34D43FFBFB50D64BA6F6954" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_E32912BCDCF6A15AFE11CD35448EFD07" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_EDD8D54729F7E13E91379C6FC5CF00CA" + "OwnerKey" = "8:_012FAFA837D224600DE9BAC5D0995464" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_EDD8D54729F7E13E91379C6FC5CF00CA" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F47130263B7F4658BA9BFD0BFB2FCEED" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_D44D7A8B032AC23E86D40A7A3F35C34C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_E32912BCDCF6A15AFE11CD35448EFD07" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_0D58FBB69D65D7AF6ADABE56BBCB4C1F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_5D3973177D7FE12045EC38FA7A09A147" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_7A7DAEC259B8379FCD6CF4492785116D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_AF73921C52EAEBE4BCDED1C1D8A1BAC4" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_012FAFA837D224600DE9BAC5D0995464" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_EDD8D54729F7E13E91379C6FC5CF00CA" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_7C16764EF6BF9DD59C4DB583510B2034" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\ClientSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2" + { + "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.7.2" + } + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\ClientSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2" + { + "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.7.2" + } + } + } + } + } + "Deployable" + { + "CustomAction" + { + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_384D3A84D87A4718B8C5136777473F99" + { + "Name" = "8:主输出 from client (Active)" + "Condition" = "8:" + "Object" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "FileType" = "3:2" + "InstallAction" = "3:4" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_BF9B40FB_6203_46D3_BFD4_E052FF605DC9" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_5E892E381A474504A69BFEA16FD44676" + { + "Name" = "8:主输出 from client (Active)" + "Condition" = "8:" + "Object" = "8:_54376E4030E04C8D89F0E2A7DCA344A3" + "FileType" = "3:2" + "InstallAction" = "3:1" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_7AFCE846_27F0_4848_8729_CDE2E84D3DCA" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_2247B8E7B2F640EC9E2F63F47FDE9CE8" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.7.2" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262" + } + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_00AD86FDB6584CE7B84B5E120C88B5E8" + { + "SourcePath" = "8:..\\client\\bin\\Debug\\用户使用手册.pdf" + "TargetName" = "8:用户使用手册.pdf" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_012FAFA837D224600DE9BAC5D0995464" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Npgsql, Version=2.0.11.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_012FAFA837D224600DE9BAC5D0995464" + { + "Name" = "8:Npgsql.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Npgsql.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_0D58FBB69D65D7AF6ADABE56BBCB4C1F" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:WeifenLuo.WinFormsUI.Docking, Version=2.3.1.27669, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_0D58FBB69D65D7AF6ADABE56BBCB4C1F" + { + "Name" = "8:WeifenLuo.WinFormsUI.Docking.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:WeifenLuo.WinFormsUI.Docking.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_47389D3B97744CD7A695E49EFEFE3075" + { + "SourcePath" = "8:..\\client\\high.wav" + "TargetName" = "8:high.wav" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5D3973177D7FE12045EC38FA7A09A147" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:TcmControl, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_5D3973177D7FE12045EC38FA7A09A147" + { + "Name" = "8:TcmControl.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:TcmControl.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5E3C6AAA3D544BADB5EC87D609C24DD1" + { + "SourcePath" = "8:..\\client\\mid.wav" + "TargetName" = "8:mid.wav" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6D5307AF61D242ED8EB27C12DF0D29EC" + { + "SourcePath" = "8:..\\client\\app.config" + "TargetName" = "8:app.config" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7A7DAEC259B8379FCD6CF4492785116D" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:CIDExcuter, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_7A7DAEC259B8379FCD6CF4492785116D" + { + "Name" = "8:CIDExcuter.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:CIDExcuter.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7C16764EF6BF9DD59C4DB583510B2034" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Entity, Version=0.0.0.0, Culture=neutral, processorArchitecture=x86" + "ScatterAssemblies" + { + "_7C16764EF6BF9DD59C4DB583510B2034" + { + "Name" = "8:Entity.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Entity.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_AF73921C52EAEBE4BCDED1C1D8A1BAC4" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Utility, Version=0.0.0.0, Culture=neutral, processorArchitecture=x86" + "ScatterAssemblies" + { + "_AF73921C52EAEBE4BCDED1C1D8A1BAC4" + { + "Name" = "8:Utility.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Utility.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BFA0907C9BD64635B8B746BEF0DB8BCC" + { + "SourcePath" = "8:..\\client\\low.wav" + "TargetName" = "8:low.wav" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_D44D7A8B032AC23E86D40A7A3F35C34C" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:ICService, Version=0.0.0.0, Culture=neutral, processorArchitecture=x86" + "ScatterAssemblies" + { + "_D44D7A8B032AC23E86D40A7A3F35C34C" + { + "Name" = "8:ICService.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:ICService.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D8A6478CD34D43FFBFB50D64BA6F6954" + { + "SourcePath" = "8:..\\client\\dbaccess.conf" + "TargetName" = "8:dbaccess.conf" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E32912BCDCF6A15AFE11CD35448EFD07" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:ZedGraph, Version=5.1.5.17238, Culture=neutral, PublicKeyToken=02a83cbd123fcd60, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_E32912BCDCF6A15AFE11CD35448EFD07" + { + "Name" = "8:ZedGraph.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:ZedGraph.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EDD8D54729F7E13E91379C6FC5CF00CA" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_EDD8D54729F7E13E91379C6FC5CF00CA" + { + "Name" = "8:Mono.Security.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Mono.Security.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F47130263B7F4658BA9BFD0BFB2FCEED" + { + "SourcePath" = "8:..\\client\\AppSetting.config" + "TargetName" = "8:AppSetting.config" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_64E4FD71B79F40F19AB36A3E5D78831E" + { + "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_B543D82497024122B6EA1C9726781EE8" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_C11D14377CD04D238E63130CB2E62A11" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:2052" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:ClientSetup" + "ProductCode" = "8:{F210F514-78CC-4927-BCD2-06BEC09129D1}" + "PackageCode" = "8:{90C95A96-B8AE-40AA-B6C5-C974F6669733}" + "UpgradeCode" = "8:{C9E88C8E-17A6-4A06-8647-E6A89E706AD3}" + "AspNetVersion" = "8:2.0.50727.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:FALSE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:1.0.0" + "Manufacturer" = "8:Huamonarch" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:ClientSetup" + "Subject" = "8:" + "ARPCONTACT" = "8:Huamonarch" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:" + "ARPURLINFOABOUT" = "8:" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_4737BEFEF74A4671AD8EC45500983D62" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_9F699E0E08684C778CA96101B7B4CCFC" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_1AB57D7DFD754CEC9467776CFF89A2DF" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_38F4CD6B9A4242C8814C9C9E9151BC03" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + } + "UserInterface" + { + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_1C84EA97927F4F368E7EC431AF2C559E" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0AB98DAA34B948F8B77C9A5B278B903B" + { + "Sequence" = "3:100" + "DisplayName" = "8:进度" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_598E9630530E4CB58DE84CDDD785BDF7" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_9DC4E8E231384ACAB8FA8DF4022BDE96" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8A36C40891CB4D7C89BF83DDFF764825" + { + "Sequence" = "3:100" + "DisplayName" = "8:欢迎使用" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CF2C65C014364824B5B8C83516B64A38" + { + "Sequence" = "3:300" + "DisplayName" = "8:确认安装" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D116586FBF554DFBBB45AB511C4FE3BF" + { + "Sequence" = "3:200" + "DisplayName" = "8:安装文件夹" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A78DFBC56942497ABC033C44941AB096" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CD9513F6FEAC4D888FB05F740B233575" + { + "Sequence" = "3:100" + "DisplayName" = "8:已完成" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A9EFD5CEE1C14C72BD13151BFA0A0A50" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2C791E483761436580795EF22C3102F2" + { + "Sequence" = "3:100" + "DisplayName" = "8:进度" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_CD2BE07442364AFEAC6E586A340263BA" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_05C705006B9A46F7BD899ED9961A8DDD" + { + "Sequence" = "3:100" + "DisplayName" = "8:已完成" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_E6B580E54F8F4158AB99252DE59EA404" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_F80D48FD506E4410A2C6119E00EA55CE" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_082F83A31C794C94A319D43E6FC80977" + { + "Sequence" = "3:300" + "DisplayName" = "8:确认安装" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_35A40A739C6A452CA456143C207C1867" + { + "Sequence" = "3:200" + "DisplayName" = "8:安装文件夹" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CB5C2B0EE1A34724A2DE3AC5D92EF038" + { + "Sequence" = "3:100" + "DisplayName" = "8:欢迎使用" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_54376E4030E04C8D89F0E2A7DCA344A3" + { + "SourcePath" = "8:..\\client\\obj\\x86\\Debug\\client.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_64E4FD71B79F40F19AB36A3E5D78831E" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{5FBBA2DF-49A3-4C0E-B667-4E552317E03B}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/Driver/DaqDriver - 复制.cs.bak b/Driver/DaqDriver - 复制.cs.bak new file mode 100644 index 0000000..42be6d6 --- /dev/null +++ b/Driver/DaqDriver - 复制.cs.bak @@ -0,0 +1,149 @@ +using System; +using NationalInstruments.DAQmx; +using CRVM.Entity; +using CRVM.Utility; + +namespace CRVM.Driver +{ + public class DaqDriver + { + private double[,] vibdata; + private double[,] speeddata; + private double[] cutdata; + private double[] lendata; + + private Task myTask_Analog, myTask_Speed, myTask_Cut, myTask_Len; + private AnalogMultiChannelReader analogInReader, analogSpeedReader; + private AnalogSingleChannelReader analogCutReader, analogLenReader; + private Task runningTask; + private AsyncCallback analogCallback; + + public DaqDriver() + { + //修改为线程池任务 + new System.Threading.Tasks.Task(() => DaqStart()).Start(); + } + + public void DaqStart() + { + try + { + myTask_Analog = new Task(); + myTask_Cut = new Task(); + myTask_Len = new Task(); + myTask_Speed = new Task(); + + //振动信号 加速度信号 1~8通道 1~5通道对应1~5机架的振动信号 6~8通道预留 + for (int i = 0; i < 4; i++) + { + myTask_Analog.AIChannels.CreateAccelerometerChannel("Vib1/ai" + i.ToString(), "", AITerminalConfiguration.Pseudodifferential, -5.0, 5.0, + SysParam.Instance.channel[i].vibSens, AIAccelerometerSensitivityUnits.MillivoltsPerG, AIExcitationSource.Internal, Convert.ToSingle(0.004), AIAccelerationUnits.G); + } + + for (int i = 0; i < 4; i++) + { + myTask_Analog.AIChannels.CreateAccelerometerChannel("Vib2/ai" + i.ToString(), "", AITerminalConfiguration.Pseudodifferential, -5.0, 5.0, + SysParam.Instance.channel[4 + i].vibSens, AIAccelerometerSensitivityUnits.MillivoltsPerG, AIExcitationSource.Internal, Convert.ToSingle(0.004), AIAccelerationUnits.G); + } + + //轧制速度 模拟电流信号4-20mA 1~2机架0-1000mpm 3~5机架0-1600mpm 单位(m/min) + for (int i = 0; i < 5; i++) + { + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai" + i.ToString(), "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + } + + //轧制距离 模拟电流信号4-20mA 0-200m锯齿波 单位m + myTask_Len.AIChannels.CreateCurrentChannel("L1signal/ai5", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + //剪切信号 模拟电流信号4-20mA <12 无剪切 >12剪切 + myTask_Cut.AIChannels.CreateCurrentChannel("L1signal/ai6", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + + //采样速率 + myTask_Analog.Timing.ConfigureSampleClock("", Convert.ToDouble(SysParam.Instance.sampleFre), SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1000); + + ////声明采集任务 + myTask_Analog.Control(TaskAction.Verify); + + //数据采集 + runningTask = myTask_Analog; + + analogInReader = new AnalogMultiChannelReader(myTask_Analog.Stream); + analogCutReader = new AnalogSingleChannelReader(myTask_Cut.Stream); + analogLenReader = new AnalogSingleChannelReader(myTask_Len.Stream); + analogSpeedReader = new AnalogMultiChannelReader(myTask_Speed.Stream); + + analogCallback = new AsyncCallback(AnalogInCallback); + //启动采集 + //模拟通道采集同步 + analogInReader.SynchronizeCallbacks = true; + analogInReader.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback, myTask_Analog); + SysParam.Instance.isDatahandlered = true; + } + catch (DaqException ex) + { + + throw new Exception("没连接上仪器,请重新连接仪器并重新启动重新" + ex.Message); + } + } + + public void DaqStop() + { + runningTask = null; + if (myTask_Analog != null) + { + myTask_Analog.Stop(); + } + if (myTask_Cut != null) + { + myTask_Cut.Stop(); + } + if (myTask_Len != null) + { + myTask_Len.Stop(); + } + if (myTask_Speed != null) + { + myTask_Speed.Stop(); + } + } + + private void AnalogInCallback(IAsyncResult ar) + { + if (runningTask == ar.AsyncState) + { + + analogInReader.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback, myTask_Analog); + vibdata = analogInReader.EndReadMultiSample(ar); + speeddata = analogSpeedReader.ReadMultiSample(SysParam.Instance.samplePoint); + cutdata = analogCutReader.ReadMultiSample(SysParam.Instance.samplePoint); + lendata = analogLenReader.ReadMultiSample(SysParam.Instance.samplePoint); + + if (SysParam.Instance.isDatahandlered)//数据处理未能及时完成时,该帧数据不触发回调 + { + SysParam.Instance.isDatahandlered = false; + if (DaqDataChangEvent != null) + { + DaqDataChangEvent.Invoke(new Daqdata(vibdata, speeddata, lendata, cutdata)); + } + } + } + } + public delegate void DriverCollectDataHandle(Daqdata data); + public event DriverCollectDataHandle DaqDataChangEvent; + } + + public class Daqdata : EventArgs + { + public double[,] vibData; + public double[,] speedData; + public double[] lenData; + public double[] cutData; + + public Daqdata(double[,] indata, double[,] speeddata, double[] lendata, double[] cutdata) + { + this.vibData = indata; + this.cutData = cutdata; + this.lenData = lendata; + this.speedData = speeddata; + } + } +} diff --git a/Driver/DaqDriver - 复制.csBK b/Driver/DaqDriver - 复制.csBK new file mode 100644 index 0000000..29aa66a --- /dev/null +++ b/Driver/DaqDriver - 复制.csBK @@ -0,0 +1,338 @@ +using System; +using NationalInstruments.DAQmx; +using CRVM.Entity; +using CRVM.Utility; + +namespace CRVM.Driver +{ + public class DaqDriver + { + private double[,] vibdata1 = new double[4, SysParam.Instance.samplePoint]; + private double[,] vibdata2 = new double[4, SysParam.Instance.samplePoint]; + private double[,] speeddata = new double[8, SysParam.Instance.samplePoint]; + private double[] cutdata; + private double[] lendata; + + private Task myTask_Analog1, myTask_Analog2, myTask_Speed, myTask_Cut, myTask_Len; + private AnalogMultiChannelReader analogInReader1, analogInReader2, analogSpeedReader; + //private AnalogSingleChannelReader analogCutReader, analogLenReader; + private Task runningTask1, runningTask2, runningTask3; + private AsyncCallback analogCallback1, analogCallback2, analogCallback3; + int count = 0; + public DaqDriver() + { + //修改为线程池任务 + new System.Threading.Tasks.Task(() => DaqStart()).Start(); + } + + public void DaqStart() + { + DevelopLog.DeBug.WriteLogFile("DaqStart", "DaqStart"); + try + { + myTask_Analog1 = new Task(); + myTask_Analog2 = new Task(); + myTask_Speed = new Task(); + + //振动信号 加速度信号 1~3通道对应1~3机架的振动信号 4通道预留 + for (int i = 0; i < 4; i++) + { + myTask_Analog1.AIChannels.CreateAccelerometerChannel("Vib1/ai" + i.ToString(), "", AITerminalConfiguration.Pseudodifferential, -5.0, 5.0, + SysParam.Instance.channel[i].vibSens, AIAccelerometerSensitivityUnits.MillivoltsPerG, AIExcitationSource.Internal, Convert.ToSingle(0.004), AIAccelerationUnits.G); + } + + //振动信号 加速度信号 1~2通道对应4~5机架的振动信号 3,4通道预留 + for (int i = 0; i < 4; i++) + { + myTask_Analog2.AIChannels.CreateAccelerometerChannel("Vib2/ai" + i.ToString(), "", AITerminalConfiguration.Pseudodifferential, -5.0, 5.0, + SysParam.Instance.channel[4 + i].vibSens, AIAccelerometerSensitivityUnits.MillivoltsPerG, AIExcitationSource.Internal, Convert.ToSingle(0.004), AIAccelerationUnits.G); + } + + + /*//轧制速度 ai0-ai4通道为模拟电流信号4-20mA 1机架0-550mpm 2机架0-1000mpm 3~5机架0-1700mpm 单位(m/min) ai5:轧制距离 模拟电流信号4-20mA 0-200m锯齿波 单位m ai6:剪切信号 模拟电流信号4-20mA <12 无剪切 >12剪切 + for (int i = 0; i < 7; i++) + { + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai" + i.ToString(), "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + }*/ + + //1#SPD + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai0", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + //2#SPD + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai2", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + //3#SPD + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai4", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + //4#SPD + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai6", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + //5#SPD + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai1", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + //LENGTH + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai5", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + //CUT + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai3", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + //SPARE + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai7", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + + ////轧制距离 模拟电流信号4-20mA 0-200m锯齿波 单位m + //myTask_Len.AIChannels.CreateCurrentChannel("L1signal/ai5", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + ////剪切信号 模拟电流信号4-20mA <12 无剪切 >12剪切 + //myTask_Cut.AIChannels.CreateCurrentChannel("L1signal/ai6", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + + + //采样速率 + myTask_Analog1.Timing.ConfigureSampleClock("", Convert.ToDouble(SysParam.Instance.sampleFre), SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1024); + myTask_Analog2.Timing.ConfigureSampleClock("", Convert.ToDouble(SysParam.Instance.sampleFre), SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1024); + myTask_Speed.Timing.ConfigureSampleClock("", Convert.ToDouble(SysParam.Instance.sampleFre), SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1024); + + ////声明采集任务 + string time1 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Analog2.Control(TaskAction.Verify); + string time2 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Analog1.Control(TaskAction.Verify); + string time3 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Speed.Control(TaskAction.Verify); + + ////声明采集任务 + /*string time4 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Analog2.Control(TaskAction.Verify); + string time5 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Analog1.Control(TaskAction.Verify); + string time6 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Speed.Control(TaskAction.Verify);*/ + + //数据采集 + runningTask1 = myTask_Analog1; + runningTask2 = myTask_Analog2; + runningTask3 = myTask_Speed; + + + analogInReader1 = new AnalogMultiChannelReader(myTask_Analog1.Stream); + analogInReader2 = new AnalogMultiChannelReader(myTask_Analog2.Stream); + analogSpeedReader = new AnalogMultiChannelReader(myTask_Speed.Stream); + + analogCallback1 = new AsyncCallback(AnalogInCallback1); + analogCallback2 = new AsyncCallback(AnalogInCallback2); + analogCallback3 = new AsyncCallback(AnalogInCallback3); + + + myTask_Analog2.Start(); + myTask_Speed.Start(); + //启动采集 + //模拟通道采集同步 + analogInReader1.SynchronizeCallbacks = true; + analogInReader2.SynchronizeCallbacks = true; + analogSpeedReader.SynchronizeCallbacks = true; + + analogInReader1.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback1, myTask_Analog1); + analogInReader2.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback2, myTask_Analog2); + analogSpeedReader.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback3, myTask_Speed); + SysParam.Instance.isDatahandlered = true; + } + catch (DaqException ex) + { + DevelopLog.DeBug.WriteLogFile("ex", ex.ToString()); + throw new Exception("没连接上仪器,请重新连接仪器并重新启动重新" + ex.Message); + } + } + + public void DaqStop() + { + runningTask1 = null; + runningTask2 = null; + runningTask3 = null; + if (myTask_Analog1 != null) + { + myTask_Analog1.Stop(); + } + if (myTask_Analog2 != null) + { + myTask_Analog2.Stop(); + } + //if (myTask_Cut != null) + //{ + // myTask_Cut.Stop(); + //} + //if (myTask_Len != null) + //{ + // myTask_Len.Stop(); + //} + if (myTask_Speed != null) + { + myTask_Speed.Stop(); + } + } + + /*private void AnalogInCallback1(IAsyncResult ar) + { + if (runningTask1 != null && runningTask1 == ar.AsyncState) + { + try + { + + //DevelopLog.DeBug.WriteLogFile("analogInReader1", ""); + vibdata1 = analogInReader1.EndReadMultiSample(ar); + ////cutdata = analogCutReader.ReadMultiSample(SysParam.Instance.samplePoint); + ////lendata = analogLenReader.ReadMultiSample(SysParam.Instance.samplePoint); + //DevelopLog.DeBug.WriteLogFile("analogSpeedReader", ""); + //if (SysParam.Instance.isDatahandlered && count >= 3)//数据处理未能及时完成时,该帧数据不触发回调 + + //DevelopLog.DeBug.WriteLogFile("speedInReader2", ""); + speeddata = analogSpeedReader.ReadMultiSample(SysParam.Instance.samplePoint); + + //DevelopLog.DeBug.WriteLogFile("analogInReader2", ""); + vibdata2 = analogInReader2.ReadMultiSample(SysParam.Instance.samplePoint); + if (SysParam.Instance.isDatahandlered)//数据处理未能及时完成时,该帧数据不触发回调 + { + count = 0; + SysParam.Instance.isDatahandlered = false; + if (DaqDataChangEvent != null) + { + DaqDataChangEvent.Invoke(new Daqdata(vibdata1, vibdata2, speeddata, lendata, cutdata)); + } + } + + analogInReader1.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback1, myTask_Analog1); + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("AnalogInCallback1", ex.ToString()); + } + + } + } + private void AnalogInCallback2(IAsyncResult ar) + { + if (runningTask2 == ar.AsyncState) + { + //DevelopLog.DeBug.WriteLogFile("AnalogInCallback2", ""); + analogInReader2.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback2, myTask_Analog2); + vibdata2 = analogInReader2.EndReadMultiSample(ar); + //DevelopLog.DeBug.WriteLogFile("analogInReader2", ""); + count++; + //vibdata2 = analogInReader2.ReadMultiSample(SysParam.Instance.samplePoint); + //DevelopLog.DeBug.WriteLogFile("analogInReader2", ""); + //speeddata = analogSpeedReader.ReadMultiSample(SysParam.Instance.samplePoint); + ////cutdata = analogCutReader.ReadMultiSample(SysParam.Instance.samplePoint); + ////lendata = analogLenReader.ReadMultiSample(SysParam.Instance.samplePoint); + //DevelopLog.DeBug.WriteLogFile("analogSpeedReader", ""); + if (SysParam.Instance.isDatahandlered && count >= 2)//数据处理未能及时完成时,该帧数据不触发回调 + { + count = 0; + SysParam.Instance.isDatahandlered = false; + if (DaqDataChangEvent != null) + { + DaqDataChangEvent.Invoke(new Daqdata(vibdata1, vibdata2, speeddata, lendata, cutdata)); + } + } + } + } + private void AnalogInCallback3(IAsyncResult ar) + { + if (runningTask3 == ar.AsyncState) + { + //DevelopLog.DeBug.WriteLogFile("AnalogInCallback3", ""); + analogSpeedReader.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback3, myTask_Speed); + speeddata = analogSpeedReader.EndReadMultiSample(ar); + //DevelopLog.DeBug.WriteLogFile("analogSpeedReader", ""); + count++; + //vibdata2 = analogInReader2.ReadMultiSample(SysParam.Instance.samplePoint); + //DevelopLog.DeBug.WriteLogFile("analogInReader2", ""); + //speeddata = analogSpeedReader.ReadMultiSample(SysParam.Instance.samplePoint); + ////cutdata = analogCutReader.ReadMultiSample(SysParam.Instance.samplePoint); + ////lendata = analogLenReader.ReadMultiSample(SysParam.Instance.samplePoint); + //DevelopLog.DeBug.WriteLogFile("analogSpeedReader", ""); + if (SysParam.Instance.isDatahandlered && count >= 3)//数据处理未能及时完成时,该帧数据不触发回调 + { + count = 0; + SysParam.Instance.isDatahandlered = false; + if (DaqDataChangEvent != null) + { + DaqDataChangEvent.Invoke(new Daqdata(vibdata1, vibdata2, speeddata, lendata, cutdata)); + } + } + } + }*/ + + + int countTest = 0; + private void AnalogInCallback1(IAsyncResult ar) + { + if (runningTask1 != null && runningTask1 == ar.AsyncState) + { + try + { + //DevelopLog.DeBug.WriteLogFile("AnalogInCallback1", ""); + analogInReader1.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback1, myTask_Analog1); + //DevelopLog.DeBug.WriteLogFile("analogInReader1", ""); + vibdata1 = analogInReader1.EndReadMultiSample(ar); + + //DevelopLog.DeBug.WriteLogFile("speedInReader2", ""); + if (countTest == 0) + { + speeddata = analogSpeedReader.ReadMultiSample(SysParam.Instance.samplePoint); + + //DevelopLog.DeBug.WriteLogFile("analogInReader2", ""); + vibdata2 = analogInReader2.ReadMultiSample(SysParam.Instance.samplePoint); + countTest++; + } + + if (SysParam.Instance.isDatahandlered)//数据处理未能及时完成时,该帧数据不触发回调 + { + SysParam.Instance.isDatahandlered = false; + if (DaqDataChangEvent != null) + { + DaqDataChangEvent.Invoke(new Daqdata(vibdata1, vibdata2, speeddata, lendata, cutdata)); + + } + + } + + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("AnalogInCallback1", ex.ToString()); + //analogInReader1.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback1, myTask_Analog1); + } + + } + } + private void AnalogInCallback2(IAsyncResult ar) + { + if (runningTask2 == ar.AsyncState) + { + //DevelopLog.DeBug.WriteLogFile("AnalogInCallback2", ""); + analogInReader2.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback2, myTask_Analog2); + vibdata2 = analogInReader2.EndReadMultiSample(ar); + } + } + private void AnalogInCallback3(IAsyncResult ar) + { + if (runningTask3 == ar.AsyncState) + { + //DevelopLog.DeBug.WriteLogFile("AnalogInCallback3", ""); + analogSpeedReader.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback3, myTask_Speed); + speeddata = analogSpeedReader.EndReadMultiSample(ar); + } + } + + public delegate void DriverCollectDataHandle(Daqdata data); + public event DriverCollectDataHandle DaqDataChangEvent; + } + + public class Daqdata : EventArgs + { + public double[,] vibData1; + public double[,] vibData2; + public double[,] speedData; + public double[] lenData; + public double[] cutData; + + public Daqdata(double[,] indata1, double[,] indata2, double[,] speeddata, double[] lendata, double[] cutdata) + { + this.vibData1 = indata1; + this.vibData2 = indata2; + this.cutData = cutdata; + this.lenData = lendata; + this.speedData = speeddata; + } + } +} diff --git a/Driver/DaqDriver.cs b/Driver/DaqDriver.cs new file mode 100644 index 0000000..74c2f17 --- /dev/null +++ b/Driver/DaqDriver.cs @@ -0,0 +1,341 @@ +using System; +using NationalInstruments.DAQmx; +using CRVM.Entity; +using CRVM.Utility; +using System.Timers; + +namespace CRVM.Driver +{ + public class DaqDriver + { + private double[,] vibdata1 = new double[4, SysParam.Instance.samplePoint]; + private double[,] vibdata2 = new double[4, SysParam.Instance.samplePoint]; + private double[,] speeddata = new double[8, SysParam.Instance.samplePoint];//F1~F5速度,轧制距离 + private double[] cutdata = new double[8]; + private double[] lendata; + private bool[] cutflags = new bool[8];//剪切信号--第0位采集箱cz02状态,第1位--剪切信号 + private bool[] cz02State = new bool[8];//采集箱cz03状态 第0位 + public bool[] CutFlags { get { return cutflags; } } + + public bool[] CZconnected { get; set; }//CZ02 CZ03 通电状态 + + private Task myTask_Analog1, myTask_Analog2, myTask_Speed;// myTask_Cut, myTask_cz03; + private AnalogMultiChannelReader analogInReader1, analogInReader2, analogSpeedReader; + private DigitalSingleChannelReader myDigitalReader, myDigitalReader2; + //private AnalogSingleChannelReader analogCutReader, analogLenReader; + private Task runningTask1, runningTask2, runningTask3; + private AsyncCallback analogCallback1, analogCallback2, analogCallback3; + + //private System.Timers.Timer Cut_timer = new System.Timers.Timer(); + //private System.Timers.Timer CZ03_timer = new System.Timers.Timer(); + int count = 0; + public DaqDriver() + { + //修改为线程池任务 + new System.Threading.Tasks.Task(() => DaqStart()).Start(); + } + + public void DaqStart() + { + DevelopLog.DeBug.WriteLogFile("DaqStart", "DaqStart"); + try + { + myTask_Analog1 = new Task(); + myTask_Analog2 = new Task(); + myTask_Speed = new Task(); + + /* ---------------------剪切信号采集任务--------------------*/ + //Cut_timer.Interval = 200; //执行间隔时间,单位为毫秒; + //Cut_timer.Elapsed += new System.Timers.ElapsedEventHandler(updateCutFlag); + /* ---------------------CZ03状态采集任务--------------------*/ + // CZ03_timer.Interval = 200; + //CZ03_timer.Elapsed += new System.Timers.ElapsedEventHandler(updateCZFlag); + + //振动信号 加速度信号 1~8通道 1~5通道对应1~5机架的振动信号 6~8通道预留 + for (int i = 0; i < 4; i++) + { + myTask_Analog1.AIChannels.CreateAccelerometerChannel("Vib1/ai" + i.ToString(), "", AITerminalConfiguration.Pseudodifferential, -5.0, 5.0, + SysParam.Instance.channel[i].vibSens, AIAccelerometerSensitivityUnits.MillivoltsPerG, AIExcitationSource.Internal, Convert.ToSingle(0.004), AIAccelerationUnits.G); + } + + for (int i = 0; i < 4; i++) + { + myTask_Analog2.AIChannels.CreateAccelerometerChannel("Vib2/ai" + i.ToString(), "", AITerminalConfiguration.Pseudodifferential, -5.0, 5.0, + SysParam.Instance.channel[4 + i].vibSens, AIAccelerometerSensitivityUnits.MillivoltsPerG, AIExcitationSource.Internal, Convert.ToSingle(0.004), AIAccelerationUnits.G); + } + + + + //轧制速度 ai0-ai4通道为模拟电流信号4-20mA 1机架0-550mpm 2机架0-1000mpm 3~5机架0-1700mpm 单位(m/min) ai5:轧制距离 模拟电流信号4-20mA 0-200m锯齿波 单位m ai6:剪切信号 模拟电流信号4-20mA <12 无剪切 >12剪切 + // 1#--- 300mpm 2#-- 3#--- 4#---- -5#--1550mpm 卷取机--1580mpm + for (int i = 0; i < 8; i++) + { + myTask_Speed.AIChannels.CreateCurrentChannel("L1signal/ai" + i.ToString(), "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + //myTask_Cut.DIChannels.CreateChannel("L1bool/ai"+i.ToString(),"", ChannelLineGrouping.OneChannelForAllLines); + + } + //剪切信号 + // myTask_Cut = new Task(); + //myTask_Cut.DIChannels.CreateChannel( + // "L1bool/port0", + // "myChannel", + // ChannelLineGrouping.OneChannelForAllLines); + //myDigitalReader = new DigitalSingleChannelReader(myTask_Cut.Stream); + + //cz03 + //myTask_cz03 = new Task(); + + //myTask_cz03.DIChannels.CreateChannel( + // "CZ03bool/port0", + // "myChannel", + // ChannelLineGrouping.OneChannelForAllLines); + // myDigitalReader2 = new DigitalSingleChannelReader(myTask_cz03.Stream); + + ////轧制距离 模拟电流信号4-20mA 0-200m锯齿波 单位m + //myTask_Len.AIChannels.CreateCurrentChannel("L1signal/ai5", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + ////剪切信号 模拟电流信号4-20mA <12 无剪切 >12剪切 + //myTask_Cut.AIChannels.CreateCurrentChannel("L1signal/ai6", "", (AITerminalConfiguration)(-1), -0.02, 0.02, AICurrentUnits.Amps); + + + //采样速率 + myTask_Analog1.Timing.ConfigureSampleClock("", Convert.ToDouble(SysParam.Instance.sampleFre), SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1024); + myTask_Analog2.Timing.ConfigureSampleClock("", Convert.ToDouble(SysParam.Instance.sampleFre), SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1024); + myTask_Speed.Timing.ConfigureSampleClock("", Convert.ToDouble(SysParam.Instance.sampleFre), SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, 1024); + + ////声明采集任务 + string time1 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Analog2.Control(TaskAction.Verify); + string time2 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Analog1.Control(TaskAction.Verify); + string time3 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Speed.Control(TaskAction.Verify); + + ////声明采集任务 + /*string time4 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Analog2.Control(TaskAction.Verify); + string time5 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Analog1.Control(TaskAction.Verify); + string time6 = DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString(); + myTask_Speed.Control(TaskAction.Verify);*/ + + //数据采集 + runningTask1 = myTask_Analog1; + runningTask2 = myTask_Analog2; + runningTask3 = myTask_Speed; + //runningTask4 = myTask_Cut; + + analogInReader1 = new AnalogMultiChannelReader(myTask_Analog1.Stream); + analogInReader2 = new AnalogMultiChannelReader(myTask_Analog2.Stream); + analogSpeedReader = new AnalogMultiChannelReader(myTask_Speed.Stream); + //digitalReader = new DigitalMultiChannelReader(myTask_Cut.Stream); + + analogCallback1 = new AsyncCallback(AnalogInCallback1); + analogCallback2 = new AsyncCallback(AnalogInCallback2); + analogCallback3 = new AsyncCallback(AnalogInCallback3); + //digitalCallback4 = new AsyncCallback(DigitalCallback4); + + + myTask_Analog2.Start(); + myTask_Speed.Start(); + //启动采集 + //模拟通道采集同步 + analogInReader1.SynchronizeCallbacks = true; + analogInReader2.SynchronizeCallbacks = true; + analogSpeedReader.SynchronizeCallbacks = true; + + analogInReader1.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback1, myTask_Analog1); + analogInReader2.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback2, myTask_Analog2); + analogSpeedReader.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback3, myTask_Speed); + SysParam.Instance.isDatahandlered = true; + + + // Cut_timer.Enabled = true; + // Cut_timer.Start(); + // CZ03_timer.Enabled = true; + // CZ03_timer.Start(); + // CZconnected = new bool[2] { false, false };//CZ02 CZ03 通电状态 + } + catch (DaqException ex) + { + DevelopLog.DeBug.WriteLogFile("ex", ex.ToString()); + throw new Exception("没连接上仪器,请重新连接仪器并重新启动重新" + ex.Message); + } + } + + public void DaqStop() + { + runningTask1 = null; + runningTask2 = null; + runningTask3 = null; + if (myTask_Analog1 != null) + { + myTask_Analog1.Stop(); + } + if (myTask_Analog2 != null) + { + myTask_Analog2.Stop(); + } + //if (myTask_Cut != null) + //{ + // myTask_Cut.Stop(); + //} + //if (myTask_Len != null) + //{ + // myTask_Len.Stop(); + //} + if (myTask_Speed != null) + { + myTask_Speed.Stop(); + } + // if (Cut_timer.Enabled) + // { + // Cut_timer.Stop(); + // } + // if (CZ03_timer.Enabled) { + // CZ03_timer.Stop(); + // } + } + + int countTest = 0; + private void AnalogInCallback1(IAsyncResult ar) + { + if (runningTask1 != null && runningTask1 == ar.AsyncState) + { + try + { + //DevelopLog.DeBug.WriteLogFile("AnalogInCallback1", ""); + analogInReader1.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback1, myTask_Analog1); + //DevelopLog.DeBug.WriteLogFile("analogInReader1", ""); + vibdata1 = analogInReader1.EndReadMultiSample(ar); + + //DevelopLog.DeBug.WriteLogFile("speedInReader2", ""); + if (countTest == 0) + { + speeddata = analogSpeedReader.ReadMultiSample(SysParam.Instance.samplePoint); + + //DevelopLog.DeBug.WriteLogFile("analogInReader2", ""); + vibdata2 = analogInReader2.ReadMultiSample(SysParam.Instance.samplePoint); + countTest++; + } + + if (SysParam.Instance.isDatahandlered)//数据处理未能及时完成时,该帧数据不触发回调 + { + SysParam.Instance.isDatahandlered = false; + if (DaqDataChangEvent != null) + { + DaqDataChangEvent.Invoke(new Daqdata(vibdata1, vibdata2, speeddata, lendata, cutdata)); + + } + + } + + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("AnalogInCallback1", ex.ToString()); + //analogInReader1.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback1, myTask_Analog1); + } + + } + } + private void AnalogInCallback2(IAsyncResult ar) + { + if (runningTask2 == ar.AsyncState) + { + //DevelopLog.DeBug.WriteLogFile("AnalogInCallback2", ""); + analogInReader2.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback2, myTask_Analog2); + vibdata2 = analogInReader2.EndReadMultiSample(ar); + } + } + private void AnalogInCallback3(IAsyncResult ar) + { + if (runningTask3 == ar.AsyncState) + { + //DevelopLog.DeBug.WriteLogFile("AnalogInCallback3", ""); + analogSpeedReader.BeginReadMultiSample(SysParam.Instance.samplePoint, analogCallback3, myTask_Speed); + speeddata = analogSpeedReader.EndReadMultiSample(ar); + } + } + + //private void DigitalCallback4(IAsyncResult ar) + //{ + // if (runningTask4 == ar.AsyncState) + // { + // digitalReader.BeginReadSingleSampleSingleLine(digitalCallback4, myTask_Cut); + // } + //} + + + /// + /// cz02 剪切信号采集箱 + /// + /// + /// + public void updateCutFlag(object source, ElapsedEventArgs e) + { + try + { + bool[] readData; + //DevelopLog.DeBug.WriteLogFile("updateCutFlag", "test------1-------"); + //Read the digital channel + readData = myDigitalReader.ReadSingleSampleMultiLine(); + if (readData.Length > 7) + { + CZconnected[0] = readData[0];//cz02状态 + for (int i = 0; i < 8; i++) + { + cutdata[i] = (readData[i]) ? 1.0 : 0.0; + //DevelopLog.DeBug.WriteLogFile("cutdata", $"[{i}]={cutdata[i]},readData[{i}]={readData[i]}"); + } + } + + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("updateCutFlag", ex.ToString()); + } + } + + public void updateCZFlag(object source, ElapsedEventArgs e) + { + try + { + bool[] readData; + //DevelopLog.DeBug.WriteLogFile("updateCZFlag", "test------1-------"); + //Read the digital channel + readData = myDigitalReader2.ReadSingleSampleMultiLine(); + if (readData.Length > 7) + { + CZconnected[1] = readData[0];//cz03状态 + } + + } + catch (Exception ex) + { + DevelopLog.DeBug.WriteLogFile("updateCZFlag", ex.ToString()); + } + } + + public delegate void DriverCollectDataHandle(Daqdata data); + public event DriverCollectDataHandle DaqDataChangEvent; + } + + public class Daqdata : EventArgs + { + public double[,] vibData1; + public double[,] vibData2; + public double[,] speedData; + public double[] lenData; + public double[] cutData; + + public Daqdata(double[,] indata1, double[,] indata2, double[,] speeddata, double[] lendata, double[] cutdata) + { + this.vibData1 = indata1; + this.vibData2 = indata2; + this.cutData = cutdata; + this.lenData = lendata; + this.speedData = speeddata; + } + } + +} \ No newline at end of file diff --git a/Driver/IDriver.csproj b/Driver/IDriver.csproj new file mode 100644 index 0000000..88ccd7e --- /dev/null +++ b/Driver/IDriver.csproj @@ -0,0 +1,165 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {CA99539C-836B-4670-A392-59892C40CB79} + Library + Properties + CRVM.Driver + Driver + v4.0 + 512 + + + + + + + + + + + + + 3.5 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + x86 + NativeRecommendedRules.ruleset + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + AllRules.ruleset + + + + ..\Entity\obj\Debug\Entity.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll + + + False + ..\..\AppCRVM\NationalInstruments.Common.dll + + + False + ..\..\AppCRVM\NationalInstruments.DAQmx.dll + + + + 3.5 + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.IO.dll + + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Runtime.dll + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Threading.Tasks.dll + + + 3.5 + + + 3.5 + + + + + + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + {883a056a-e138-47c0-b8e5-f23fd82f0631} + Utility + + + + + + + + + + \ No newline at end of file diff --git a/Driver/Properties/Resources.Designer.cs b/Driver/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6f1175e --- /dev/null +++ b/Driver/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.1 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace CRVM.Driver.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CRVM.Driver.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Driver/Properties/Resources.resx b/Driver/Properties/Resources.resx new file mode 100644 index 0000000..4fdb1b6 --- /dev/null +++ b/Driver/Properties/Resources.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Driver/ZDState.cs b/Driver/ZDState.cs new file mode 100644 index 0000000..ce5544d --- /dev/null +++ b/Driver/ZDState.cs @@ -0,0 +1,73 @@ +using System; +using NationalInstruments.DAQmx; + +namespace CRVM.Driver +{ + public class ZDSate + { + private Task task; + private DigitalMultiChannelWriter writer; + private DOChannel[] chanels; + private bool[] data; + public int linesCount; + + public ZDSate() + { + task = new Task(); + writer = new DigitalMultiChannelWriter(task.Stream); + string[] lineNames = DaqSystem.Local.GetPhysicalChannels(PhysicalChannelTypes.DOLine, PhysicalChannelAccess.External); + linesCount = lineNames.Length; + chanels = new DOChannel[linesCount]; + for (int i = 0; i < lineNames.Length; i++) + { + chanels[i] = task.DOChannels.CreateChannel(lineNames[i], "", ChannelLineGrouping.OneChannelForEachLine); + } + data = new bool[linesCount]; + Start(); + } + + public string WriteData(bool[] data)//写入各个通道的标志 + { + if (data.Length != linesCount) + { + return "data length is not equals dataLength"; + } + try + { + writer.WriteSingleSampleSingleLine(true, data); + return null; + } + catch (Exception ex) + { + return ex.Message; + } + } + + public string Start()//开始任务 + { + try + { + task.Start(); + } + catch (DaqException ex) + { + return ex.Message; + } + return null; + } + + public string Stop()//停止任务 + { + try + { + task.Stop(); + return null; + } + catch (DaqException ex) + { + return ex.Message; + } + } + } +} + diff --git a/Driver/app.config b/Driver/app.config new file mode 100644 index 0000000..e03ea0a --- /dev/null +++ b/Driver/app.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Driver/packages.config b/Driver/packages.config new file mode 100644 index 0000000..09c7121 --- /dev/null +++ b/Driver/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Entity/Entity.csproj b/Entity/Entity.csproj new file mode 100644 index 0000000..541f917 --- /dev/null +++ b/Entity/Entity.csproj @@ -0,0 +1,158 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {6EA706F6-065D-469E-AB39-7395D780548B} + Library + Properties + CRVM.Entity + Entity + v4.0 + 512 + + + + + + + + + + + + + 3.5 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + x86 + NativeRecommendedRules.ruleset + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + AllRules.ruleset + + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll + + + + 3.5 + + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.IO.dll + + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Runtime.dll + + + 3.0 + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Threading.Tasks.dll + + + 3.5 + + + 3.5 + + + + + False + ..\dllFiles\ZedGraph.dll + + + + + + + True + True + Resources.resx + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Entity/EntityAlarm.cs b/Entity/EntityAlarm.cs new file mode 100644 index 0000000..e57666f --- /dev/null +++ b/Entity/EntityAlarm.cs @@ -0,0 +1,21 @@ +using System; +namespace CRVM.Entity +{ + [Serializable] + public class EntityAlarmSpeed + { + public int alarmSpeed { set; get; } + public int lowPassL { set; get; } //低频滤波下限 + public int lowPassU { set; get; } //低频滤波上限 + public float lowAlarmValue { set; get; } //低频报警值 + public float lowDefectValue { set; get; } //低频缺陷报警值 + public int midPassL { set; get; } + public int midPassU { set; get; } + public float midAlarmValue { set; get; } + public float midDefectValue { set; get; } + public int highPassL { set; get; } + public int highPassU { set; get; } + public float highAlarmValue { set; get; } + public float highDefectValue { set; get; } + } +} diff --git a/Entity/EntityChannel.cs b/Entity/EntityChannel.cs new file mode 100644 index 0000000..9b16cbd --- /dev/null +++ b/Entity/EntityChannel.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Runtime.Serialization; + + +namespace CRVM.Entity +{ + public class EntityChannel + { + [DataMember] + public bool ChChecked { get; set; } //在线采集时通道选中状态 + [DataMember] + public float vibSens { get; set; } //加速度传感器灵敏度 + + [DataMember] + public float speedSens { get; set; } //速度传感器灵敏度 + + [DataMember] + public int alarmTimes_l { get { return defaultAlarmTimes[0]; } set { defaultAlarmTimes[0] = value; } } //低频报警次数 + + [DataMember] + public int alarmTimes_m { get { return defaultAlarmTimes[1]; } set { defaultAlarmTimes[1] = value; } } //中频报警次数 + [DataMember] + public int alarmTimes_h { get { return defaultAlarmTimes[2]; } set { defaultAlarmTimes[2] = value; } } //高频报警次数 + [DataMember] + private EntityAlarmSpeed[] _alarmConfig = new EntityAlarmSpeed[10]; + /// + /// 报警设置参数,该参数从参数设置文件中读取而来。 + /// + [DataMember] + public EntityAlarmSpeed[] alarmConfig //报警设置参数 + { + get { return _alarmConfig; } + set { _alarmConfig = value; } + } + private EntityAlarmSpeed[] _reAlarmConfig = new EntityAlarmSpeed[10];//回放时报警参数 + [DataMember] + public EntityAlarmSpeed[] reAlarmConfig + { + get { return _reAlarmConfig; } + set { _reAlarmConfig = value; } + } + private int[] defaultAlarmTimes = new int[3] { 3, 3, 3 }; + } +} diff --git a/Entity/Properties/Resources.Designer.cs b/Entity/Properties/Resources.Designer.cs new file mode 100644 index 0000000..064f619 --- /dev/null +++ b/Entity/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.1 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace CRVM.Entity.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CRVM.Entity.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Entity/Properties/Resources.resx b/Entity/Properties/Resources.resx new file mode 100644 index 0000000..4fdb1b6 --- /dev/null +++ b/Entity/Properties/Resources.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Entity/RollingArray.cs b/Entity/RollingArray.cs new file mode 100644 index 0000000..c9f1945 --- /dev/null +++ b/Entity/RollingArray.cs @@ -0,0 +1,117 @@ +using System; + +namespace CRVM.Entity +{ + /// + /// 一种环型数组,其长度N在创建后固定,当数组填充满时,继续添加的新元素会覆盖旧元素, + /// 数组内始终存储最新添加的N个元素。 + /// + /// 元素类型 + public class RollingArray + { + /// + /// 泛型数组,用于存储各元素 + /// + private T[] array; + + /// + /// 下一个元素的写入位置 + /// + private int nextPosition; + /// + /// 数组大小 + /// + private int size; + + /// + /// 数组中元素数量 + /// + public int Count { get; private set; } + + /// + /// 构造一个指定长度的泛型数组 + /// + /// 数组大小 + public RollingArray(int arraySize) + { + size = arraySize; + array = new T[arraySize]; + } + + /// + /// 往数组中添加元素,每写入一个元素,下一次写入位置后移一位,当超出边界时又从头开始覆盖写入。 + /// + /// 待添加元素 + public void Add(T element) + { + array[nextPosition] = element; + nextPosition = (nextPosition + 1) % size; + + if (Count < size) + Count++; + } + + /// + /// 数组中是否存在元素 + /// + public bool IsEmpty + { + get { return Count == 0; } + } + + /// + /// 循环数组的头,返回最早添加的元素 + /// + public T Head + { + get + { + if (IsEmpty) + throw new IndexOutOfRangeException("当前数组为空!"); + if (Count < size) + return array[0]; + return array[nextPosition]; + } + } + + /// + /// 循环数组尾,返回最新添加的元素 + /// + public T Tail + { + get + { + if (IsEmpty) + throw new IndexOutOfRangeException("当前数组为空!"); + if (nextPosition == 0) + return array[Count]; + return array[nextPosition - 1]; + } + } + /// + /// 按照元素的插入顺序输出完整数组 + /// + public T[] ToArray() + { + T[] temp = new T[Count]; + for (int i = 0; i < Count; i++) + { + if (Count < size) + temp[i] = array[i]; + else + temp[i] = array[(i + nextPosition) % size]; + } + return temp; + } + + /// + /// 数组重置 + /// + public void Clear() + { + nextPosition = 0; + Count = 0; + } + + } +} diff --git a/Entity/SysParam.cs b/Entity/SysParam.cs new file mode 100644 index 0000000..7fbb32d --- /dev/null +++ b/Entity/SysParam.cs @@ -0,0 +1,472 @@ +using System; +using System.Drawing; +using System.Runtime.Serialization; +using System.Text.RegularExpressions; +using System.Collections.Generic; + +namespace CRVM.Entity +{ + + + [DataContract] + public class SysParam + { + //构造函数定义为私有,只能从内部构造,防止外部直接通过new操作符构造一个新的实例 + private static SysParam _intance = null; + [DataMember] + public static SysParam Instance + { + get + { + if (_intance == null) + _intance = new SysParam(); + return _intance; + } + } + private SysParam() + { + _channel = new EntityChannel[_channelCount]; + for (int i = 0; i < _channelCount; i++) + { + EntityChannel ch = new EntityChannel(); + _channel[i] = ch; + } + } + private EntityChannel[] _channel; + public EntityChannel[] channel + { + get { return _channel; } + set { _channel = value; } + } + + private readonly int _channelCount = 8; + /// + /// 总采集通道数量 + /// + [DataMember] + public int channelCount + { + get { return _channelCount; } + } + //private readonly int _SpeedChannelCount = 5; + private readonly int _SpeedChannelCount = 6; + /// + /// 速度通道数 + /// + [DataMember] + public int SpeedChannelCount + { + get { return _SpeedChannelCount; } + } + /// + /// 采样点数 + /// + public int samplePoint { get; set; } + /// + /// 采样频率 + /// + public int sampleFre { get; set; } + /// + /// 能量曲线对应显示宽度的数据点数,默认为300秒宽度。 + /// + public int energyPoints + { + get + { + if (samplePoint > 0) + return Convert.ToInt32(300 * sampleFre / samplePoint); + else + return 1500; + } + } + /// + /// 实时采集时,所显示的时域波形宽度范围对应的数据点数,默认为1秒宽度。 + /// + public int timePoints + { + get + { + if (sampleFre > 0) + return sampleFre; + else + return 5120; + } + } + + /// + /// 板形辊每个脉冲代表的轧制距离,单位:mm_Per_pulse + /// + public double distanceSens { get; set; } + /// + /// 数据处理是否完成 + /// + public bool isDatahandlered { get; set; } + + public bool isL2Connected { get; set; }//系统是否能正常连接到L2数据库 + + #region 数据查询设置 + public DateTime searchStartTime { get; set; }//数据查询开始时间 + + public DateTime searchEndTime { get; set; }//数据查询结束时间 + + public bool searchAlarmChecked { get; set; }//数据查询报警选中 + #endregion + + public int OrigDataNum { get; set; } + public string appPath { get; set; } + public string IP { get; set; } + public int Port { get; set; } + + #region 文件存储参数 + public string savePath { get; set; } + public bool checkTXT { get; set; }//文本 + public bool checkBIT { get; set; }//二进制 + + public int saveDaysAlarm { get; set; } + public int saveDaysNoAlarm { get; set; } + public bool isFileCleared { get; set; } + public bool filePrepared { get; set; } + public bool fileCreated { get; set; } + #endregion + + #region 显示参数 + public bool BackgroundGridOn { get; set; } + public bool rollLineVisible { get; set; } + public int fontSize { get; set; } + public Color colorTime { get; set; } + public Color colorFre { get; set; } + public Color colorEnergy { get; set; } + public Color colorSpeed { get; set; } + public Color colorAlarm { get; set; } + public Color colorDefect { get; set; } + public Color colorCut { get; set; } + public Color colorWorkRoll { get; set; } + public Color colorMidRoll { get; set; } + public Color colorBackupRoll { get; set; } + public Color colorBackgroud { get; set; } + public Color colorFont { get; set; } + #endregion + + #region 图表显示控制 + //时域图 + public bool checkBoxTime { get; set; } + public bool checkBoxTimeAll { get; set; } + public string comboBoxTimeAll { get; set; } + public bool checkBoxTimeL { get; set; } + public string comboBoxTimeL { get; set; } + public bool checkBoxTimeM { get; set; } + public string comboBoxTimeM { get; set; } + public bool checkBoxTimeH { get; set; } + public string comboBoxTimeH { get; set; } + public bool checkBoxTimeFre { get; set; } + public string comboBoxTimeFre { get; set; } + public bool checkBoxTimeFilt { get; set; } + public string ComboBoxTimeFilt { get; set; } + public string textBoxf1 { get; set; } + public string textBoxf2 { get; set; } + //能量图 + public bool checkBoxEnergy { get; set; } + public bool checkBoxEnergyAll { get; set; } + public string comboBoxEnergyAll { get; set; } + public bool checkBoxEnergyL { get; set; } + public string comboBoxEnergyL { get; set; } + public bool checkBoxEnergyM { get; set; } + public string comboBoxEnergyM { get; set; } + public bool checkBoxEnergyH { get; set; } + public string comboBoxEnergyH { get; set; } + public bool checkBoxEnergySpeed { get; set; } + public string comboBoxEnergySpeed { get; set; } + //排列方式 + public bool orderByChannel { get; set; } + public bool orderBySingleColumn { get; set; } + public bool orderByStandnoR2L { get; set; }//轧机出口在左侧 + public bool orderByStandnoL2R { get; set; }//轧机出口在右侧 + public bool orderByOther { get; set; }//不按机架排列 + #endregion + + #region 带通滤波、傅立叶算法 + + public double[] filterAlgor(double[] array, int f1, int f2, int n, int m, int fs) + { + int i, j; + double x, aa, fl, fh, w; + double[] b = new double[200];// { }; + int xlen = n; + //float[] filt = new float[xlen] { }; + double[] filt = new double[xlen]; + aa = Math.PI / m; + fl = 2 * Math.PI * f1 / fs; + fh = 2 * Math.PI * f2 / fs; + w = 2 * Math.PI; + + for (j = 1; j < m; j++) + { + b[j] = (1 + Math.Cos(aa * j)) * (Math.Sin(fh * j) - Math.Sin(fl * j)) / (w * j); + } + for (i = 0; i < n; i++) + { + x = (2 * (fh - fl) / w) * array[i]; + //是否为循环卷积 + for (j = 0; j < m; j++) + { + try + { + if ((j + i) < n) + x += b[j] * array[j + i]; + + if ((i - j) > 0) + x += b[j] * array[i - j]; + } + catch (Exception exp) + { + string s = "i=" + i + ",j=" + j + exp.Message; + } + } + filt[i] = x; + + } + return filt; + } + + public int N2M(int n) + { + int x = 2; + int num = 0; + while (x <= n) + { + x = 2 * x; + num++; + } + return num; + } + + public void FFT(double[] AR, double[] AI, int N, int ni) + { + int i, j, k, L, M, IP, LE, L1, N1, N2; + double SN, TR, TI, WR, WI, UR, UI, US; + M = N2M(N); + N = Convert.ToInt32(Math.Pow(2, M)); + N2 = N / 2; + N1 = N - 1; + SN = ni; + j = 1; + i = 1; + while (i <= N1) + { + if (i < j) + { + TR = AR[j - 1]; + AR[j - 1] = AR[i - 1]; + AR[i - 1] = TR; + TI = AI[j - 1]; + AI[j - 1] = AI[i - 1]; + AI[i - 1] = TI; + } + k = N2; + while (k < j) + { + j = j - k; + k = k / 2; + } + j = j + k; + i++; + } + L = 1; + while (L <= M) + { + LE = Convert.ToInt32(Math.Pow(2, L)); + L1 = LE / 2; + UR = 1.0f; + UI = 0.0f; + WR = Math.Cos(Math.PI / L1); + WI = SN * Math.Sin(Math.PI / L1); + j = 1; + while (j <= L1) + { + i = j; + while (i <= N) + { + IP = i + L1; + TR = AR[IP - 1] * UR - AI[IP - 1] * UI; + TI = AI[IP - 1] * UR + AR[IP - 1] * UI; + AR[IP - 1] = AR[i - 1] - TR; + AI[IP - 1] = AI[i - 1] - TI; + AR[i - 1] = AR[i - 1] + TR; + AI[i - 1] = AI[i - 1] + TI; + i += LE; + } + US = UR; + UR = US * WR - UI * WI; + UI = UI * WR + US * WI; + j++; + } + L++; + } + if (SN == -1) + { + i = 1; + while (i <= N) + { + AR[i - 1] = AR[i - 1] / N; + AI[i - 1] = AI[i - 1] / N; + i++; + } + } + } + + public double[] newFFT(double[] AR, double[] AI, int N) + { + int i, j, k, L, M, IP, LE, L1, N2; + double SN, TR, TI, WR, WI, UR, UI, US; + M = N2M(N); + N = Convert.ToInt32(Math.Pow(2, M)); + N2 = N / 2; + SN = 1; + j = 1; + i = 1; + while (i < N) + { + if (i < j) + { + TR = AR[j - 1]; + AR[j - 1] = AR[i - 1]; + AR[i - 1] = TR; + TI = AI[j - 1]; + AI[j - 1] = AI[i - 1]; + AI[i - 1] = TI; + } + k = N2; + while (k < j) + { + j = j - k; + k = k / 2; + } + j = j + k; + i++; + } + L = 1; + while (L <= M) + { + LE = Convert.ToInt32(Math.Pow(2, L)); + L1 = LE / 2; + UR = 1; + UI = 0; + WR = Math.Cos(Math.PI / L1); + WI = SN * Math.Sin(Math.PI / L1); + j = 1; + while (j <= L1) + { + i = j; + while (i <= N) + { + IP = i + L1; + TR = AR[IP - 1] * UR - AI[IP - 1] * UI; + TI = AI[IP - 1] * UR + AR[IP - 1] * UI; + AR[IP - 1] = AR[i - 1] - TR; + AI[IP - 1] = AI[i - 1] - TI; + AR[i - 1] = AR[i - 1] + TR; + AI[i - 1] = AI[i - 1] + TI; + i += LE; + } + US = UR; + UR = US * WR - UI * WI; + UI = UI * WR + US * WI; + j++; + } + L++; + } + double[] temp = new double[N / 2]; + for (i = 0; i < N / 2; i++) + { + temp[i] = 2 * Math.Sqrt(AR[i] * AR[i] + AI[i] * AI[i]) / N; + } + return temp; + //if (SN == -1) + //{ + // i = 1; + // while (i <= N) + // { + // AR[i - 1] = AR[i - 1] / N; + // AI[i - 1] = AI[i - 1] / N; + // i++; + // } + //} + } + + public bool DataIsMatch(string str, string pattern) + { + Regex reg = new Regex(pattern); + if (reg.IsMatch(str)) + { + return true; + } + else + { + return false; + } + } + #endregion + + public string reTimeSpan { get; set; } + public int reSampleFre { get; set; } + public int reSamplePoint { get; set; } + + public double rollDiameterBU + { + get { return 1.2230; } + } + public double rollDiameterBL + { + get { return 1.2230; } + } + public double rollDiameterMU + { + get { return 0.5363; } + } + public double rollDiameterML + { + get { return 0.5363; } + } + public double rollDiameterWU + { + get { return 0.4040; } + } + public double rollDiameterWL + { + get { return 0.4040; } + } + + public List onlineList = new List(); + + #region 报警铃声设置 + public bool isStand1Ring { get; set; } + public bool isStand2Ring { get; set; } + public bool isStand3Ring { get; set; } + public bool isStand4Ring { get; set; } + public bool isStand5Ring { get; set; } + public bool isStand6Ring { get; set; } + + public short ringFre { get; set; } + public short ringType { get; set; } + + public bool alarming1 { get; set; } + public bool alarming2 { get; set; } + public bool alarming3 { get; set; } + public bool alarming4 { get; set; } + public bool alarming5 { get; set; } + public bool alarming6 { get; set; } + + public int alarmingType { get; set; }//0:正常 1:设备异常 2:共振报警 + + public bool alarmingS1 { get; set; }//达到报警线的80% + public bool alarmingS2 { get; set; }//达到报警线的80% + public bool alarmingS3 { get; set; }//达到报警线的80% + public bool alarmingS4 { get; set; }//达到报警线的80% + public bool alarmingS5 { get; set; }//达到报警线的80% + + public bool[,] ringflag = new bool[5, 3]; + #endregion + + public bool isOpenAlarm = false; + } +} diff --git a/Entity/app.config b/Entity/app.config new file mode 100644 index 0000000..e03ea0a --- /dev/null +++ b/Entity/app.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Entity/packages.config b/Entity/packages.config new file mode 100644 index 0000000..09c7121 --- /dev/null +++ b/Entity/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/HBase/HBase.csproj b/HBase/HBase.csproj new file mode 100644 index 0000000..f03a65a --- /dev/null +++ b/HBase/HBase.csproj @@ -0,0 +1,144 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {27D3BA32-12D4-484E-83D0-573D30FC2A60} + Library + Properties + HBase + HBase + v4.0 + 512 + + + + + + + + + + + + + + + 3.5 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + NativeRecommendedRules.ruleset + x86 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + AllRules.ruleset + + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll + + + False + bin\Debug\Newtonsoft.Json.dll + + + + 3.5 + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.IO.dll + + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Runtime.dll + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Threading.Tasks.dll + + + 3.5 + + + 3.5 + + + + + + + + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HBase/HbaseUnit.cs b/HBase/HbaseUnit.cs new file mode 100644 index 0000000..bc70b97 --- /dev/null +++ b/HBase/HbaseUnit.cs @@ -0,0 +1,153 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using System.Net; +using Newtonsoft.Json; + +namespace Baosight.HBase +{ + class Token + { + public string token { get; set; } + public string errcode { get; set; } + } + class OperationType + { + public static string token = "token"; //权限认证 + public static string table = "table"; //表操作 + public static string record = "record"; //记录操作 + public static string index = "index"; //索引操作 + public static string metrics = "metrics";//监控操作 + } + + public class HbaseUnit + { + private string username = ""; + private string password = ""; + private string urlhead = ""; + + private Token token; + + + public HbaseUnit(string username, string password, string urlhead) + { + ReInit(username, password, urlhead); + } + public void ReInit(string username, string password, string urlhead) + { + Console.WriteLine("******************************init******************************"); + this.username = username; + this.password = password; + this.urlhead = urlhead; + ReGetToken(); + } + + private string ReGetToken() + { + string retString = Request4Json.Get(username, password, urlhead + OperationType.token); + if (retString == null) + { + Console.WriteLine("can't get token"); + return null; + } + Console.WriteLine("token>get token string{0}\n", retString); + + JsonSerializer serializer = new JsonSerializer(); + StringReader sr = new StringReader(retString); + token = (Token)serializer.Deserialize(new JsonTextReader(sr), typeof(Token)); + if (token == null) + { + Console.WriteLine("token is null"); + return null; + } + Console.WriteLine("token>{0}\n", token.token); + return token.token; + } + + public string Get(string operationUrl) + { + if (this.token.token == null || this.token.token == "") + { + if (ReGetToken() == null) + { + return "can't get token"; + } + } + return Request4Json.Get(username, this.token.token, this.urlhead + operationUrl); + } + + public byte[] GetBytes(string operationUrl) + { + if (this.token.token == null || this.token.token == "") + { + if (ReGetToken() == null) + { + return null; + } + } + return Request4Json.GetBytes(username, this.token.token, this.urlhead + operationUrl); + } + + + + public string PostBytes(string operationUrl, byte[] data) + { + if (this.token.token == null || this.token.token == "") + { + if (ReGetToken() == null) + { + return "can't get token"; + } + } + return Request4Json.PostBytes(this.username, this.token.token, this.urlhead + operationUrl, data); + } + + public string Post(string operationUrl, string data) + { + if (this.token.token == null || this.token.token == "") + { + if (ReGetToken() == null) + { + return "can't get token"; + } + } + return Request4Json.Post(this.username, this.token.token, this.urlhead + operationUrl, data); + } + + public string Put(string operationUrl, string data) + { + if (this.token.token == null || this.token.token == "") + { + if (ReGetToken() == null) + { + return "can't get token"; + } + } + return Request4Json.Put(this.username, this.token.token, this.urlhead + operationUrl, data); ; + } + + public string Delete(string operationUrl) + { + if (this.token.token == null || this.token.token == "") + { + if (ReGetToken() == null) + { + return "can't get token"; + } + } + return Request4Json.Delete(this.username, this.token.token, this.urlhead + operationUrl); + } + + public byte[] File2Bytes(string path) + { + return Request4Json.File2Bytes(path); + } + + public void Bytes2File(byte[] buff, string path) + { + Request4Json.Bytes2File(buff, path); + } + } +} diff --git a/HBase/Program.cs b/HBase/Program.cs new file mode 100644 index 0000000..b18736d --- /dev/null +++ b/HBase/Program.cs @@ -0,0 +1,211 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using Newtonsoft.Json; +using System.Net; +using System.Threading; + +namespace Baosight.HBase +{ + class TOKEN + { + public string token { get; set; } + public string errcode { get; set; } + } + + class Program + { + static void Main(string[] args) + { + + HbaseUnit hbase = new HbaseUnit("admin@crvm", "admin", "http://10.25.27.53/otsrest/api/"); + + //##Create file record + //byte[] data_file_in = hbase.File2Bytes("D:\\mp3\\Taylor Swift - Out Of The Woods.mp3"); + + //for (int i = 0; i < 10; i++) + //{ + + // string retString = hbase.PostBytes("record/file/T_CYC_SHAKE?key="+i.ToString()+".mp3&column=mp3", data_file_in);//huangming_mob是表名 + // Console.WriteLine("up load file>{0}:{1}\n",i, retString); + //} + + //for (int i = 0; i < 10; i++) + //{ + // //##Get file record + // byte[] data_file_out = hbase.GetBytes("record/file/T_CYC_SHAKE?key=" + i.ToString() + ".mp3&column=mp3");//huangming_mob是表名 + + // hbase.Bytes2File(data_file_out, "D:\\mp3\\" + i.ToString() + ".mp3"); + // Console.WriteLine("down load file>{0}:{1}\n", i, i.ToString() + ".mp3"); + //} + Console.WriteLine("start "); + for (int i = 0; i < 10; i++) + { + + Thread t = new Thread(new ThreadStart(delegate() + { + //HbaseUnit hbase = new HbaseUnit("admin@crvm", "admin", "http://10.25.27.53/otsrest/api/"); + //##Get file record + byte[] data_file_out = hbase.GetBytes("record/file/T_CYC_SHAKE?key=" + i.ToString() + ".mp3&column=mp3");//huangming_mob是表名 + + hbase.Bytes2File(data_file_out, "D:\\mp3\\" + i.ToString() + ".mp3"); + Console.WriteLine("down load file>{0}:{1}\n", i, i.ToString() + ".mp3"); + + })); + t.Start(); + } + Console.WriteLine("end "); + + + + + ////##Create table + ////String create_table = "{\"compression\":\"snappy\",\"max_versions\":1,\"description\":\"\",\"mob_enabled\":false,\"mob_threshold\":0}"; + //StringWriter sw = new StringWriter(); + //JsonWriter writer = new JsonTextWriter(sw); + //writer.WriteStartObject(); + //writer.WritePropertyName("description"); + //writer.WriteValue(""); + //writer.WritePropertyName("compression"); + //writer.WriteValue("snappy"); + //writer.WritePropertyName("max_versions"); + //writer.WriteValue(1); + //writer.WritePropertyName("mob_enabled"); + //writer.WriteValue(false); + //writer.WritePropertyName("mob_threshold"); + //writer.WriteValue(0); + //writer.WriteEndObject(); + //writer.Flush(); + //String create_table = sw.GetStringBuilder().ToString(); + + //string retString = hbase.Post("table/huangming", create_table);//huangming是表名 + //Console.WriteLine("\nC#======>{0}\n", retString); + //retString = hbase.Get("table/huangming"); + //Console.WriteLine("\nC#======>{0}\n", retString); + + ////##Create normal record + ////String create_record = "{\"records\":[ {\"id\":\"10000\", \"huang\":\"abc0\"} ] }"; + //StringWriter sw_rec = new StringWriter(); + //JsonWriter writer_rec = new JsonTextWriter(sw_rec); + //writer_rec.WriteStartObject(); + //writer_rec.WritePropertyName("records"); + //writer_rec.WriteStartArray(); + + //writer_rec.WriteStartObject(); + //writer_rec.WritePropertyName("id"); + //writer_rec.WriteValue("10000"); + //writer_rec.WritePropertyName("huang"); + //writer_rec.WriteValue("abc0"); + //writer_rec.WriteEndObject(); + + //writer_rec.WriteEndArray(); + //writer_rec.WriteEndObject(); + //writer_rec.Flush(); + //String create_record = sw_rec.GetStringBuilder().ToString(); + //retString = hbase.Post("record/huangming", create_record);//huangming是表名 + //Console.WriteLine("\nC#======>{0}\n", retString); + + ////##Get normal record + //retString = hbase.Get("record/huangming?key=10000"); + //Console.WriteLine("\nC#======>{0}\n", retString); + + //retString = hbase.Get("record/huangming?keyexp=*"); + //Console.WriteLine("\nC#======>{0}\n", retString); + + ////##Update normal record + ////String update_record = "{\"records\":[ {\"id\":\"10000\", \"huang\":\"abc0_update\"} ] }"; + //StringWriter sw_rec2 = new StringWriter(); + //JsonWriter writer_rec2 = new JsonTextWriter(sw_rec2); + //writer_rec2.WriteStartObject(); + //writer_rec2.WritePropertyName("records"); + //writer_rec2.WriteStartArray(); + + //writer_rec2.WriteStartObject(); + //writer_rec2.WritePropertyName("id"); + //writer_rec2.WriteValue("10000"); + //writer_rec2.WritePropertyName("huang"); + //writer_rec2.WriteValue("abc0_update"); + //writer_rec2.WriteEndObject(); + + //writer_rec2.WriteEndArray(); + //writer_rec2.WriteEndObject(); + //writer_rec2.Flush(); + //String update_record = sw_rec2.GetStringBuilder().ToString(); + //retString = hbase.Post("record/huangming", update_record);//huangming是表名 + //Console.WriteLine("\nC#======>{0}\n", retString); + //retString = hbase.Get( "record/huangming?key=10000"); + //Console.WriteLine("\nC#======>{0}\n", retString); + + ////##Delete normal record + //retString = hbase.Delete("record/huangming?key=10000"); + //Console.WriteLine("\nC#======>{0}\n", retString); + //retString = hbase.Get("record/huangming?key=10000"); + //Console.WriteLine("\nC#======>{0}\n", retString); + + ////##Update table + ////String update_table = "{\"description\": \"hello\"}"; + //StringWriter sw2 = new StringWriter(); + //JsonWriter writer2 = new JsonTextWriter(sw2); + //writer2.WriteStartObject(); + //writer2.WritePropertyName("description"); + //writer2.WriteValue("hello"); + //writer2.WriteEndObject(); + //writer2.Flush(); + //String update_table = sw2.GetStringBuilder().ToString(); + //retString = hbase.Put("table/huangming", update_table);//huangming是表名 + //Console.WriteLine("\nC#======>{0}\n", retString); + //retString = hbase.Get("table/huangming"); + //Console.WriteLine("\nC#======>{0}\n", retString); + + ////##Delete table + //retString = hbase.Delete("table/huangming");//huangming是表名 + //Console.WriteLine("\nC#======>{0}\n", retString); + //retString = hbase.Get("table/huangming"); + //Console.WriteLine("\nC#======>{0}\n", retString); + + ////##Create table with mob + ////String create_table_mob = "{\"compression\":\"snappy\",\"max_versions\":1,\"description\":\"\",\"mob_enabled\":true,\"mob_threshold\":100}"; + //StringWriter sw_mob = new StringWriter(); + //JsonWriter writer_mob = new JsonTextWriter(sw_mob); + //writer_mob.WriteStartObject(); + //writer_mob.WritePropertyName("description"); + //writer_mob.WriteValue(""); + //writer_mob.WritePropertyName("compression"); + //writer_mob.WriteValue("snappy"); + //writer_mob.WritePropertyName("max_versions"); + //writer_mob.WriteValue(1); + //writer_mob.WritePropertyName("mob_enabled"); + //writer_mob.WriteValue(true); + //writer_mob.WritePropertyName("mob_threshold"); + //writer_mob.WriteValue(100); + //writer_mob.WriteEndObject(); + //writer_mob.Flush(); + //String create_table_mob = sw_mob.GetStringBuilder().ToString(); + //retString = hbase.Post("table/huangming_mob", create_table_mob);//huangming_mob是表名 + //Console.WriteLine("\nC#======>{0}\n", retString); + //retString = hbase.Get("table/huangming_mob"); + //Console.WriteLine("\nC#======>{0}\n", retString); + + ////##Create file record + //byte[] data_file_in = hbase.File2Bytes("D:\\mp3\\Taylor Swift - Out Of The Woods.mp3"); + //retString = hbase.PostBytes("record/file/huangming_mob?key=away.mp3&column=mp3", data_file_in);//huangming_mob是表名 + //Console.WriteLine("\nC#======>{0}\n", retString); + + ////##Get file record + //byte[] data_file_out = hbase.GetBytes("record/file/huangming_mob?key=away.mp3&column=mp3");//huangming_mob是表名 + //hbase.Bytes2File(data_file_out, "D:\\mp3\\Out Of The Woods.mp3"); + + //##Delete table with mob + //retString = hbase.Delete("table/huangming_mob");//huangming_mob是表名 + //Console.WriteLine("\nC#======>{0}\n", retString); + //retString = hbase.Get("table/huangming_mob"); + //Console.WriteLine("\nC#======>{0}\n", retString); + + Console.ReadLine(); + } + + + } +} diff --git a/HBase/Properties/AssemblyInfo.cs b/HBase/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b429553 --- /dev/null +++ b/HBase/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过下列属性集 +// 控制。更改这些属性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("hbase")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("hbase")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 属性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("44fae09b-5f58-44b3-be4f-0db47e46e6a4")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/HBase/Request4Json.cs b/HBase/Request4Json.cs new file mode 100644 index 0000000..ab5d3b2 --- /dev/null +++ b/HBase/Request4Json.cs @@ -0,0 +1,250 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using System.Net; + +namespace Baosight.HBase +{ + class Request4Json + { + public static string Get(string username, string token, string url) + { + //Uri uri = new Uri(url); + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "GET"; + request.ContentType = "application/json"; + + string userNamePassword = username + ":" + token; + request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(userNamePassword))); + + string responseString = null; + try + { + using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) + { + //Console.WriteLine("***" + response.StatusCode.ToString()); + StreamReader reader = new StreamReader(response.GetResponseStream()); + responseString = reader.ReadToEnd(); + reader.Close(); + } + } + catch (WebException ex) + { + responseString = ex.Message; + } + + return responseString; + } + + public static byte[] GetBytes(string username, string token, string url) + { + //Uri uri = new Uri(url); + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "GET"; + request.ContentType = "application/json"; + + string userNamePassword = username + ":" + token; + request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(userNamePassword))); + + byte[] responseBytes = null; + try + { + using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) + { + //Console.WriteLine("***" + response.StatusCode.ToString()); + Stream stream = response.GetResponseStream(); + long contentLength = response.ContentLength; + responseBytes = new byte[contentLength]; + responseBytes = ReadStreamFully(stream); + stream.Close(); + } + } + catch (WebException ex) + { + string responseString = ex.Message; + Console.WriteLine("***" + responseString); + } + + return responseBytes; + } + + public static string PostBytes(string username, string token, string url, byte[] data) + { + // Uri uri = new Uri(url); + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "POST"; + request.ContentType = "application/octet-stream"; + + string userNamePassword = username + ":" + token; + request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(userNamePassword))); + + request.ContentLength = data.Length; + Stream reqStream = request.GetRequestStream(); + reqStream.Write(data, 0, data.Length); + reqStream.Close(); + + string responseString = null; + try + { + using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) + { + Console.WriteLine("***" + response.StatusCode.ToString()); + StreamReader reader = new StreamReader(response.GetResponseStream()); + responseString = reader.ReadToEnd(); + reader.Close(); + } + } + catch (WebException ex) + { + responseString = ex.Message; + } + return responseString; + } + + public static string Post(string username, string token, string url, string data) + { + //Uri uri = new Uri(url); + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "POST"; + request.ContentType = "application/json"; + + string userNamePassword = username + ":" + token; + request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(userNamePassword))); + + byte[] bs = Encoding.UTF8.GetBytes(data); + Stream reqStream = request.GetRequestStream(); + reqStream.Write(bs, 0, bs.Length); + reqStream.Close(); + + string responseString = null; + try + { + using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) + { + Console.WriteLine("***" + response.StatusCode.ToString()); + StreamReader reader = new StreamReader(response.GetResponseStream()); + responseString = reader.ReadToEnd(); + reader.Close(); + } + } + catch (WebException ex) + { + responseString = ex.Message; + } + return responseString; + } + + public static string Put(string username, string token, string url, string data) + { + // Uri uri = new Uri(url); + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "PUT"; + request.ContentType = "application/json"; + + string userNamePassword = username + ":" + token; + request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(userNamePassword))); + + byte[] bs = Encoding.UTF8.GetBytes(data); + Stream reqStream = request.GetRequestStream(); + reqStream.Write(bs, 0, bs.Length); + reqStream.Close(); + + string responseString = null; + try + { + using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) + { + //Console.WriteLine("***" + response.StatusCode.ToString()); + StreamReader reader = new StreamReader(response.GetResponseStream()); + responseString = reader.ReadToEnd(); + reader.Close(); + } + } + catch (WebException ex) + { + responseString = ex.Message; + } + return responseString; + } + + public static string Delete(string username, string token, string url) + { + // Uri uri = new Uri(url); + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "DELETE"; + request.ContentType = "application/json"; + + string userNamePassword = username + ":" + token; + request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(userNamePassword))); + + string responseString = null; + try + { + using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) + { + //Console.WriteLine("***" + response.StatusCode.ToString()); + StreamReader reader = new StreamReader(response.GetResponseStream()); + responseString = reader.ReadToEnd(); + reader.Close(); + } + } + catch (WebException ex) + { + responseString = ex.Message; + } + return responseString; + } + + static byte[] ReadStreamFully(Stream stream) + { + byte[] buffer = new byte[128]; + using (MemoryStream ms = new MemoryStream()) + { + while (true) + { + int read = stream.Read(buffer, 0, buffer.Length); + if (read <= 0) + return ms.ToArray(); + ms.Write(buffer, 0, read); + } + } + } + + public static byte[] File2Bytes(string path) + { + if (!File.Exists(path)) + { + return new byte[0]; + } + + FileInfo fi = new FileInfo(path); + byte[] buff = new byte[fi.Length]; + + FileStream fs = fi.OpenRead(); + fs.Read(buff, 0, Convert.ToInt32(fs.Length)); + fs.Close(); + + return buff; + } + + public static void Bytes2File(byte[] buff, string savepath) + { + if (buff == null) + { + return; + } + if (File.Exists(savepath)) + { + File.Delete(savepath); + } + + FileStream fs = new FileStream(savepath, FileMode.CreateNew); + BinaryWriter bw = new BinaryWriter(fs); + bw.Write(buff, 0, buff.Length); + bw.Close(); + fs.Close(); + } + } +} diff --git a/HBase/app.config b/HBase/app.config new file mode 100644 index 0000000..e03ea0a --- /dev/null +++ b/HBase/app.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HBase/packages.config b/HBase/packages.config new file mode 100644 index 0000000..09c7121 --- /dev/null +++ b/HBase/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Host/App.config b/Host/App.config new file mode 100644 index 0000000..5fb542a --- /dev/null +++ b/Host/App.config @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Host/AppSetting.config b/Host/AppSetting.config new file mode 100644 index 0000000..253dd81 --- /dev/null +++ b/Host/AppSetting.config @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Host/DataAccessForm.cs b/Host/DataAccessForm.cs new file mode 100644 index 0000000..4f253ec --- /dev/null +++ b/Host/DataAccessForm.cs @@ -0,0 +1,216 @@ +using System; +using System.Windows.Forms; +using CRVM.Utility; +using CRVM.SIDExcuter; +using CRVM.Entity; + +namespace CRVM +{ + public partial class DataAccessForm : Form + { + //private Statusmodify modify; + private DbHelper dbHelper; + + public DataAccessForm(DbHelper dbHelper) + { + this.dbHelper = dbHelper; + InitializeComponent(); + } + + private void MainForm_Load(object sender, EventArgs e) + { + FillString(dbHelper.SouDB, "sourcedb"); + FillString(dbHelper.DesDB, "destdb"); + Timer1Int.Text = dbHelper.Freq.ToString(); + if (!dbHelper.isStart) + StopStatus(); + else + StartStatus(); + } + + private EDBItem FillSourceDb1() + { + EDBItem soudb = new EDBItem(); + soudb.DataType = cbxDbTypeBpc1.Text.Trim(); + soudb.Database = txtDbNameBpc1.Text.Trim(); + soudb.Userid = txtDbUserBpc1.Text.Trim(); + soudb.Password = txtDbPwdBpc1.Text.Trim(); + soudb.Ipaddress = txtDbIpBpc1.Text.Trim(); + return soudb; + } + + private EDBItem FillSourceDb2() + { + EDBItem soudb = new EDBItem(); + soudb.DataType = cbxDbTypeBpc2.Text.Trim(); + soudb.Database = txtDbNameBpc2.Text.Trim(); + soudb.Userid = txtDbUserBpc2.Text.Trim(); + soudb.Password = txtDbPwdBpc2.Text.Trim(); + soudb.Ipaddress = txtDbIpBpc2.Text.Trim(); + return soudb; + } + + private void StartStatus() + { + cbxDbTypeBpc1.Enabled = false; + txtDbNameBpc1.ReadOnly = true; + txtDbUserBpc1.ReadOnly = true; + txtDbPwdBpc1.ReadOnly = true; + txtDbIpBpc1.ReadOnly = true; + txtDbNameBpc2.ReadOnly = true; + txtDbUserBpc2.ReadOnly = true; + txtDbPwdBpc2.ReadOnly = true; + txtDbIpBpc2.ReadOnly = true; + cbxDbTypeBpc2.Enabled = false; + btnDBName1.Visible = false; + btnDBName2.Visible = false; + + btnStart.Enabled = false; + btnStop.Enabled = true; + btnModify.Enabled = false; + btnSave.Enabled = false; + + Timer1Int.ReadOnly = true; + } + + private void StopStatus() + { + cbxDbTypeBpc1.Enabled = true; + txtDbNameBpc1.ReadOnly = false; + txtDbUserBpc1.ReadOnly = false; + txtDbPwdBpc1.ReadOnly = false; + txtDbIpBpc1.ReadOnly = false; + txtDbNameBpc2.ReadOnly = false; + txtDbUserBpc2.ReadOnly = false; + txtDbPwdBpc2.ReadOnly = false; + txtDbIpBpc2.ReadOnly = false; + cbxDbTypeBpc2.Enabled = true; + + btnStart.Enabled = true; + btnStop.Enabled = false; + btnModify.Enabled = true; + btnSave.Enabled = true; + + Timer1Int.ReadOnly = false; + } + + private void FillString(EDBItem soudb, string dbName) + { + if (dbName == "sourcedb") + { + cbxDbTypeBpc1.Text = soudb.DataType; + txtDbNameBpc1.Text = soudb.Database; + txtDbUserBpc1.Text = soudb.Userid; + txtDbPwdBpc1.Text = soudb.Password; + txtDbIpBpc1.Text = soudb.Ipaddress; + } + else if (dbName == "destdb") + { + cbxDbTypeBpc2.Text = soudb.DataType; + txtDbNameBpc2.Text = soudb.Database; + txtDbUserBpc2.Text = soudb.Userid; + txtDbPwdBpc2.Text = soudb.Password; + txtDbIpBpc2.Text = soudb.Ipaddress; + } + } + + private void btnDBName1_Click(object sender, EventArgs e) + { + openFileDialog1.Filter = "*.accdb|*.accdb"; + openFileDialog1.ShowDialog(); + txtDbNameBpc1.Text = openFileDialog1.FileName; + } + + private void btnDBName2_Click(object sender, EventArgs e) + { + openFileDialog1.Filter = "*.accdb|*.accdb"; + openFileDialog1.ShowDialog(); + txtDbNameBpc2.Text = openFileDialog1.FileName; + } + + private void btnStart1_Click(object sender, EventArgs e) + { + if (!dbHelper.IsConnected(FillSourceDb1())) + { + MessageBox.Show("L2数据库连接失败,请修改连接配置或查看网络"); + return; + } + if (!dbHelper.IsConnected(FillSourceDb2())) + { + MessageBox.Show("本地数据库连接失败,请修改连接配置或查看网络"); + return; + } + dbHelper.isStart = true; + StartStatus(); + } + + private void btnStop1_Click(object sender, EventArgs e) + { + dbHelper.isStart = false; + StopStatus(); + } + + private void btnModify_Click(object sender, EventArgs e) + { + + } + + private void btnSave_Click(object sender, EventArgs e) + { + dbHelper.SouDB = FillSourceDb1(); + dbHelper.DesDB = FillSourceDb2(); + + if (!IsFreRight(Timer1Int.Text.Trim())) + { + Timer1Int.Text = dbHelper.Freq.ToString(); + MessageBox.Show("频率必须设置为正整数!"); + return; + } + dbHelper.Freq = Convert.ToInt32(Timer1Int.Text.Trim()); + + dbHelper.SaveConfigData(); + MessageBox.Show("保存文件成功"); + } + + private void soulinktest_Click(object sender, EventArgs e) + { + if (dbHelper.IsConnected(FillSourceDb1())) + { + MessageBox.Show("数据库连接成功!"); + } + else + { + MessageBox.Show("数据库连接失败!"); + } + } + + private void deslinktest_Click(object sender, EventArgs e) + { + if (dbHelper.IsConnected(FillSourceDb2())) + { + MessageBox.Show("数据库连接成功!"); + } + else + { + MessageBox.Show("数据库连接失败!"); + } + } + + private void Timer1Int_Validating(object sender, System.ComponentModel.CancelEventArgs e) + { + if (!IsFreRight(Timer1Int.Text.Trim())) + { + Timer1Int.Text = dbHelper.Freq.ToString(); + MessageBox.Show("频率必须设置为正整数!"); + return; + } + } + + private bool IsFreRight(string freStr) + { + string pattren = @"^[1-9]\d*$"; + return SysParam.Instance.DataIsMatch(freStr, pattren); + } + } +} + diff --git a/Host/DataAccessForm.designer.cs b/Host/DataAccessForm.designer.cs new file mode 100644 index 0000000..06aabc9 --- /dev/null +++ b/Host/DataAccessForm.designer.cs @@ -0,0 +1,544 @@ +namespace CRVM +{ + partial class DataAccessForm + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DataAccessForm)); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.soulinktest = new System.Windows.Forms.Button(); + this.btnDBName1 = new System.Windows.Forms.Button(); + this.txtDbPwdBpc1 = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.txtDbIpBpc1 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.txtDbNameBpc1 = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.cbxDbTypeBpc1 = new System.Windows.Forms.ComboBox(); + this.txtDbUserBpc1 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.deslinktest = new System.Windows.Forms.Button(); + this.btnDBName2 = new System.Windows.Forms.Button(); + this.txtDbPwdBpc2 = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.txtDbIpBpc2 = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.txtDbNameBpc2 = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.cbxDbTypeBpc2 = new System.Windows.Forms.ComboBox(); + this.txtDbUserBpc2 = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.btnSave = new System.Windows.Forms.Button(); + this.btnStart = new System.Windows.Forms.Button(); + this.btnStop = new System.Windows.Forms.Button(); + this.btnModify = new System.Windows.Forms.Button(); + this.Timer1Int = new System.Windows.Forms.TextBox(); + this.label25 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2.Controls.Add(this.groupBox1, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.groupBox2, 1, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 3); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(659, 339); + this.tableLayoutPanel2.TabIndex = 7; + // + // groupBox1 + // + this.groupBox1.AutoSize = true; + this.groupBox1.Controls.Add(this.soulinktest); + this.groupBox1.Controls.Add(this.btnDBName1); + this.groupBox1.Controls.Add(this.txtDbPwdBpc1); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.txtDbIpBpc1); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.txtDbNameBpc1); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.cbxDbTypeBpc1); + this.groupBox1.Controls.Add(this.txtDbUserBpc1); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox1.Location = new System.Drawing.Point(3, 3); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(323, 333); + this.groupBox1.TabIndex = 6; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "源数据库"; + // + // soulinktest + // + this.soulinktest.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.soulinktest.Location = new System.Drawing.Point(232, 275); + this.soulinktest.Name = "soulinktest"; + this.soulinktest.Size = new System.Drawing.Size(85, 30); + this.soulinktest.TabIndex = 14; + this.soulinktest.Text = "测试连接"; + this.soulinktest.UseVisualStyleBackColor = true; + this.soulinktest.Click += new System.EventHandler(this.soulinktest_Click); + // + // btnDBName1 + // + this.btnDBName1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnDBName1.Location = new System.Drawing.Point(250, 130); + this.btnDBName1.Name = "btnDBName1"; + this.btnDBName1.Size = new System.Drawing.Size(32, 29); + this.btnDBName1.TabIndex = 13; + this.btnDBName1.Text = "...."; + this.btnDBName1.UseVisualStyleBackColor = true; + this.btnDBName1.Visible = false; + this.btnDBName1.Click += new System.EventHandler(this.btnDBName1_Click); + // + // txtDbPwdBpc1 + // + this.txtDbPwdBpc1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtDbPwdBpc1.Location = new System.Drawing.Point(154, 202); + this.txtDbPwdBpc1.Name = "txtDbPwdBpc1"; + this.txtDbPwdBpc1.Size = new System.Drawing.Size(128, 29); + this.txtDbPwdBpc1.TabIndex = 11; + this.txtDbPwdBpc1.UseSystemPasswordChar = true; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.Location = new System.Drawing.Point(93, 205); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(46, 21); + this.label6.TabIndex = 1; + this.label6.Text = "密码:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(77, 169); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(62, 21); + this.label5.TabIndex = 1; + this.label5.Text = "用户名:"; + // + // txtDbIpBpc1 + // + this.txtDbIpBpc1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtDbIpBpc1.Location = new System.Drawing.Point(154, 94); + this.txtDbIpBpc1.Name = "txtDbIpBpc1"; + this.txtDbIpBpc1.Size = new System.Drawing.Size(128, 29); + this.txtDbIpBpc1.TabIndex = 7; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(3, 133); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(136, 21); + this.label2.TabIndex = 1; + this.label2.Text = "数据库名称(路径):"; + // + // txtDbNameBpc1 + // + this.txtDbNameBpc1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtDbNameBpc1.Location = new System.Drawing.Point(154, 130); + this.txtDbNameBpc1.Name = "txtDbNameBpc1"; + this.txtDbNameBpc1.Size = new System.Drawing.Size(128, 29); + this.txtDbNameBpc1.TabIndex = 9; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.Location = new System.Drawing.Point(78, 97); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(61, 21); + this.label4.TabIndex = 1; + this.label4.Text = "IP地址:"; + // + // cbxDbTypeBpc1 + // + this.cbxDbTypeBpc1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbxDbTypeBpc1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.cbxDbTypeBpc1.FormattingEnabled = true; + this.cbxDbTypeBpc1.Items.AddRange(new object[] { + "oracle", + "access", + "db2", + "postgres"}); + this.cbxDbTypeBpc1.Location = new System.Drawing.Point(154, 56); + this.cbxDbTypeBpc1.Name = "cbxDbTypeBpc1"; + this.cbxDbTypeBpc1.Size = new System.Drawing.Size(128, 29); + this.cbxDbTypeBpc1.TabIndex = 6; + // + // txtDbUserBpc1 + // + this.txtDbUserBpc1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtDbUserBpc1.Location = new System.Drawing.Point(154, 166); + this.txtDbUserBpc1.Name = "txtDbUserBpc1"; + this.txtDbUserBpc1.Size = new System.Drawing.Size(128, 29); + this.txtDbUserBpc1.TabIndex = 10; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(93, 60); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(46, 21); + this.label3.TabIndex = 1; + this.label3.Text = "类型:"; + // + // groupBox2 + // + this.groupBox2.AutoSize = true; + this.groupBox2.Controls.Add(this.deslinktest); + this.groupBox2.Controls.Add(this.btnDBName2); + this.groupBox2.Controls.Add(this.txtDbPwdBpc2); + this.groupBox2.Controls.Add(this.label8); + this.groupBox2.Controls.Add(this.label9); + this.groupBox2.Controls.Add(this.txtDbIpBpc2); + this.groupBox2.Controls.Add(this.label10); + this.groupBox2.Controls.Add(this.txtDbNameBpc2); + this.groupBox2.Controls.Add(this.label11); + this.groupBox2.Controls.Add(this.cbxDbTypeBpc2); + this.groupBox2.Controls.Add(this.txtDbUserBpc2); + this.groupBox2.Controls.Add(this.label12); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox2.Location = new System.Drawing.Point(332, 3); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(324, 333); + this.groupBox2.TabIndex = 13; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "本地数据库"; + // + // deslinktest + // + this.deslinktest.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.deslinktest.Location = new System.Drawing.Point(233, 275); + this.deslinktest.Name = "deslinktest"; + this.deslinktest.Size = new System.Drawing.Size(85, 30); + this.deslinktest.TabIndex = 15; + this.deslinktest.Text = "测试连接"; + this.deslinktest.UseVisualStyleBackColor = true; + this.deslinktest.Click += new System.EventHandler(this.deslinktest_Click); + // + // btnDBName2 + // + this.btnDBName2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnDBName2.Location = new System.Drawing.Point(252, 130); + this.btnDBName2.Name = "btnDBName2"; + this.btnDBName2.Size = new System.Drawing.Size(32, 29); + this.btnDBName2.TabIndex = 14; + this.btnDBName2.Text = "...."; + this.btnDBName2.UseVisualStyleBackColor = true; + this.btnDBName2.Visible = false; + this.btnDBName2.Click += new System.EventHandler(this.btnDBName2_Click); + // + // txtDbPwdBpc2 + // + this.txtDbPwdBpc2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtDbPwdBpc2.Location = new System.Drawing.Point(156, 202); + this.txtDbPwdBpc2.Name = "txtDbPwdBpc2"; + this.txtDbPwdBpc2.Size = new System.Drawing.Size(128, 29); + this.txtDbPwdBpc2.TabIndex = 11; + this.txtDbPwdBpc2.UseSystemPasswordChar = true; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.Location = new System.Drawing.Point(94, 205); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(46, 21); + this.label8.TabIndex = 1; + this.label8.Text = "密码:"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.Location = new System.Drawing.Point(78, 169); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(62, 21); + this.label9.TabIndex = 1; + this.label9.Text = "用户名:"; + // + // txtDbIpBpc2 + // + this.txtDbIpBpc2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtDbIpBpc2.Location = new System.Drawing.Point(156, 94); + this.txtDbIpBpc2.Name = "txtDbIpBpc2"; + this.txtDbIpBpc2.Size = new System.Drawing.Size(128, 29); + this.txtDbIpBpc2.TabIndex = 7; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.Location = new System.Drawing.Point(4, 133); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(136, 21); + this.label10.TabIndex = 1; + this.label10.Text = "数据库名称(路径):"; + // + // txtDbNameBpc2 + // + this.txtDbNameBpc2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtDbNameBpc2.Location = new System.Drawing.Point(156, 130); + this.txtDbNameBpc2.Name = "txtDbNameBpc2"; + this.txtDbNameBpc2.Size = new System.Drawing.Size(128, 29); + this.txtDbNameBpc2.TabIndex = 9; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label11.Location = new System.Drawing.Point(79, 97); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(61, 21); + this.label11.TabIndex = 1; + this.label11.Text = "IP地址:"; + // + // cbxDbTypeBpc2 + // + this.cbxDbTypeBpc2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbxDbTypeBpc2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.cbxDbTypeBpc2.FormattingEnabled = true; + this.cbxDbTypeBpc2.Items.AddRange(new object[] { + "oracle", + "access", + "db2", + "postgres"}); + this.cbxDbTypeBpc2.Location = new System.Drawing.Point(157, 56); + this.cbxDbTypeBpc2.Name = "cbxDbTypeBpc2"; + this.cbxDbTypeBpc2.Size = new System.Drawing.Size(128, 29); + this.cbxDbTypeBpc2.TabIndex = 6; + // + // txtDbUserBpc2 + // + this.txtDbUserBpc2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtDbUserBpc2.Location = new System.Drawing.Point(156, 166); + this.txtDbUserBpc2.Name = "txtDbUserBpc2"; + this.txtDbUserBpc2.Size = new System.Drawing.Size(128, 29); + this.txtDbUserBpc2.TabIndex = 10; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.Location = new System.Drawing.Point(94, 60); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(46, 21); + this.label12.TabIndex = 1; + this.label12.Text = "类型:"; + // + // btnSave + // + this.btnSave.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnSave.Location = new System.Drawing.Point(332, 17); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(100, 35); + this.btnSave.TabIndex = 20; + this.btnSave.Text = "保存配置"; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // btnStart + // + this.btnStart.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnStart.Location = new System.Drawing.Point(440, 17); + this.btnStart.Name = "btnStart"; + this.btnStart.Size = new System.Drawing.Size(100, 35); + this.btnStart.TabIndex = 14; + this.btnStart.Text = "启动"; + this.btnStart.UseVisualStyleBackColor = true; + this.btnStart.Click += new System.EventHandler(this.btnStart1_Click); + // + // btnStop + // + this.btnStop.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnStop.Location = new System.Drawing.Point(548, 17); + this.btnStop.Name = "btnStop"; + this.btnStop.Size = new System.Drawing.Size(100, 35); + this.btnStop.TabIndex = 1; + this.btnStop.Text = "停止"; + this.btnStop.UseVisualStyleBackColor = true; + this.btnStop.Click += new System.EventHandler(this.btnStop1_Click); + // + // btnModify + // + this.btnModify.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnModify.Location = new System.Drawing.Point(220, 17); + this.btnModify.Name = "btnModify"; + this.btnModify.Size = new System.Drawing.Size(100, 35); + this.btnModify.TabIndex = 19; + this.btnModify.Text = "修改状态"; + this.btnModify.UseVisualStyleBackColor = true; + this.btnModify.Visible = false; + this.btnModify.Click += new System.EventHandler(this.btnModify_Click); + // + // Timer1Int + // + this.Timer1Int.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Timer1Int.Location = new System.Drawing.Point(110, 19); + this.Timer1Int.Name = "Timer1Int"; + this.Timer1Int.Size = new System.Drawing.Size(74, 33); + this.Timer1Int.TabIndex = 17; + this.Timer1Int.Validating += new System.ComponentModel.CancelEventHandler(this.Timer1Int_Validating); + // + // label25 + // + this.label25.AutoSize = true; + this.label25.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label25.Location = new System.Drawing.Point(20, 22); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(88, 26); + this.label25.TabIndex = 18; + this.label25.Text = "频率(秒):"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 70F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(665, 415); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel1 + // + this.panel1.Controls.Add(this.btnSave); + this.panel1.Controls.Add(this.Timer1Int); + this.panel1.Controls.Add(this.label25); + this.panel1.Controls.Add(this.btnStart); + this.panel1.Controls.Add(this.btnStop); + this.panel1.Controls.Add(this.btnModify); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(3, 348); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(659, 64); + this.panel1.TabIndex = 8; + // + // DataAccess + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(665, 415); + this.Controls.Add(this.tableLayoutPanel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "DataAccess"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "数据库互访工具"; + this.Load += new System.EventHandler(this.MainForm_Load); + this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button btnDBName1; + private System.Windows.Forms.TextBox txtDbPwdBpc1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox txtDbIpBpc1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtDbNameBpc1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox cbxDbTypeBpc1; + private System.Windows.Forms.TextBox txtDbUserBpc1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Button btnDBName2; + private System.Windows.Forms.TextBox txtDbPwdBpc2; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox txtDbIpBpc2; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox txtDbNameBpc2; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.ComboBox cbxDbTypeBpc2; + private System.Windows.Forms.TextBox txtDbUserBpc2; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Button btnStart; + private System.Windows.Forms.Button btnStop; + private System.Windows.Forms.Button btnModify; + private System.Windows.Forms.TextBox Timer1Int; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button soulinktest; + private System.Windows.Forms.Button deslinktest; + + } +} + diff --git a/Host/DataAccessForm.resx b/Host/DataAccessForm.resx new file mode 100644 index 0000000..e9cce7a --- /dev/null +++ b/Host/DataAccessForm.resx @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 24, 6 + + + 38 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/DataSearchForm.Designer.cs b/Host/DataSearchForm.Designer.cs new file mode 100644 index 0000000..b9982a5 --- /dev/null +++ b/Host/DataSearchForm.Designer.cs @@ -0,0 +1,513 @@ +namespace CRVM +{ + partial class DataSearchForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DataSearchForm)); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.panel6 = new System.Windows.Forms.Panel(); + this.dataGrid_coilInfo = new System.Windows.Forms.DataGridView(); + this.panel5 = new System.Windows.Forms.Panel(); + this.dataGrid_alarmData = new System.Windows.Forms.DataGridView(); + this.panel3 = new System.Windows.Forms.Panel(); + this.btn_Export = new System.Windows.Forms.Button(); + this.btn_ViewOrignData = new System.Windows.Forms.Button(); + this.btn_ViewEnergyData = new System.Windows.Forms.Button(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage_date = new System.Windows.Forms.TabPage(); + this.label4 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.checkBox_alarm = new System.Windows.Forms.CheckBox(); + this.date_End = new System.Windows.Forms.DateTimePicker(); + this.btn_SearchByDate = new System.Windows.Forms.Button(); + this.date_Start = new System.Windows.Forms.DateTimePicker(); + this.label5 = new System.Windows.Forms.Label(); + this.tabPage_coldId = new System.Windows.Forms.TabPage(); + this.btn_SearchByColdId = new System.Windows.Forms.Button(); + this.textBox_ColdId = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); + this.btnExportCoilMsg = new System.Windows.Forms.Button(); + this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel6.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGrid_coilInfo)).BeginInit(); + this.panel5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGrid_alarmData)).BeginInit(); + this.panel3.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage_date.SuspendLayout(); + this.tabPage_coldId.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.panel3, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.tabControl1, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 3; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 83.48624F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.51376F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1140, 483); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel2 + // + this.panel2.Controls.Add(this.tableLayoutPanel2); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(3, 103); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1134, 313); + this.panel2.TabIndex = 1; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.AutoSize = true; + this.tableLayoutPanel2.ColumnCount = 1; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 77.95193F)); + this.tableLayoutPanel2.Controls.Add(this.panel4, 0, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(1134, 313); + this.tableLayoutPanel2.TabIndex = 14; + // + // panel4 + // + this.panel4.Controls.Add(this.panel6); + this.panel4.Controls.Add(this.panel5); + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Location = new System.Drawing.Point(3, 3); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(1128, 307); + this.panel4.TabIndex = 0; + // + // panel6 + // + this.panel6.Controls.Add(this.dataGrid_coilInfo); + this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel6.Location = new System.Drawing.Point(0, 0); + this.panel6.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(763, 307); + this.panel6.TabIndex = 15; + // + // dataGrid_coilInfo + // + this.dataGrid_coilInfo.AllowUserToAddRows = false; + this.dataGrid_coilInfo.AllowUserToDeleteRows = false; + this.dataGrid_coilInfo.AllowUserToResizeColumns = false; + this.dataGrid_coilInfo.AllowUserToResizeRows = false; + this.dataGrid_coilInfo.BackgroundColor = System.Drawing.SystemColors.Menu; + this.dataGrid_coilInfo.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dataGrid_coilInfo.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; + this.dataGrid_coilInfo.ColumnHeadersHeight = 30; + this.dataGrid_coilInfo.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGrid_coilInfo.DefaultCellStyle = dataGridViewCellStyle2; + this.dataGrid_coilInfo.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGrid_coilInfo.GridColor = System.Drawing.SystemColors.ActiveBorder; + this.dataGrid_coilInfo.Location = new System.Drawing.Point(0, 0); + this.dataGrid_coilInfo.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.dataGrid_coilInfo.Name = "dataGrid_coilInfo"; + this.dataGrid_coilInfo.ReadOnly = true; + this.dataGrid_coilInfo.RowHeadersVisible = false; + this.dataGrid_coilInfo.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; + this.dataGrid_coilInfo.RowTemplate.Height = 28; + this.dataGrid_coilInfo.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGrid_coilInfo.Size = new System.Drawing.Size(763, 307); + this.dataGrid_coilInfo.TabIndex = 13; + this.dataGrid_coilInfo.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridcoilInfo_CellClick); + // + // panel5 + // + this.panel5.Controls.Add(this.dataGrid_alarmData); + this.panel5.Dock = System.Windows.Forms.DockStyle.Right; + this.panel5.Location = new System.Drawing.Point(763, 0); + this.panel5.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(365, 307); + this.panel5.TabIndex = 14; + // + // dataGrid_alarmData + // + this.dataGrid_alarmData.AllowUserToAddRows = false; + this.dataGrid_alarmData.AllowUserToDeleteRows = false; + this.dataGrid_alarmData.AllowUserToResizeColumns = false; + this.dataGrid_alarmData.AllowUserToResizeRows = false; + this.dataGrid_alarmData.BackgroundColor = System.Drawing.SystemColors.Menu; + this.dataGrid_alarmData.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None; + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dataGrid_alarmData.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3; + this.dataGrid_alarmData.ColumnHeadersHeight = 30; + this.dataGrid_alarmData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle4.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGrid_alarmData.DefaultCellStyle = dataGridViewCellStyle4; + this.dataGrid_alarmData.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGrid_alarmData.Location = new System.Drawing.Point(0, 0); + this.dataGrid_alarmData.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); + this.dataGrid_alarmData.Name = "dataGrid_alarmData"; + this.dataGrid_alarmData.ReadOnly = true; + this.dataGrid_alarmData.RowHeadersVisible = false; + this.dataGrid_alarmData.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; + this.dataGrid_alarmData.RowTemplate.Height = 23; + this.dataGrid_alarmData.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGrid_alarmData.Size = new System.Drawing.Size(365, 307); + this.dataGrid_alarmData.TabIndex = 0; + // + // panel3 + // + this.panel3.Controls.Add(this.btnExportCoilMsg); + this.panel3.Controls.Add(this.btn_Export); + this.panel3.Controls.Add(this.btn_ViewOrignData); + this.panel3.Controls.Add(this.btn_ViewEnergyData); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(3, 422); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(1134, 58); + this.panel3.TabIndex = 2; + // + // btn_Export + // + this.btn_Export.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_Export.Location = new System.Drawing.Point(693, 10); + this.btn_Export.Name = "btn_Export"; + this.btn_Export.Size = new System.Drawing.Size(138, 39); + this.btn_Export.TabIndex = 9; + this.btn_Export.Text = "导出数据文件"; + this.btn_Export.UseVisualStyleBackColor = true; + this.btn_Export.Click += new System.EventHandler(this.btn_Export_Click); + // + // btn_ViewOrignData + // + this.btn_ViewOrignData.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_ViewOrignData.Location = new System.Drawing.Point(35, 10); + this.btn_ViewOrignData.Name = "btn_ViewOrignData"; + this.btn_ViewOrignData.Size = new System.Drawing.Size(138, 39); + this.btn_ViewOrignData.TabIndex = 7; + this.btn_ViewOrignData.Text = "原始数据预览"; + this.btn_ViewOrignData.UseVisualStyleBackColor = true; + this.btn_ViewOrignData.Click += new System.EventHandler(this.btn_ViewOrignData_Click); + // + // btn_ViewEnergyData + // + this.btn_ViewEnergyData.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_ViewEnergyData.Location = new System.Drawing.Point(376, 10); + this.btn_ViewEnergyData.Name = "btn_ViewEnergyData"; + this.btn_ViewEnergyData.Size = new System.Drawing.Size(138, 39); + this.btn_ViewEnergyData.TabIndex = 8; + this.btn_ViewEnergyData.Text = "能量数据预览"; + this.btn_ViewEnergyData.UseVisualStyleBackColor = true; + this.btn_ViewEnergyData.Click += new System.EventHandler(this.btn_ViewEnergyData_Click); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage_date); + this.tabControl1.Controls.Add(this.tabPage_coldId); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.tabControl1.Location = new System.Drawing.Point(3, 3); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(1134, 94); + this.tabControl1.TabIndex = 9; + this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged); + // + // tabPage_date + // + this.tabPage_date.BackColor = System.Drawing.SystemColors.Control; + this.tabPage_date.Controls.Add(this.label4); + this.tabPage_date.Controls.Add(this.label2); + this.tabPage_date.Controls.Add(this.label1); + this.tabPage_date.Controls.Add(this.checkBox_alarm); + this.tabPage_date.Controls.Add(this.date_End); + this.tabPage_date.Controls.Add(this.btn_SearchByDate); + this.tabPage_date.Controls.Add(this.date_Start); + this.tabPage_date.Controls.Add(this.label5); + this.tabPage_date.Location = new System.Drawing.Point(4, 30); + this.tabPage_date.Name = "tabPage_date"; + this.tabPage_date.Padding = new System.Windows.Forms.Padding(3); + this.tabPage_date.Size = new System.Drawing.Size(1126, 60); + this.tabPage_date.TabIndex = 0; + this.tabPage_date.Text = "时间检索"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.Location = new System.Drawing.Point(609, 23); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(78, 21); + this.label4.TabIndex = 9; + this.label4.Text = "是否报警:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(7, 23); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(78, 21); + this.label2.TabIndex = 8; + this.label2.Text = "开始时间:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(304, 23); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(78, 21); + this.label1.TabIndex = 7; + this.label1.Text = "结束时间:"; + // + // checkBox_alarm + // + this.checkBox_alarm.AutoSize = true; + this.checkBox_alarm.BackColor = System.Drawing.Color.White; + this.checkBox_alarm.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.checkBox_alarm.Location = new System.Drawing.Point(773, 19); + this.checkBox_alarm.Name = "checkBox_alarm"; + this.checkBox_alarm.Size = new System.Drawing.Size(45, 25); + this.checkBox_alarm.TabIndex = 5; + this.checkBox_alarm.Text = "是"; + this.checkBox_alarm.UseVisualStyleBackColor = false; + this.checkBox_alarm.CheckedChanged += new System.EventHandler(this.checkBox_alarm_CheckedChanged); + // + // date_End + // + this.date_End.CustomFormat = "yyyy-MM-dd HH:mm:ss"; + this.date_End.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.date_End.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.date_End.Location = new System.Drawing.Point(389, 17); + this.date_End.Name = "date_End"; + this.date_End.Size = new System.Drawing.Size(200, 29); + this.date_End.TabIndex = 2; + // + // btn_SearchByDate + // + this.btn_SearchByDate.AutoSize = true; + this.btn_SearchByDate.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_SearchByDate.Location = new System.Drawing.Point(993, 13); + this.btn_SearchByDate.Name = "btn_SearchByDate"; + this.btn_SearchByDate.Size = new System.Drawing.Size(112, 35); + this.btn_SearchByDate.TabIndex = 6; + this.btn_SearchByDate.Text = "查询"; + this.btn_SearchByDate.UseVisualStyleBackColor = true; + this.btn_SearchByDate.Click += new System.EventHandler(this.btn_SearchByDate_Click); + // + // date_Start + // + this.date_Start.CustomFormat = "yyyy-MM-dd HH:mm:ss"; + this.date_Start.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.date_Start.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.date_Start.Location = new System.Drawing.Point(92, 17); + this.date_Start.MinDate = new System.DateTime(2010, 11, 12, 0, 0, 0, 0); + this.date_Start.Name = "date_Start"; + this.date_Start.Size = new System.Drawing.Size(200, 29); + this.date_Start.TabIndex = 1; + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.White; + this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label5.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.label5.Location = new System.Drawing.Point(694, 17); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(200, 29); + this.label5.TabIndex = 11; + // + // tabPage_coldId + // + this.tabPage_coldId.BackColor = System.Drawing.SystemColors.Control; + this.tabPage_coldId.Controls.Add(this.btn_SearchByColdId); + this.tabPage_coldId.Controls.Add(this.textBox_ColdId); + this.tabPage_coldId.Controls.Add(this.label3); + this.tabPage_coldId.Location = new System.Drawing.Point(4, 30); + this.tabPage_coldId.Name = "tabPage_coldId"; + this.tabPage_coldId.Padding = new System.Windows.Forms.Padding(3); + this.tabPage_coldId.Size = new System.Drawing.Size(1126, 60); + this.tabPage_coldId.TabIndex = 1; + this.tabPage_coldId.Text = "卷号检索"; + // + // btn_SearchByColdId + // + this.btn_SearchByColdId.AutoSize = true; + this.btn_SearchByColdId.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_SearchByColdId.Location = new System.Drawing.Point(319, 14); + this.btn_SearchByColdId.Name = "btn_SearchByColdId"; + this.btn_SearchByColdId.Size = new System.Drawing.Size(112, 35); + this.btn_SearchByColdId.TabIndex = 7; + this.btn_SearchByColdId.Text = "查询"; + this.btn_SearchByColdId.UseVisualStyleBackColor = true; + this.btn_SearchByColdId.Click += new System.EventHandler(this.btn_SearchByColdId_Click); + // + // textBox_ColdId + // + this.textBox_ColdId.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox_ColdId.Location = new System.Drawing.Point(86, 17); + this.textBox_ColdId.Name = "textBox_ColdId"; + this.textBox_ColdId.Size = new System.Drawing.Size(200, 29); + this.textBox_ColdId.TabIndex = 4; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(17, 20); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(62, 21); + this.label3.TabIndex = 6; + this.label3.Text = "冷卷号:"; + // + // btnExportCoilMsg + // + this.btnExportCoilMsg.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnExportCoilMsg.Location = new System.Drawing.Point(962, 10); + this.btnExportCoilMsg.Name = "btnExportCoilMsg"; + this.btnExportCoilMsg.Size = new System.Drawing.Size(138, 39); + this.btnExportCoilMsg.TabIndex = 10; + this.btnExportCoilMsg.Text = "导出数据文件"; + this.btnExportCoilMsg.UseVisualStyleBackColor = true; + this.btnExportCoilMsg.Click += new System.EventHandler(this.btnExportCoilMsg_Click); + // + // saveFileDialog1 + // + this.saveFileDialog1.Filter = "csv文件(*.csv)|*.csv"; + // + // DataSearchForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1140, 483); + this.Controls.Add(this.tableLayoutPanel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "DataSearchForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "数据查询 "; + this.Load += new System.EventHandler(this.DataSearch_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.tableLayoutPanel2.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel6.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGrid_coilInfo)).EndInit(); + this.panel5.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGrid_alarmData)).EndInit(); + this.panel3.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage_date.ResumeLayout(false); + this.tabPage_date.PerformLayout(); + this.tabPage_coldId.ResumeLayout(false); + this.tabPage_coldId.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.DateTimePicker date_End; + private System.Windows.Forms.DateTimePicker date_Start; + private System.Windows.Forms.DataGridView dataGrid_coilInfo; + private System.Windows.Forms.Button btn_SearchByDate; + private System.Windows.Forms.TextBox textBox_ColdId; + private System.Windows.Forms.Button btn_ViewEnergyData; + private System.Windows.Forms.Button btn_ViewOrignData; + private System.Windows.Forms.CheckBox checkBox_alarm; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.DataGridView dataGrid_alarmData; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage_date; + private System.Windows.Forms.TabPage tabPage_coldId; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button btn_SearchByColdId; + private System.Windows.Forms.Button btn_Export; + private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + private System.ComponentModel.BackgroundWorker backgroundWorker1; + private System.Windows.Forms.Button btnExportCoilMsg; + private System.Windows.Forms.SaveFileDialog saveFileDialog1; + } +} \ No newline at end of file diff --git a/Host/DataSearchForm.cs b/Host/DataSearchForm.cs new file mode 100644 index 0000000..c30782d --- /dev/null +++ b/Host/DataSearchForm.cs @@ -0,0 +1,521 @@ +using System; +using System.Data; +using System.Windows.Forms; +using CRVM.SIDExcuter; +using CRVM.Entity; +using System.Text; +using System.Collections.Generic; +using System.IO; + +namespace CRVM +{ + public delegate void ShowGridData(object sender, string path); + struct SelectConditions + { + public DateTime start; + public DateTime end; + public bool isSelByDate; + public string coilid; + public bool isAlarm; + }; + public partial class DataSearchForm : Form + { + public event ShowGridData showdata; + //string[] columnArrayCoilInfo = { "生产结束时间", "报警状态", "热卷号", "冷卷号", "钢种牌号", "出钢记号", "宽度(mm)", "入口厚度(mm)", "出口厚度(mm)", "成品长度", "结束标记", "原始数据文件路径", "能量数据文件路径" }; + //int[] columnArrayCoilInfoWidth = { 200, 100, 150, 150, 0, 120, 120, 120, 120, 120, 100, 400, 400 }; + string[] columnArrayCoilInfo = { "生产结束时间", "报警状态", "热卷号", "冷卷号", "钢种牌号", "出钢记号", "宽度(mm)", "入口厚度(mm)", "出口厚度(mm)", "成品长度", "成品长度(L2)", "结束标记", "原始数据文件路径", "能量数据文件路径" +// "辊号(1/B/U)", "累重[t](1/B/U)", "辊号(1/B/L)", "累重[t](1/B/L)","辊号(1/M/U)", "累重[t](1/M/U)", "辊号(1/M/L)", "累重[t](1/M/L)","辊号(1/W/U)", "累重[t](1/W/U)", "辊号(1/W/L)", "累重[t](1/W/L)", +// "辊号(2/B/U)", "累重[t](2/B/U)", "辊号(2/B/L)", "累重[t](2/B/L)","辊号(2/M/U)", "累重[t](2/M/U)", "辊号(2/M/L)", "累重[t](2/M/L)","辊号(2/W/U)", "累重[t](2/W/U)", "辊号(2/W/L)", "累重[t](2/W/L)", + // "辊号(3/B/U)", "累重[t](3/B/U)", "辊号(3/B/L)", "累重[t](3/B/L)","辊号(3/M/U)", "累重[t](3/M/U)", "辊号(3/M/L)", "累重[t](3/M/L)","辊号(3/W/U)", "累重[t](3/W/U)", "辊号(3/W/L)", "累重[t](3/W/L)", +// "辊号(4/B/U)", "累重[t](4/B/U)", "辊号(4/B/L)", "累重[t](4/B/L)","辊号(4/M/U)", "累重[t](4/M/U)", "辊号(4/M/L)", "累重[t](4/M/L)","辊号(4/W/U)", "累重[t](4/W/U)", "辊号(4/W/L)", "累重[t](4/W/L)", +// "辊号(5/B/U)", "累重[t](5/B/U)", "辊号(5/B/L)", "累重[t](5/B/L)","辊号(5/M/U)", "累重[t](5/M/U)", "辊号(5/M/L)", "累重[t](5/M/L)","辊号(5/W/U)", "累重[t](5/W/U)", "辊号(5/W/L)", "累重[t](5/W/L)", + }; + int[] columnArrayCoilInfoWidth = { 200, 100, 150, 150, 0, 120, 120, 120, 120, 120, 120, 100, 400, 400 +// 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125, +// 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125, +// 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125, + // 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125, +// 125, 125, 125, 125, 125, 125,125, 125, 125, 125, 125, 125, + }; + string[] columnArrayAlarmInfo = { "开始位置", "结束位置", "机架", "类型", "能量" }; + int[] columnArrayAlarmInfoWidth = { 100, 100, 70, 70, 110 }; + + string Dbpath; + DataTable orignViewData = null; + List allCoilIdList = new List(); + public DataSearchForm() + { + InitializeComponent(); + } + + private void DataSearch_Load(object sender, EventArgs e) + { + InitalSetting(); + } + + private void DoReadWork(SelectConditions condition) + { + if (this.backgroundWorker1.IsBusy) + { + MessageBox.Show("数据正在加载中,请稍后!"); + return; + } + else + { + this.backgroundWorker1.RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted; + this.backgroundWorker1.DoWork += backgroundWorker1_DoWork; + this.backgroundWorker1.RunWorkerAsync(condition);//传入查询条件,开始异步查询 + + this.Cursor = Cursors.WaitCursor; + tableLayoutPanel1.Enabled = false; + } + } + + void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + SelectConditions condition = (SelectConditions)e.Argument; + + DataTable data = null; + try + { + if (condition.isSelByDate)//根据时间查询 + { + data = DbHelper.GetInstance("").GetCoilInfoByDate(condition.isAlarm, condition.start, condition.end); + } + else//根据卷号查询 + { + data = DbHelper.GetInstance("").GetCoilInfoByColdId(condition.coilid); + } + + //重新组织数据 + if (data != null) + { + for (int i = 0; i < data.Columns.Count; i++) + { + data.Columns[i].ColumnName = columnArrayCoilInfo[i]; + } + + for (int i = 0; i < data.Rows.Count; i++) + { + if (data.Rows[i]["报警状态"].ToString().Trim() == "1") + { + data.Rows[i]["报警状态"] = "Y"; + } + else + { + data.Rows[i]["报警状态"] = "N"; + } + + if (data.Rows[i]["结束标记"].ToString().Trim() == "0") + { + data.Rows[i]["结束标记"] = "超时"; + } + else if (data.Rows[i]["结束标记"].ToString().Trim() == "1") + { + data.Rows[i]["结束标记"] = "剪切"; + } + else + { + data.Rows[i]["结束标记"] = "手动"; + } + } + } + e.Result = data;//输出结果 + + } + catch (Exception ex) + { + MessageBox.Show(ex.ToString()); + e.Result = null; + } + } + + void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) + { + this.Cursor = Cursors.Default; + this.tableLayoutPanel1.Enabled = true; + + DataTable data = (DataTable)e.Result; + dataGrid_coilInfo.DataSource = data; + + ResetCoilInfoDataGridView(dataGrid_coilInfo); + } + + private void InitalSetting() + { + date_Start.Value = SysParam.Instance.searchStartTime; + date_End.Value = SysParam.Instance.searchEndTime; + checkBox_alarm.Checked = SysParam.Instance.searchAlarmChecked ? true : false; + panel5.Visible = false; + + SelectConditions condition = new SelectConditions(); + condition.isSelByDate = true; + condition.isAlarm = SysParam.Instance.searchAlarmChecked; + condition.start = date_Start.Value; + condition.end = date_End.Value; + + DoReadWork(condition); + } + //显示钢卷的详细报警信息 + private void dataGridcoilInfo_CellClick(object sender, DataGridViewCellEventArgs e) + { + if (e.RowIndex < 0) + { + return; + } + if (e.ColumnIndex == 2) + { + if (dataGrid_coilInfo.Columns.Contains("冷卷号")) + { + DataTable dt = DbHelper.GetInstance("").SelAlarmInfoByColdId(dataGrid_coilInfo.CurrentRow.Cells["冷卷号"].Value.ToString()); + if (dt.Rows.Count > 0) + { + dataGrid_alarmData.DataSource = dt; + for (int i = 0; i < dataGrid_alarmData.Rows.Count; i++) + { + if (dataGrid_alarmData.Rows[i].Cells[3].Value.ToString() == "0") { dataGrid_alarmData.Rows[i].Cells[3].Value = "低频"; } + if (dataGrid_alarmData.Rows[i].Cells[3].Value.ToString() == "1") { dataGrid_alarmData.Rows[i].Cells[3].Value = "中频"; } + if (dataGrid_alarmData.Rows[i].Cells[3].Value.ToString() == "2") { dataGrid_alarmData.Rows[i].Cells[3].Value = "高频"; } + } + ResetAlarmInfoDataGridView(dataGrid_alarmData); + panel5.Visible = true; + } + else + { + panel5.Visible = false; + MessageBox.Show("不存在报警缺陷!"); + } + } + } + if (e.ColumnIndex == 0) + { + if (dataGrid_coilInfo.Columns.Contains("选择")) + { + string cellValue = dataGrid_coilInfo.CurrentRow.Cells["选择"].Value.ToString(); + if (cellValue == "true") + { + dataGrid_coilInfo.CurrentRow.Cells["选择"].Value = "false"; + } + else + { + dataGrid_coilInfo.CurrentRow.Cells["选择"].Value = "true"; + } + } + } + } + + private void btn_SearchByDate_Click(object sender, EventArgs e) + { + SelectConditions condition = new SelectConditions(); + condition.isSelByDate = true; + condition.isAlarm = SysParam.Instance.searchAlarmChecked; + condition.start = date_Start.Value; + condition.end = date_End.Value; + + SysParam.Instance.searchStartTime = date_Start.Value; + SysParam.Instance.searchEndTime = date_End.Value; + + DoReadWork(condition); + } + + private void btn_ViewOrignData_Click(object sender, EventArgs e) + { + if (this.dataGrid_coilInfo.SelectedRows.Count > 0) + { + Dbpath = this.dataGrid_coilInfo.SelectedRows[0].Cells["原始数据文件路径"].Value.ToString(); + if (showdata != null) + { + showdata(sender, Dbpath); + } + this.Close(); + } + else + { + MessageBox.Show("请选择要查询的钢卷!"); + } + } + + private void btn_ViewEnergyData_Click(object sender, EventArgs e) + { + if (this.dataGrid_coilInfo.SelectedRows.Count > 0) + { + Dbpath = this.dataGrid_coilInfo.SelectedRows[0].Cells["能量数据文件路径"].Value.ToString(); + if (showdata != null) + { + showdata(sender, Dbpath); + } + } + else + { + MessageBox.Show("请选择要查询的钢卷!"); + } + } + + private void btn_SearchByColdId_Click(object sender, EventArgs e) + { + SelectConditions condition = new SelectConditions(); + condition.isSelByDate = false; + condition.coilid = textBox_ColdId.Text.Trim(); + + DoReadWork(condition); + } + + private void checkBox_alarm_CheckedChanged(object sender, EventArgs e) + { + if (checkBox_alarm.Checked) + { + SysParam.Instance.searchAlarmChecked = true; + } + else + { + SysParam.Instance.searchAlarmChecked = false; + } + } + + private void ResetCoilInfoDataGridView(DataGridView dgv) + { + if (dgv.Columns.Contains("选择")) + { + for (int i = 1; i < dgv.Columns.Count; i++) + { + dgv.Columns[i].Width = columnArrayCoilInfoWidth[i - 1]; + dataGrid_coilInfo.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; + if (i == 5) + { + dgv.Columns[i].Visible = false; + } + } + } + else + { + for (int i = 0; i < dgv.Columns.Count; i++) + { + dgv.Columns[i].Width = columnArrayCoilInfoWidth[i]; + dataGrid_coilInfo.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; + if (i == 4) + { + dgv.Columns[i].Visible = false; + } + } + } + + if (!dgv.Columns.Contains("选择")) + { + DataGridViewCheckBoxColumn addColumn = new DataGridViewCheckBoxColumn(); + addColumn.HeaderText = "选择"; + addColumn.Name = "选择"; + addColumn.Resizable = System.Windows.Forms.DataGridViewTriState.False; + addColumn.TrueValue = "true"; + //dgv.Columns.Add(addColumn); + dgv.Columns.Insert(0, addColumn); + dgv.Columns["选择"].DisplayIndex = 0; + dgv.Columns["选择"].ReadOnly = false; + + addFullSelect(); + } + else + { + dgv.Columns["选择"].ReadOnly = false; + } + + for (int i = 0; i < dgv.Rows.Count; i++) + { + dgv.Rows[i].Cells["选择"].Value = "false"; + } + } + + private void ResetAlarmInfoDataGridView(DataGridView dgv) + { + for (int i = 0; i < dgv.Columns.Count; i++) + { + dgv.Columns[i].HeaderText = columnArrayAlarmInfo[i]; + dgv.Columns[i].Name = columnArrayAlarmInfo[i]; + dgv.Columns[i].Width = columnArrayAlarmInfoWidth[i]; + dataGrid_alarmData.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; + } + } + + private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) + { + panel5.Visible = false; + if (tabControl1.SelectedTab.Text == "时间检索") + { + btn_SearchByDate_Click(sender, e); + } + else + { + btn_SearchByColdId_Click(sender, e); + } + } + + private void btn_Export_Click(object sender, EventArgs e) + { + if (this.dataGrid_coilInfo.SelectedRows.Count <= 0) + { + MessageShowForm form = new MessageShowForm("警告", "请选择导出的卷!"); + form.ShowDialog(); + return; + } + + if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) + { + string filePath = folderBrowserDialog1.SelectedPath; + if (!Directory.Exists(filePath)) + { + Directory.CreateDirectory(filePath); + } + + string filePath_orig = filePath + "\\original data"; + if (!Directory.Exists(filePath_orig)) + { + Directory.CreateDirectory(filePath_orig); + } + + bool flag = false; + if (dataGrid_coilInfo.Columns.Contains("选择")) + { + for (int i = 0; i < dataGrid_coilInfo.Rows.Count; i++) + { + string checkValue = dataGrid_coilInfo.Rows[i].Cells["选择"].Value.ToString(); + + if (checkValue == "true")//选中 + { + string coldcoilno = this.dataGrid_coilInfo.Rows[i].Cells["冷卷号"].Value.ToString().Trim(); + string sourcefileName_orig = this.dataGrid_coilInfo.Rows[i].Cells["原始数据文件路径"].Value.ToString().Trim(); + + if (!File.Exists(sourcefileName_orig)) + { + MessageShowForm form = new MessageShowForm("警告", "原始数据源文件dat不存在!" + sourcefileName_orig); + form.ShowDialog(); + return; + } + + //string destfileName_orig = sourcefileName_orig.Substring(sourcefileName_orig.Length - 18, 18); + string destfileName_orig = Path.GetFileName(sourcefileName_orig); + File.Copy(sourcefileName_orig, filePath_orig + "\\" + destfileName_orig + "_" + coldcoilno, true); + + string filePath_energy = filePath + "\\energy data"; + if (!Directory.Exists(filePath_energy)) + { + Directory.CreateDirectory(filePath_energy); + } + + string sourcefileName_energy = this.dataGrid_coilInfo.Rows[i].Cells["能量数据文件路径"].Value.ToString(); + + if (!File.Exists(sourcefileName_energy)) + { + MessageShowForm form = new MessageShowForm("警告", "能量数据源文件txt不存在!" + sourcefileName_energy); + form.ShowDialog(); + return; + } + + if (!File.Exists(sourcefileName_energy)) + { + MessageShowForm form = new MessageShowForm("警告", "能量数据源文件txt不存在!"); + form.ShowDialog(); + return; + } + //string destfileName_energy = sourcefileName_orig.Substring(sourcefileName_energy.Length - 18, 18); + string destfileName_energy = Path.GetFileName(sourcefileName_energy); + File.Copy(sourcefileName_energy, filePath_energy + "\\" + destfileName_energy + "_" + coldcoilno, true); + + flag = true; + } + } + } + if (flag) + { + MessageBox.Show("拷贝成功!"); + } + else + { + MessageBox.Show("没有需要拷贝的文件!"); + } + + } + } + + private void btnExportCoilMsg_Click(object sender, EventArgs e) + { + if (saveFileDialog1.ShowDialog() == DialogResult.OK) + { + string saveDirectory = saveFileDialog1.FileName; + ExportToCSV export = new ExportToCSV(saveDirectory); + + DataTable data = new DataTable(); + + for (int i = 1; i < dataGrid_coilInfo.Columns.Count; i++) + { + DataColumn col = new DataColumn(); + col.ColumnName = dataGrid_coilInfo.Columns[i].HeaderText; + data.Columns.Add(col); + + } + + for (int j = 0; j < dataGrid_coilInfo.Rows.Count; j++) + { + if (dataGrid_coilInfo.Columns.Contains("选择")) + { + if (dataGrid_coilInfo.Rows[j].Cells["选择"].Value.ToString() == "true") + { + DataRow row = data.NewRow(); + for (int i = 0; i < data.Columns.Count; i++) + { + row[i] = dataGrid_coilInfo.Rows[j].Cells[i + 1].Value; + } + data.Rows.Add(row); + } + } + + } + + export.writeProductData(data); + + if (export.writeOK) + { + MessageBox.Show("导出钢卷信息成功!"); + } + else + { + MessageBox.Show("导出钢卷信息失败!"); + } + } + + } + + CheckBox ckbox = new CheckBox(); + private void addFullSelect() + { + + System.Drawing.Rectangle rect = dataGrid_coilInfo.GetCellDisplayRectangle(0, -1, true); + ckbox.Text = "全选"; + //ckbox.Checked = true; + ckbox.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + ckbox.Font = dataGrid_coilInfo.Columns[0].DefaultCellStyle.Font; + ckbox.Size = new System.Drawing.Size(dataGrid_coilInfo.Columns[0].Width, 30); + ckbox.Location = new System.Drawing.Point(rect.Location.X, rect.Location.Y); + ckbox.CheckedChanged += ckbox_CheckedChanged; + dataGrid_coilInfo.Controls.Add(ckbox); + } + + void ckbox_CheckedChanged(object sender, EventArgs e) + { + for (int i = 0; i < dataGrid_coilInfo.Rows.Count; i++) + { + if (dataGrid_coilInfo.Columns.Contains("选择")) + { + if (ckbox.Checked) + { + dataGrid_coilInfo.Rows[i].Cells["选择"].Value = "true"; + } + else + { + dataGrid_coilInfo.Rows[i].Cells["选择"].Value = "false"; + } + } + + } + } + + } +} diff --git a/Host/DataSearchForm.resx b/Host/DataSearchForm.resx new file mode 100644 index 0000000..7957bc4 --- /dev/null +++ b/Host/DataSearchForm.resx @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 197, 17 + + + 371, 17 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/ExportCsv.cs b/Host/ExportCsv.cs new file mode 100644 index 0000000..0b7ea7e --- /dev/null +++ b/Host/ExportCsv.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Data; +using System.IO; + +namespace CRVM +{ + class ExportToCSV + { + private string _filePath; + private bool _writeOK = false; + private StreamWriter writer; + + public bool writeOK + { + get + { + return _writeOK; + } + } + + public ExportToCSV(string filepath) + { + this._filePath = filepath; + } + + public void writeProductData(DataTable data) + { + try + { + writer = new StreamWriter(new FileStream(_filePath, FileMode.OpenOrCreate), Encoding.Default); + string line = ""; + for (int i = 0; i < data.Columns.Count; i++)//打印表头 + { + //if (i != data.Columns.Count - 2) + { + line += data.Columns[i].ColumnName; + if (i != data.Columns.Count - 1) + { + line = line + ","; + } + } + } + writer.WriteLine(line); + + for (int i = 0; i < data.Rows.Count; i++) + { + line = ""; + for (int j = 0; j < data.Columns.Count; j++) + { + //if (j != data.Columns.Count - 2)//status列不打印 + { + line = line + data.Rows[i][j].ToString().Trim(); + if (j != data.Columns.Count - 1) + { + line = line + ","; + } + } + } + writer.WriteLine(line); + } + _writeOK = true; + } + catch (Exception ex) + { + _writeOK = false; + } + finally + { + writer.Close(); + } + } + + public string EncodingCovert(Encoding src, Encoding dest, string text) + { + var bytes = src.GetBytes(text); + bytes = Encoding.Convert(src, dest, bytes); + return dest.GetString(bytes); + } + } +} diff --git a/Host/FileComparer.cs b/Host/FileComparer.cs new file mode 100644 index 0000000..b5b7e5e --- /dev/null +++ b/Host/FileComparer.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Collections; +using System.IO; + +namespace CRVM +{ + public class FileComparer : IComparer + { + /// + /// 文件排序 + /// + /// + /// + /// + int IComparer.Compare(object o1, object o2) + { + DirectoryInfo fi1 = o1 as DirectoryInfo; + DirectoryInfo fi2 = o2 as DirectoryInfo; + return fi1.CreationTime.CompareTo(fi2.CreationTime); + } + } +} diff --git a/Host/Host.csproj b/Host/Host.csproj new file mode 100644 index 0000000..1090856 --- /dev/null +++ b/Host/Host.csproj @@ -0,0 +1,464 @@ + + + + Debug + x86 + 9.0.21022 + 2.0 + {D4E0A41A-BB1C-4CE1-A7F5-BE7A5B875EE8} + WinExe + Properties + Host + Host + v4.0 + 512 + + + + + + + + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + NativeRecommendedRules.ruleset + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + AllRules.ruleset + + + VibrationTest.ico + + + app.manifest + + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll + + + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll + + + + + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.IO.dll + + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Runtime.dll + + + + ..\packages\Microsoft.Bcl.1.1.10\lib\net40\System.Threading.Tasks.dll + + + + + + + + + + False + ..\dllFiles\TcmControl.dll + + + False + ..\Utility\bin\Debug\Utility.dll + + + ..\dllFiles\WeifenLuo.WinFormsUI.Docking.dll + + + ..\dllFiles\ZedGraph.dll + + + + + UserControl + + + ChannelSelect.cs + + + UserControl + + + GraCheckedTimeRe.cs + + + UserControl + + + GraOrder.cs + + + UserControl + + + GraCheckedEnergy.cs + + + UserControl + + + GraCheckedTime.cs + + + UserControl + + + titileSet.cs + + + UserControl + + + WizardBaseChannel.cs + + + Form + + + DataAccessForm.cs + + + Form + + + DataSearchForm.cs + + + + + + + Form + + + login.cs + + + Form + + + MessageShowForm.cs + + + Form + + + OnlineRollForm.cs + + + Form + + + PlottingReview.cs + + + Form + + + Plot_energy.cs + + + Form + + + Plotting.cs + + + True + True + Resources.resx + + + Form + + + OriginRollForm.cs + + + Form + + + SetDataStorageForm.cs + + + Form + + + SetDisplayForm.cs + + + + + + Form + + + SetSampleForm.cs + + + ChannelSelect.cs + Designer + + + GraCheckedTimeRe.cs + Designer + + + GraOrder.cs + Designer + + + GraCheckedEnergy.cs + Designer + + + GraCheckedTime.cs + Designer + + + titileSet.cs + Designer + + + WizardBaseChannel.cs + Designer + + + DataAccessForm.cs + Designer + + + DataSearchForm.cs + Designer + + + login.cs + Designer + + + MessageShowForm.cs + + + OnlineRollForm.cs + + + PlottingReview.cs + Designer + + + Plot_energy.cs + Designer + + + Plotting.cs + + + OriginRollForm.cs + + + SetDataStorageForm.cs + Designer + + + SetDisplayForm.cs + Designer + + + PublicResXFileCodeGenerator + Resources.Designer.cs + Designer + + + SetSampleForm.cs + Designer + + + SetPasswordForm.cs + Designer + + + Statusmodify.cs + Designer + + + SetAlarmForm.cs + Designer + + + IServerMainForm.cs + Designer + + + SetSenserForm.cs + Designer + + + Designer + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + Form + + + SetPasswordForm.cs + + + Form + + + Statusmodify.cs + + + Form + + + SetAlarmForm.cs + + + Form + + + IServerMainForm.cs + + + Form + + + SetSenserForm.cs + + + PreserveNewest + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + + + + + + + + + + + + + + PreserveNewest + + + + + + + + {6ea706f6-065d-469e-ab39-7395d780548b} + Entity + + + {98dc5466-7295-439a-bbca-a5d4dc219776} + ICService + + + {a6d7f927-e946-40c5-b5e7-0ee05706e0f7} + SIDExcuter + + + {baf20fd6-881e-470c-97f3-38769d49ba66} + RestApi + + + + + + + + + + \ No newline at end of file diff --git a/Host/IServerMainForm.cs b/Host/IServerMainForm.cs new file mode 100644 index 0000000..ba3a069 --- /dev/null +++ b/Host/IServerMainForm.cs @@ -0,0 +1,1179 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; +using CRVM.Entity; +using CRVM.SIDExcuter; +using System.ServiceModel; +using System.IO; +using ICService; +using System.Threading.Tasks; +using CRVM.Utility; +using RestApi; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.ComponentModel; + +namespace CRVM +{ + struct FileReview + { + public string fileType; + public string filePath; + public bool readOK; + } + + public partial class IServerMainForm : Form + { + //private NotifyIcon notifyIcon; + + + [DllImport("kernel32.dll")] + static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode); + + private bool isReview = false; + private bool isRollInfoRead = false; + private enum SystemStatus { unstart = 0, start = 1, stop = 2, pause = 3 } + private SystemStatus sysStatus = SystemStatus.unstart; + + private ServiceHost host; + private Machine mac; + private Machine macReview; + private DataProcessCenter dpc; + private Plotting onlinePlot; + private PlottingReview reviewPlot; + private Plot_energy reviewPlot_Energy; + private IViewHelper fileHelper; + private DbHelper dbHelper; + + private ToolStripLabel labelAlarmNow; + private ToolStripComboBox comBoxAlarmNow; + private ToolStripLabel labelAlarmLast; + private ToolStripComboBox comBoxAlarmLast; + + // 页面 刷新的数据 ---2025-01-09 新增 + public BoxData[] roll_mill_data_array { set; get; } + public AlarmInfo alarmInfo; + public RollMillData rollMillData { set; get; } + public RollMillEnergyTrend rollMillET { set; get; } + public CZState cZState { set; get; } + public RMVibData[] standRmVibData { set; get; } + public delegate void Shda(); + + //private void RestoreWindow() + //{ + // this.WindowState = FormWindowState.Normal; + // this.ShowInTaskbar = true; + // this.Activate(); + // notifyIcon.Visible = false; + //} + + //private void MainForm_Resize(object sender, EventArgs e) + //{ + // if (this.WindowState == FormWindowState.Minimized) + // { + // this.ShowInTaskbar = false; + // notifyIcon.Visible = true; + // } + //} + + public IServerMainForm() + { + + //// 初始化托盘图标 + //notifyIcon = new NotifyIcon(); + //notifyIcon.Icon = new System.Drawing.Icon("Resources\\VibrationTest.ico"); + //notifyIcon.Text = "轧机振动监测系统"; + //notifyIcon.Visible = true; + + //// 双击托盘恢复窗口 + //notifyIcon.DoubleClick += (s, e) => RestoreWindow(); + + //// 添加右键菜单 + //var menu = new ContextMenuStrip(); + //menu.Items.Add("退出", null, (s, e) => Application.Exit()); + //notifyIcon.ContextMenuStrip = menu; + + //// 窗体事件绑定 + //this.Resize += MainForm_Resize; + //this.FormClosing += (s, e) => notifyIcon.Dispose(); + + + InitializeComponent(); + // 页面 刷新的数据 ---2025-01-09 新增 + roll_mill_data_array = new BoxData[6]; + standRmVibData = new RMVibData[6] { new RMVibData(), new RMVibData(), new RMVibData(), new RMVibData(), new RMVibData(), new RMVibData() }; + alarmInfo = new AlarmInfo(); + cZState = new CZState(); + RollMillGetService dh = new RollMillGetService(); + + rollMillET = new RollMillEnergyTrend(); + for (int i = 0; i < 6; i++) + { + this.roll_mill_data_array[i] = dh.Roll_mill_data.F1.copy(); + } + } + + private void MainForm_Load(object sender, EventArgs e) + { + + backgroundWorker_fileRead.DoWork += backgroundWorker_fileRead_DoWork; + backgroundWorker_fileRead.RunWorkerCompleted += backgroundWorker_fileRead_RunWorkerCompleted; + + SysParam.Instance.searchStartTime = DateTime.Now.AddDays(-1); + SysParam.Instance.searchEndTime = DateTime.Now; + SysParam.Instance.appPath = Application.StartupPath; + ConfigHelper.GetInstance(SysParam.Instance.appPath + "\\AppSetting.config"); + ConfigHelper.GetInstance("").InitialData(); + + + dbHelper = DbHelper.GetInstance(SysParam.Instance.appPath); + if (!dbHelper.LoadConfigData(dbHelper)) + { + MessageBox.Show("数据库配置文件丢失或损坏!"); + } + dbHelper.SetL2Connect(); + dbHelper.SetLocalConnect(); + dbHelper.isStart = true; + + try + { + host = new ServiceHost(typeof(PushMessage)); + host.Open(); + } + catch (Exception ex) + { + recordLog("无法向客户端发送数据"); + MessageBox.Show("无法向客户端发送数据:" + ex.ToString()); + } + + InitialSetting(); + DbHelper.GetInstance("").autoUpdateAlarmParam();//数据库报警参数更新 + // Utility.VibSimulation.UpdateOnlineData(false);//模拟数据 + } + + private void InitialSetting() + { + //标签控件初始化 + ServerStartView(); + + if (comBoxAlarmNow == null && labelAlarmNow == null) + { + Alarm_Info_show(); + } + + btStop.Enabled = false; + btPause.Enabled = false; + + connectStatusStrip.Text = " "; + connectStatusStrip.BackColor = System.Drawing.Color.RoyalBlue; + } + + #region 图表选择框加载及面板隐藏控制 + private void ServerStartView() + { + titileSet titile0 = new titileSet(); + titile0.change += new titileSet.Change(titile0_change); + titile0.labelText = "通道选择 ∨"; + tableLayoutPanel3.Controls.Add(titile0, 0, 0); + titile0 = new titileSet(); + titile0.change += new titileSet.Change(titile1_change); + titile0.labelText = "瞬时波形 ∨"; + tableLayoutPanel3.Controls.Add(titile0, 0, 2); + titile0 = new titileSet(); + titile0.change += new titileSet.Change(titile2_change); + titile0.labelText = "趋势波形 ∨"; + tableLayoutPanel3.Controls.Add(titile0, 0, 4); + titile0 = new titileSet(); + titile0.change += new titileSet.Change(titile3_change); + titile0.labelText = "显示方式 ∨"; + tableLayoutPanel3.Controls.Add(titile0, 0, 6); + + if (sysStatus == SystemStatus.unstart) + { + //online + panel1.Controls.Clear(); + panel2.Controls.Clear(); + panel3.Controls.Clear(); + panel4.Controls.Clear(); + ChannelSelect cs = new ChannelSelect(); + cs.Dock = DockStyle.Fill; + panel1.Controls.Add(cs); + GraCheckedTime gct = new GraCheckedTime(); + gct.Dock = DockStyle.Fill; + panel2.Height = 256; + panel2.Controls.Add(gct); + GraCheckedEnergy gce = new GraCheckedEnergy(); + gce.Dock = DockStyle.Fill; + panel3.Controls.Add(gce); + GraphOrder go = new GraphOrder(); + go.Dock = DockStyle.Fill; + panel4.Controls.Add(go); + } + } + private void titile3_change(bool opend) + { + changeVisible(panel4, opend); + } + private void titile2_change(bool opend) + { + changeVisible(panel3, opend); + } + private void titile1_change(bool opend) + { + changeVisible(panel2, opend); + } + private void titile0_change(bool opend) + { + changeVisible(panel1, opend); + } + private void changeVisible(Panel panel, bool opened) + { + if (opened) + { + panel.Visible = true; + } + else + { + panel.Visible = false; + } + } + #endregion + + private void start_Click(object sender, EventArgs e) + { + //new Task(() => DeleteFile()).Start(); + try + { + sysStatus = SystemStatus.start; + mainFormRefresh(); + mac = new Machine(SysParam.Instance.channelCount, SysParam.Instance.samplePoint, SysParam.Instance.timePoints, SysParam.Instance.energyPoints); + + //报警参数设置 + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + mac.Stand[i].alarm_L_Times_ck = SysParam.Instance.channel[i].alarmTimes_l; + mac.Stand[i].alarm_M_Times_ck = SysParam.Instance.channel[i].alarmTimes_m; + mac.Stand[i].alarm_H_Times_ck = SysParam.Instance.channel[i].alarmTimes_h; + mac.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].alarmConfig); + } + + dpc = new DataProcessCenter(mac); + //---2025-01-09 新增 + dpc.roll_mill_data_array = this.roll_mill_data_array; + rollMillData = new RollMillData(this.roll_mill_data_array); + rollMillData.AF = this.alarmInfo; + dpc.alarmInfo = this.alarmInfo; + // dpc.cZState = this.cZState; + + dpc.rollMillData = this.rollMillData; + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + standRmVibData[i].vib_data = mac.Stand[i].vib; + } + dpc.standRmVibData = new StandRMVibData(standRmVibData); + + CloseDocumnet("Plotting"); + IDockContent dock = IsExistDocumnet("Plotting"); + if (dock == null) + { + onlinePlot = new Plotting(mac); + onlinePlot.Show(dockPanel1, DockState.Document); + } + + Timer_Graph.Start(); + SysParam.Instance.onlineList.Clear(); + isRollInfoRead = false;//重读棍子信息 + recordLog("开始采集数据"); + } + catch (Exception ex) + { + throw ex; + //Console.WriteLine(ex.StackTrace); + } + + } + + private void stop_Click(object sender, EventArgs e) + { + DialogResult dir = MessageBox.Show("确定停止采集数据吗?", "信息提示框", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); + + if (dir == DialogResult.OK) + { + sysStatus = SystemStatus.stop; + mainFormRefresh(); + if (dpc != null) + { + dpc.Stop(); + } + Timer_Graph.Stop(); + Timer_Graph_Tick(sender, e); + backgroundWorker.CancelAsync(); + CloseDocumnet("Plotting"); + + distance_Strip.Text = "轧制距离: 0000.0m "; + cutLenSpeedStrip.Text = "出口速度: 0000m/min"; + SysParam.Instance.onlineList.Clear(); + + recordLog("停止采集数据"); + } + else + { + return; + } + + } + + private void pause_Click(object sender, EventArgs e) + { + if (sysStatus == SystemStatus.start) + { + sysStatus = SystemStatus.pause; + Timer_Graph.Stop(); + //提取轧制距离列表用于后续数据点显示 + mac.distance_Pause = mac.distance_Running.ToArray(); + onlinePlot.IsShowMenuStrip(true); + } + else if (sysStatus == SystemStatus.pause) + { + sysStatus = SystemStatus.start; + Timer_Graph.Start(); + onlinePlot.IsShowMenuStrip(false); + } + mainFormRefresh(); + } + + private IDockContent IsExistDocumnet(string name) + { + IDockContent b = null; + foreach (IDockContent content in dockPanel1.Documents) + { + if (content.DockHandler.TabText == name) + { + b = content; + break; + } + } + return b; + } + + private void CloseDocumnet(string name) + { + foreach (IDockContent content in dockPanel1.Documents) + { + if (content.DockHandler.TabText == name) + { + content.DockHandler.Dispose(); + content.DockHandler.Close(); + break; + } + } + } + + private void Timer_Graph_Tick(object sender, EventArgs e) + { + //DevelopLog.DeBug.WriteLogFile("cutData", "----------"); + if (onlinePlot != null) + { + //图表刷新 + if (onlinePlot.InvokeRequired) + onlinePlot.Invoke(new Shda(onlinePlot.GraRefresh)); + else + onlinePlot.GraRefresh(); + } + + if (!isReview) + { + distance_Strip.Text = "轧制距离: " + mac.stripLength.ToString("00000.0") + "m "; + cutLenSpeedStrip.Text = "出口速度: " + mac.lengthSpeed.ToString("0000") + "m/min"; + } + if (dpc == null) + { + return; + } + if (dpc.alarmInfoNowChanged && dpc.alarmInfoNow != null) + { + dpc.alarmInfoNowChanged = false; + comBoxAlarmNow.Items.Clear(); + comBoxAlarmNow.Text = ""; + comBoxAlarmNow.Items.AddRange(dpc.alarmInfoNow.ToArray()); + if (comBoxAlarmNow.Items.Count > 0) + { + comBoxAlarmNow.SelectedIndex = comBoxAlarmNow.Items.Count - 1; + } + } + if (dpc.alarmInfoLastChanged) + { + dpc.alarmInfoLastChanged = false; + if (dpc.alarmInfoLast != null) + { + comBoxAlarmLast.Items.Clear(); + comBoxAlarmLast.Items.AddRange(dpc.alarmInfoLast); + comBoxAlarmLast.SelectedIndex = comBoxAlarmLast.Items.Count - 1; + } + } + + } + + private void Timer_CoilInfo_Tick(object sender, EventArgs e) + { + /*this.Timer_CoilInfo.Interval = DbHelper.GetInstance("").Freq * 1000; + if (!backgroundWorker.IsBusy && dbHelper.isStart) + { + backgroundWorker.RunWorkerAsync(); + } + if (dbHelper.isStart == false) + { + connectStatusStrip.BackColor = System.Drawing.Color.Red; + connectStatusStrip.Text = "系统与L2的数据连接尚未开启......"; + }*/ + } + + private void backgroundWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + /*string msg = "00"; + bool ischange = false; + try + { + //获取钢卷信息 + DbHelper.GetInstance("").UpdateLocalCoilInfo(); + msg = "10"; + + //获取在线轧辊信息 + DataTable onlineRollData = dbHelper.GetL2OnlineRollInfo(); + for (int i = 0; i < onlineRollData.Rows.Count; i++) + { + string rollno = onlineRollData.Rows[i]["rollno"].ToString().Trim(); + if (!SysParam.Instance.onlineList.Contains(rollno)) + { + ischange = true; + break; + } + } + if (ischange && sysStatus == SystemStatus.start) + { + dbHelper.RollDataInfo(mac, onlineRollData); + dbHelper.UpdateLocalRollData(onlineRollData); + SysParam.Instance.onlineList = new List(); + for (int i = 0; i < onlineRollData.Rows.Count; i++) + { + string rollno = onlineRollData.Rows[i]["rollno"].ToString().Trim(); + SysParam.Instance.onlineList.Add(rollno); + } + ischange = false; + } + msg = "11"; + } + catch (Exception ex) + { + + } + backgroundWorker.ReportProgress(0, msg); + */ + } + + private void backgroundWorker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) + { + /*if (e.UserState.ToString() == "00") + { + connectStatusStrip.Text = "获取L2钢卷信息异常,请查看本系统与L2数据库的连接......"; + connectStatusStrip.BackColor = System.Drawing.Color.Red; + } + else if (e.UserState.ToString() == "10") + { + connectStatusStrip.Text = "获取L2在线轧辊信息异常,请查看本系统与L2数据库的连接......"; + connectStatusStrip.BackColor = System.Drawing.Color.Red; + } + else if (e.UserState.ToString() == "11") + { + connectStatusStrip.Text = "获取L2在线轧辊信息正常...获取L2钢卷信息正常......"; + connectStatusStrip.BackColor = System.Drawing.Color.RoyalBlue; + }*/ + } + + + private void btnViewOut_Click(object sender, EventArgs e) + { + isReview = false; + mainFormRefresh(); + CloseDocumnet("PlottingReview"); + CloseDocumnet("Plot_energy"); + if (sysStatus != SystemStatus.unstart) + { + IDockContent dock = IsExistDocumnet("Plotting"); + if (dock == null) + { + onlinePlot = new Plotting(mac); + onlinePlot.Show(dockPanel1, DockState.Document); + } + } + } + + private void btnViewIn_Click(object sender, EventArgs e) + { + if (openFileDialog1.ShowDialog() == DialogResult.OK) + { + string filePath = openFileDialog1.FileName; + //DataRead(filePath);//打开文件 + if (File.Exists(filePath)) + { + isReview = true; + mainFormRefresh(); + + if (backgroundWorker_fileRead.IsBusy) + { + MessageBox.Show("正在读取文件...."); + } + else + { + backgroundWorker_fileRead.RunWorkerAsync(filePath); + } + } + } + } + + void OpenFile(object sender, string filePath) + { + if (File.Exists(filePath)) + { + isReview = true; + mainFormRefresh(); + //DataRead(filePath); + + if (backgroundWorker_fileRead.IsBusy) + { + MessageBox.Show("正在读取文件...."); + } + else + { + backgroundWorker_fileRead.RunWorkerAsync(filePath); + } + + } + else + { + MessageBox.Show("查找的文件不存在"); + } + } + + void backgroundWorker_fileRead_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) + { + FileReview fileStruct = new FileReview(); + fileStruct = (FileReview)e.Result; + if (fileStruct.readOK) + { + if (fileStruct.fileType == "0") + { + DataReview();//检查能量文件是否存在后再回放 + new Task(() => GetFileCoilInfo(fileStruct.filePath, true)).Start(); + } + else + { + DataReviewEnergy();//能量数据回放 + new Task(() => GetFileCoilInfo(fileStruct.filePath, false)).Start(); + } + } + + } + + void backgroundWorker_fileRead_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + string filePath = e.Argument.ToString(); + + FileReview fileStruct = new FileReview(); + fileStruct.filePath = filePath; + + if (fileHelper == null) + fileHelper = new IViewHelper(filePath); + else + fileHelper.ReadFile(filePath); + if (fileHelper.FileOk) + { + string alarmFilePath = fileHelper.selectAlarmFile(filePath); + ConfigHelper.GetOrigInstance(alarmFilePath); + + if (filePath.Contains(".txt")) + { + if (filePath.Contains("original")) + { + string fileName = filePath.Replace("original", "energy");///////////读取能量信息 20151112 + if (File.Exists(fileName)) + { + fileHelper.ReadFile(fileName); + } + else + { + MessageBox.Show("能量数据文件不存在"); + } + macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1); + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig); + } + fileStruct.fileType = "0"; + fileStruct.readOK = true; + //DataReview();//检查能量文件是否存在后再回放 + //new Task(() => GetFileCoilInfo(filePath, true)).Start(); + } + else + { + + if (File.Exists(filePath)) + { + fileHelper.ReadFile(filePath); + } + else + { + MessageBox.Show("能量数据文件不存在"); + } + macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1); + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig); + } + + fileStruct.fileType = "1"; + fileStruct.readOK = true; + //DataReviewEnergy();//能量数据回放 + //new Task(() => GetFileCoilInfo(filePath, false)).Start(); + } + } + else if (filePath.Contains(".dat")) + { + string fileName1 = filePath.Replace("original", "energy"); + string fileName = fileName1.Replace(".dat", ".txt"); + if (File.Exists(fileName)) + { + fileHelper.ReadFile(fileName); + } + else + { + MessageBox.Show("能量数据文件不存在"); + } + macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1); + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig); + } + fileStruct.fileType = "0"; + fileStruct.readOK = true; + } + + } + else + { + fileStruct.readOK = false; + MessageBox.Show("文件已损坏!"); + } + + e.Result = fileStruct; + } + + private void DataRead(string filePath) + { + if (fileHelper == null) + fileHelper = new IViewHelper(filePath); + else + fileHelper.ReadFile(filePath); + if (fileHelper.FileOk) + { + isReview = true; + mainFormRefresh(); + string alarmFilePath = fileHelper.selectAlarmFile(filePath); + ConfigHelper.GetOrigInstance(alarmFilePath); + + if (filePath.Contains(".txt")) + { + if (filePath.Contains("original")) + { + string fileName = filePath.Replace("original", "energy");///////////读取能量信息 20151112 + if (File.Exists(fileName)) + { + fileHelper.ReadFile(fileName); + } + else + { + MessageBox.Show("能量数据文件不存在"); + } + macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1); + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig); + } + DataReview();//检查能量文件是否存在后再回放 + new Task(() => GetFileCoilInfo(filePath, true)).Start(); + } + else + { + DataReviewEnergy();//能量数据回放 + new Task(() => GetFileCoilInfo(filePath, false)).Start(); + } + } + else if (filePath.Contains(".dat")) + { + string fileName1 = filePath.Replace("original", "energy"); + string fileName = fileName1.Replace(".dat", ".txt"); + if (File.Exists(fileName)) + { + fileHelper.ReadFile(fileName); + } + else + { + MessageBox.Show("能量数据文件不存在"); + } + macReview = new Machine(SysParam.Instance.channelCount, 1, 1, 1); + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + macReview.Stand[i].SetAlarmFred(SysParam.Instance.channel[i].reAlarmConfig); + } + DataReview();//检查能量文件是否存在后再回放 + new Task(() => GetFileCoilInfo(filePath, true)).Start(); + } + } + else + { + MessageBox.Show("文件已损坏!"); + } + } + + private void DataReviewEnergy() + { + CloseDocumnet("Plotting"); + CloseDocumnet("Plot_energy"); + CloseDocumnet("PlottingReview"); + reviewPlot_Energy = new Plot_energy(fileHelper, macReview); + reviewPlot_Energy.Show(this.dockPanel1, DockState.Document); + } + + private void DataReview() + { + CloseDocumnet("Plotting"); + CloseDocumnet("Plot_energy"); + CloseDocumnet("PlottingReview"); + reviewPlot = new PlottingReview(fileHelper, macReview); + reviewPlot.Show(dockPanel1, DockState.Document); + } + + private void mainFormRefresh() + { + if (isReview) + { + Timer_Graph.Stop(); + btReviewExit.Visible = true; + btstart.Enabled = false; + btPause.Enabled = false; + btStop.Enabled = false; + + //btrollInfo.Enabled = true; + + if (labelAlarmNow != null) + { + labelAlarmNow.Visible = false; + comBoxAlarmNow.Visible = false; + labelAlarmLast.Visible = false; + comBoxAlarmLast.Visible = false; + } + + connectStatusStrip.Visible = false; + filename_Strip.Visible = true; + distance_Strip.Visible = false; + cutLenSpeedStrip.Visible = false; + + if (panel2.Height != 287) + { + panel2.Controls.Clear(); + GraCheckedTimeRe gctr = new GraCheckedTimeRe(); + gctr.Dock = DockStyle.Fill; + panel2.Height = 287; + panel2.Controls.Add(gctr); + } + } + else + { + btReviewExit.Visible = false; + + if (labelAlarmNow != null) + { + labelAlarmNow.Visible = true; + comBoxAlarmNow.Visible = true; + labelAlarmLast.Visible = true; + comBoxAlarmLast.Visible = true; + } + + connectStatusStrip.Visible = true; + filename_Strip.Visible = false; + distance_Strip.Visible = true; + cutLenSpeedStrip.Visible = true; + + if (panel2.Height != 256) + { + panel2.Controls.Clear(); + GraCheckedTime gct = new GraCheckedTime(); + gct.Dock = DockStyle.Fill; + panel2.Height = 256; + panel2.Controls.Add(gct); + } + + if (sysStatus == SystemStatus.start || sysStatus == SystemStatus.pause) + { + if (sysStatus == SystemStatus.start) + { + Timer_Graph.Start(); + btStop.Enabled = true; + btPause.Image = Host.Properties.Resources.Pause_64; + btPause.Text = "暂停"; + } + else + { + btStop.Enabled = false; + btPause.Image = Host.Properties.Resources.Refresh_64; + btPause.Text = "继续"; + } + btstart.Enabled = false; + btPause.Enabled = true; + + btSetSensor.Enabled = false; + //btSetAlarm.Enabled = false; + btSetSampling.Enabled = false; + btSetStore.Enabled = false; + btSetPassword.Enabled = false; + + btdatabase.Enabled = false; + //btrollInfo.Enabled = false; + } + + if (sysStatus == SystemStatus.stop || sysStatus == SystemStatus.unstart) + { + btstart.Enabled = true; + btPause.Enabled = false; + btPause.Image = Host.Properties.Resources.Pause_64; + btPause.Text = "暂停"; + btStop.Enabled = false; + + btSetSensor.Enabled = true; + btSetAlarm.Enabled = true; + btSetSampling.Enabled = true; + btSetStore.Enabled = true; + btSetPassword.Enabled = true; + + btdatabase.Enabled = true; + //btrollInfo.Enabled = true; + } + } + } + //显示打开文件的钢卷信息 + private void GetFileCoilInfo(string fileNameStr, bool isOrigData) + { + //查询该钢卷信息 + DataTable dt = new DataTable(); + macReview.review_coldcoilno = ""; + macReview.review_extThick = ""; + macReview.review_alloyCode = ""; + macReview.review_steelGrade = ""; + macReview.review_width = ""; + + filename_Strip.Text = "文件名:" + fileNameStr.Substring(fileNameStr.Length - 18, 18); + + if (isOrigData) + { + dt = DbHelper.GetInstance("").GetCoilInfoByOriginPath(fileNameStr, macReview); + } + else + { + dt = DbHelper.GetInstance("").GetCoilInfoByEnergyPath(fileNameStr, macReview); + } + + if (macReview.review_coldcoilno != "") + { + filename_Strip.Text = "文件名:" + fileNameStr.Substring(fileNameStr.Length - 18, 18) + " | 冷卷号:" + macReview.review_coldcoilno + " | 出钢记号:" + macReview.review_alloyCode + " | 宽度:" + macReview.review_width + "mm | 出口厚度:" + macReview.review_extThick + "mm"; ; + } + /*else + { + filename_Strip.Text = "文件名:" + fileNameStr.Substring(fileNameStr.Length - 18, 18); + }*/ + } + + private void Alarm_Info_show() + { + labelAlarmNow = new ToolStripLabel(); + comBoxAlarmNow = new ToolStripComboBox(); + comBoxAlarmNow.Alignment = ToolStripItemAlignment.Right; + comBoxAlarmNow.Width = 400; + comBoxAlarmNow.DropDownHeight = 150; + comBoxAlarmNow.DropDownWidth = 400; + toolStrip1.Items.Add(comBoxAlarmNow); + toolStrip1.Items.Add(labelAlarmNow); + labelAlarmNow.Text = "当前报警信息:"; + labelAlarmNow.Alignment = ToolStripItemAlignment.Right; + + labelAlarmLast = new ToolStripLabel(); + comBoxAlarmLast = new ToolStripComboBox(); + comBoxAlarmLast.Alignment = ToolStripItemAlignment.Right; + comBoxAlarmLast.Width = 400; + comBoxAlarmLast.DropDownHeight = 150; + comBoxAlarmLast.DropDownWidth = 400; + toolStrip1.Items.Add(comBoxAlarmLast); + toolStrip1.Items.Add(labelAlarmLast); + labelAlarmLast.Text = "上次报警信息:"; + labelAlarmLast.Alignment = ToolStripItemAlignment.Right; + } + + private void sysconfig_Click(object sender, EventArgs e) + { + login log = new login(); + log.ShowDialog(); + //if (log.DialogResult == DialogResult.OK) + { + SetDataStorageForm newForm = new SetDataStorageForm(); + newForm.ShowDialog(); + } + } + + private void setsensitivity_Click(object sender, EventArgs e) + { + login log = new login(); + log.ShowDialog(); + //if (log.DialogResult == DialogResult.OK) + { + SetSenserForm newForm = new SetSenserForm(); + newForm.ShowDialog(); + } + } + + private void setdisplay_Click(object sender, EventArgs e) + { + SetDisplayForm disForm = new SetDisplayForm(); + disForm.ShowDialog(); + } + + private void setalarm_Click(object sender, EventArgs e) + { + login log = new login(); + log.ShowDialog(); + if (log.DialogResult == DialogResult.OK) + { + DbHelper.GetInstance("").autoUpdateAlarmParam(); + SetAlarmForm newForm = new SetAlarmForm(); + newForm.ShowDialog(); + } + } + + private void btsetsample_Click(object sender, EventArgs e) + { + login log = new login(); + log.ShowDialog(); + //if (log.DialogResult == DialogResult.OK) + { + SetSampleForm newForm = new SetSampleForm(); + newForm.ShowDialog(); + } + } + + private void btsetpassword_Click(object sender, EventArgs e) + { + login log = new login(); + log.ShowDialog(); + //if (log.DialogResult == DialogResult.OK) + { + SetPasswordForm newForm = new SetPasswordForm(); + newForm.ShowDialog(); + } + } + + private void bthelp_Click(object sender, EventArgs e) + { + string path = AppDomain.CurrentDomain.BaseDirectory; + string url = path + "用户使用手册.pdf"; // + try + { + // 使用应用打开 + Process.Start(new ProcessStartInfo(url) { UseShellExecute = true }); + } + catch (Win32Exception ex) // 捕获无浏览器异常 + { + if (ex.ErrorCode == -2147467259) + MessageBox.Show(String.Format("打开\"{0}\"失败:{1}", url, ex.Message)); + } + catch (Exception ex) + { + MessageBox.Show(String.Format("打开\"{0}\"失败:{1}", url, ex.Message)); + } + } + + private void btrollInfo_Click(object sender, EventArgs e) + { + if (isReview) + { + OriginRollForm form = new OriginRollForm(macReview); + form.StartPosition = FormStartPosition.CenterScreen; + form.ShowDialog(); + } + else + { + if (dbHelper.isStart) + { + OnlineRollForm form = new OnlineRollForm(); + form.StartPosition = FormStartPosition.CenterScreen; + form.ShowDialog(); + } + else + { + MessageShowForm form = new MessageShowForm("提示", "未启动数据连接,无法获取在线轧辊信息!"); + form.ShowDialog(); + } + } + } + + private void btdataSearch_Click(object sender, EventArgs e) + { + DataSearchForm data = new DataSearchForm(); + data.showdata += new ShowGridData(OpenFile); + data.ShowDialog(); + } + + private void btdatabase_Click(object sender, EventArgs e) + { + //login log = new login(); + //log.ShowDialog(); + //if (log.DialogResult == DialogResult.OK) + { + DataAccessForm newForm = new DataAccessForm(dbHelper); + newForm.ShowDialog(); + } + } + + private void IServerMainForm_FormClosing(object sender, FormClosingEventArgs e) + { + DialogResult dir = MessageBox.Show("确定退出本系统吗?", "信息提示框", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); + if (dir == DialogResult.OK) + { + try + { + if (dpc != null) + { + dpc.Stop(); + } + } + catch (Exception) + { + throw; + } + ConfigHelper.GetInstance("").SaveConfig(Application.StartupPath);//保存文件 + + dbHelper.SaveAlarmParam(ConfigHelper.GetInstance("").GetAlarmParam());//保存数据库 + + recordLog("退出本系统"); + } + else + { + e.Cancel = true; + } + } + + private void toolStripLabel1_Click(object sender, EventArgs e) + { + tableLayoutPanel3.Visible = tableLayoutPanel3.Visible ? false : true; + } + + private void timer_delFile_Tick(object sender, EventArgs e) + { + new Task(() => DeleteFile()).Start(); + } + + private void DeleteFile() + { + string driveStr = SysParam.Instance.savePath.Substring(0, 2); + System.IO.DriveInfo drive = new System.IO.DriveInfo(driveStr); + long availabelfreespace = drive.AvailableFreeSpace / 1024 / 1024 / 1024;//剩余空间转换为G + long needFreespace = availabelfreespace - 20;//至少预留20个G的空间 + if (needFreespace <= 0) + { + DirectoryInfo savedir = new DirectoryInfo(SysParam.Instance.savePath + "\\"); + FileComparer fc = new FileComparer(); + DirectoryInfo[] dirList = savedir.GetDirectories(); + Array.Sort(dirList, fc);//根据时间排序 + + if (dirList.Length > 0) + { + Directory.Delete(dirList[0].FullName, true); + } + } + + //删除创建日期早于一定天数的文件夹 + foreach (string dirStr in Directory.GetDirectories(SysParam.Instance.savePath)) + { + DirectoryInfo dir = new DirectoryInfo(dirStr); + if (dir.CreationTime < DateTime.Now.AddDays(-SysParam.Instance.saveDaysAlarm)) + { + Directory.Delete(dirStr, true); + } + } + DataTable noalarmdata = dbHelper.GetCoilInfoByDate(false, DateTime.Now.AddDays(-360), DateTime.Now.AddDays(-SysParam.Instance.saveDaysNoAlarm)); + DataTable alarmdata = dbHelper.GetCoilInfoByDate(true, DateTime.Now.AddDays(-360), DateTime.Now.AddDays(-SysParam.Instance.saveDaysAlarm)); + for (int i = 0; i < noalarmdata.Rows.Count; i++) + { + if (File.Exists(noalarmdata.Rows[i]["origpath"].ToString().Trim())) + { + File.Delete(noalarmdata.Rows[i]["origpath"].ToString().Trim()); + } + + if (File.Exists(noalarmdata.Rows[i]["energypath"].ToString().Trim())) + { + File.Delete(noalarmdata.Rows[i]["energypath"].ToString().Trim()); + } + } + for (int i = 0; i < alarmdata.Rows.Count; i++) + { + if (File.Exists(alarmdata.Rows[i]["origpath"].ToString().Trim())) + { + File.Delete(alarmdata.Rows[i]["origpath"].ToString().Trim()); + } + + if (File.Exists(alarmdata.Rows[i]["energypath"].ToString().Trim())) + { + File.Delete(alarmdata.Rows[i]["energypath"].ToString().Trim()); + } + } + } + + private void timer_RollInfo_Tick(object sender, EventArgs e) + { + //Console.WriteLine($"|{DateTime.Now.ToString("F")}|---Test---dbHelper is null?{dbHelper == null},mac is null?{mac == null}"); + if (dbHelper != null && mac != null) + { + if (isRollInfoRead == false || mac.lengthSpeed < 50) + { + DataTable rolldata = dbHelper.GetL2OnlineRollInfo(); + if (rolldata == null || rolldata.Rows.Count == 0) + { + return; + } + dbHelper.RollDataInfo(mac, rolldata); + isRollInfoRead = true; + } + } + } + + private void recordLog(string logInfo) + { + if (dbHelper != null) + { + dbHelper.recordLogInfo("SERVER", logInfo); + } + } + + private void IServerMainForm_FormClosed(object sender, FormClosedEventArgs e) + { + Process curProcess = Process.GetCurrentProcess(); + IntPtr handle = curProcess.Handle; + TerminateProcess(handle, 0); + } + + private void btSysSetting_Click(object sender, EventArgs e) + { + + } + } + +} diff --git a/Host/IServerMainForm.designer.cs b/Host/IServerMainForm.designer.cs new file mode 100644 index 0000000..9804191 --- /dev/null +++ b/Host/IServerMainForm.designer.cs @@ -0,0 +1,684 @@ +namespace CRVM +{ + partial class IServerMainForm + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin(); + WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin1 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin(); + WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient(); + WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient1 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); + WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin(); + WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient(); + WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient2 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); + WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient(); + WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient3 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); + WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient(); + WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient4 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); + WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient5 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); + WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient3 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient(); + WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient6 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); + WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient7 = new WeifenLuo.WinFormsUI.Docking.TabGradient(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(IServerMainForm)); + this.Timer_Graph = new System.Windows.Forms.Timer(this.components); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel(); + this.Timer_CoilInfo = new System.Windows.Forms.Timer(this.components); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.btnViewIn = new System.Windows.Forms.ToolStripButton(); + this.btstart = new System.Windows.Forms.ToolStripButton(); + this.btReviewExit = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.btPause = new System.Windows.Forms.ToolStripButton(); + this.btStop = new System.Windows.Forms.ToolStripButton(); + this.bthelp = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.btsearch = new System.Windows.Forms.ToolStripDropDownButton(); + this.btdataSearch = new System.Windows.Forms.ToolStripMenuItem(); + this.btdatabase = new System.Windows.Forms.ToolStripMenuItem(); + this.btrollInfo = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.btSysSetting = new System.Windows.Forms.ToolStripDropDownButton(); + this.btSetSensor = new System.Windows.Forms.ToolStripMenuItem(); + this.btSetAlarm = new System.Windows.Forms.ToolStripMenuItem(); + this.btSetSampling = new System.Windows.Forms.ToolStripMenuItem(); + this.btSetStore = new System.Windows.Forms.ToolStripMenuItem(); + this.btSetDisplay = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.btSetPassword = new System.Windows.Forms.ToolStripMenuItem(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.connectStatusStrip = new System.Windows.Forms.ToolStripStatusLabel(); + this.filename_Strip = new System.Windows.Forms.ToolStripStatusLabel(); + this.cutLenSpeedStrip = new System.Windows.Forms.ToolStripStatusLabel(); + this.distance_Strip = new System.Windows.Forms.ToolStripStatusLabel(); + this.backgroundWorker = new System.ComponentModel.BackgroundWorker(); + this.timer_delFile = new System.Windows.Forms.Timer(this.components); + this.timer_RollInfo = new System.Windows.Forms.Timer(this.components); + this.backgroundWorker_fileRead = new System.ComponentModel.BackgroundWorker(); + this.tableLayoutPanel2.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // Timer_Graph + // + this.Timer_Graph.Interval = 200; + this.Timer_Graph.Tick += new System.EventHandler(this.Timer_Graph_Tick); + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel3, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.dockPanel1, 1, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 51); + this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(914, 644); + this.tableLayoutPanel2.TabIndex = 2; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.AutoSize = true; + this.tableLayoutPanel3.BackColor = System.Drawing.Color.WhiteSmoke; + this.tableLayoutPanel3.ColumnCount = 1; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3.Controls.Add(this.panel1, 0, 1); + this.tableLayoutPanel3.Controls.Add(this.panel3, 0, 5); + this.tableLayoutPanel3.Controls.Add(this.panel2, 0, 3); + this.tableLayoutPanel3.Controls.Add(this.panel4, 0, 7); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 8; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel3.Size = new System.Drawing.Size(150, 644); + this.tableLayoutPanel3.TabIndex = 1; + // + // panel1 + // + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.panel1.Location = new System.Drawing.Point(0, 30); + this.panel1.Margin = new System.Windows.Forms.Padding(0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(150, 124); + this.panel1.TabIndex = 1; + // + // panel3 + // + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.panel3.Location = new System.Drawing.Point(0, 501); + this.panel3.Margin = new System.Windows.Forms.Padding(0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(150, 182); + this.panel3.TabIndex = 3; + // + // panel2 + // + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.panel2.Location = new System.Drawing.Point(0, 184); + this.panel2.Margin = new System.Windows.Forms.Padding(0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(150, 287); + this.panel2.TabIndex = 2; + // + // panel4 + // + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Location = new System.Drawing.Point(3, 716); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(144, 94); + this.panel4.TabIndex = 4; + // + // dockPanel1 + // + this.dockPanel1.ActiveAutoHideContent = null; + this.dockPanel1.AllowEndUserDocking = false; + this.dockPanel1.AllowEndUserNestedDocking = false; + this.dockPanel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.dockPanel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.dockPanel1.CausesValidation = false; + this.dockPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dockPanel1.DockBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.dockPanel1.DocumentStyle = WeifenLuo.WinFormsUI.Docking.DocumentStyle.DockingSdi; + this.dockPanel1.Location = new System.Drawing.Point(150, 0); + this.dockPanel1.Margin = new System.Windows.Forms.Padding(0); + this.dockPanel1.Name = "dockPanel1"; + this.dockPanel1.Size = new System.Drawing.Size(764, 644); + dockPanelGradient1.EndColor = System.Drawing.SystemColors.Control; + dockPanelGradient1.StartColor = System.Drawing.SystemColors.Control; + autoHideStripSkin1.DockStripGradient = dockPanelGradient1; + tabGradient1.EndColor = System.Drawing.SystemColors.Control; + tabGradient1.StartColor = System.Drawing.SystemColors.Control; + tabGradient1.TextColor = System.Drawing.SystemColors.ControlDarkDark; + autoHideStripSkin1.TabGradient = tabGradient1; + dockPanelSkin1.AutoHideStripSkin = autoHideStripSkin1; + tabGradient2.EndColor = System.Drawing.SystemColors.ControlLightLight; + tabGradient2.StartColor = System.Drawing.SystemColors.ControlLightLight; + tabGradient2.TextColor = System.Drawing.SystemColors.ControlText; + dockPaneStripGradient1.ActiveTabGradient = tabGradient2; + dockPanelGradient2.EndColor = System.Drawing.SystemColors.Control; + dockPanelGradient2.StartColor = System.Drawing.SystemColors.Control; + dockPaneStripGradient1.DockStripGradient = dockPanelGradient2; + tabGradient3.EndColor = System.Drawing.SystemColors.ControlLight; + tabGradient3.StartColor = System.Drawing.SystemColors.ControlLight; + tabGradient3.TextColor = System.Drawing.SystemColors.ControlText; + dockPaneStripGradient1.InactiveTabGradient = tabGradient3; + dockPaneStripSkin1.DocumentGradient = dockPaneStripGradient1; + tabGradient4.EndColor = System.Drawing.SystemColors.ActiveCaption; + tabGradient4.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + tabGradient4.StartColor = System.Drawing.SystemColors.GradientActiveCaption; + tabGradient4.TextColor = System.Drawing.SystemColors.ActiveCaptionText; + dockPaneStripToolWindowGradient1.ActiveCaptionGradient = tabGradient4; + tabGradient5.EndColor = System.Drawing.SystemColors.Control; + tabGradient5.StartColor = System.Drawing.SystemColors.Control; + tabGradient5.TextColor = System.Drawing.SystemColors.ControlText; + dockPaneStripToolWindowGradient1.ActiveTabGradient = tabGradient5; + dockPanelGradient3.EndColor = System.Drawing.SystemColors.ControlLight; + dockPanelGradient3.StartColor = System.Drawing.SystemColors.ControlLight; + dockPaneStripToolWindowGradient1.DockStripGradient = dockPanelGradient3; + tabGradient6.EndColor = System.Drawing.SystemColors.GradientInactiveCaption; + tabGradient6.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical; + tabGradient6.StartColor = System.Drawing.SystemColors.GradientInactiveCaption; + tabGradient6.TextColor = System.Drawing.SystemColors.ControlText; + dockPaneStripToolWindowGradient1.InactiveCaptionGradient = tabGradient6; + tabGradient7.EndColor = System.Drawing.Color.Transparent; + tabGradient7.StartColor = System.Drawing.Color.Transparent; + tabGradient7.TextColor = System.Drawing.SystemColors.ControlDarkDark; + dockPaneStripToolWindowGradient1.InactiveTabGradient = tabGradient7; + dockPaneStripSkin1.ToolWindowGradient = dockPaneStripToolWindowGradient1; + dockPanelSkin1.DockPaneStripSkin = dockPaneStripSkin1; + this.dockPanel1.Skin = dockPanelSkin1; + this.dockPanel1.TabIndex = 3; + // + // Timer_CoilInfo + // + this.Timer_CoilInfo.Enabled = true; + this.Timer_CoilInfo.Interval = 10000; + this.Timer_CoilInfo.Tick += new System.EventHandler(this.Timer_CoilInfo_Tick); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + // + // toolStrip1 + // + this.toolStrip1.AutoSize = false; + this.toolStrip1.BackColor = System.Drawing.Color.WhiteSmoke; + this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Fill; + this.toolStrip1.GripMargin = new System.Windows.Forms.Padding(0); + this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(50, 50); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripLabel1, + this.toolStripSeparator1, + this.btnViewIn, + this.btstart, + this.btReviewExit, + this.toolStripSeparator2, + this.btPause, + this.btStop, + this.bthelp, + this.toolStripSeparator6, + this.btsearch, + this.toolStripSeparator5, + this.btSysSetting}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Padding = new System.Windows.Forms.Padding(0); + this.toolStrip1.Size = new System.Drawing.Size(914, 51); + this.toolStrip1.TabIndex = 0; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripLabel1 + // + this.toolStripLabel1.AutoSize = false; + this.toolStripLabel1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripLabel1.Image = global::Host.Properties.Resources.VibrationTest1; + this.toolStripLabel1.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.toolStripLabel1.Margin = new System.Windows.Forms.Padding(0); + this.toolStripLabel1.Name = "toolStripLabel1"; + this.toolStripLabel1.Size = new System.Drawing.Size(147, 48); + this.toolStripLabel1.Text = "单击 隐藏/显示 侧边栏"; + this.toolStripLabel1.Click += new System.EventHandler(this.toolStripLabel1_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 51); + // + // btnViewIn + // + this.btnViewIn.AutoSize = false; + this.btnViewIn.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btnViewIn.Image = global::Host.Properties.Resources.Open_64; + this.btnViewIn.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btnViewIn.Name = "btnViewIn"; + this.btnViewIn.Size = new System.Drawing.Size(51, 51); + this.btnViewIn.Text = "进入回放"; + this.btnViewIn.Click += new System.EventHandler(this.btnViewIn_Click); + // + // btstart + // + this.btstart.AutoSize = false; + this.btstart.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btstart.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btstart.Image = global::Host.Properties.Resources.Play_64; + this.btstart.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btstart.Name = "btstart"; + this.btstart.Size = new System.Drawing.Size(51, 51); + this.btstart.Text = "开始"; + this.btstart.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + this.btstart.Click += new System.EventHandler(this.start_Click); + // + // btReviewExit + // + this.btReviewExit.AutoSize = false; + this.btReviewExit.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btReviewExit.Image = global::Host.Properties.Resources.Exit_64; + this.btReviewExit.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btReviewExit.Name = "btReviewExit"; + this.btReviewExit.Size = new System.Drawing.Size(51, 51); + this.btReviewExit.Text = "退出回放"; + this.btReviewExit.Visible = false; + this.btReviewExit.Click += new System.EventHandler(this.btnViewOut_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 51); + // + // btPause + // + this.btPause.AutoSize = false; + this.btPause.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btPause.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btPause.Image = global::Host.Properties.Resources.Pause_64; + this.btPause.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btPause.Name = "btPause"; + this.btPause.Size = new System.Drawing.Size(51, 51); + this.btPause.Text = "暂停"; + this.btPause.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + this.btPause.Click += new System.EventHandler(this.pause_Click); + // + // btStop + // + this.btStop.AutoSize = false; + this.btStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btStop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btStop.Image = global::Host.Properties.Resources.Stop_64; + this.btStop.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btStop.Name = "btStop"; + this.btStop.Size = new System.Drawing.Size(51, 51); + this.btStop.Text = "停止"; + this.btStop.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + this.btStop.Click += new System.EventHandler(this.stop_Click); + // + // bthelp + // + this.bthelp.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.bthelp.AutoSize = false; + this.bthelp.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bthelp.Image = global::Host.Properties.Resources.Help_64; + this.bthelp.ImageTransparentColor = System.Drawing.Color.Magenta; + this.bthelp.Name = "bthelp"; + this.bthelp.Size = new System.Drawing.Size(51, 51); + this.bthelp.Text = "帮助"; + this.bthelp.Click += new System.EventHandler(this.bthelp_Click); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(6, 51); + // + // btsearch + // + this.btsearch.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btsearch.AutoSize = false; + this.btsearch.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btsearch.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btdataSearch, + this.btdatabase, + this.btrollInfo}); + this.btsearch.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btsearch.Image = global::Host.Properties.Resources.search_64; + this.btsearch.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btsearch.Name = "btsearch"; + this.btsearch.Size = new System.Drawing.Size(61, 51); + this.btsearch.Text = "数据中心"; + this.btsearch.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + // + // btdataSearch + // + this.btdataSearch.Name = "btdataSearch"; + this.btdataSearch.Size = new System.Drawing.Size(124, 22); + this.btdataSearch.Text = "数据查询"; + this.btdataSearch.Click += new System.EventHandler(this.btdataSearch_Click); + // + // btdatabase + // + this.btdatabase.Name = "btdatabase"; + this.btdatabase.Size = new System.Drawing.Size(124, 22); + this.btdatabase.Text = "L2通信"; + this.btdatabase.Click += new System.EventHandler(this.btdatabase_Click); + // + // btrollInfo + // + this.btrollInfo.Name = "btrollInfo"; + this.btrollInfo.Size = new System.Drawing.Size(124, 22); + this.btrollInfo.Text = "轧辊信息"; + this.btrollInfo.Click += new System.EventHandler(this.btrollInfo_Click); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(6, 51); + // + // btSysSetting + // + this.btSysSetting.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.btSysSetting.AutoSize = false; + this.btSysSetting.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btSysSetting.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btSetSensor, + this.btSetAlarm, + this.btSetSampling, + this.btSetStore, + this.btSetDisplay, + this.toolStripSeparator4, + this.btSetPassword}); + this.btSysSetting.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btSysSetting.Image = global::Host.Properties.Resources.Settings_64; + this.btSysSetting.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btSysSetting.Name = "btSysSetting"; + this.btSysSetting.Size = new System.Drawing.Size(61, 51); + this.btSysSetting.Text = "系统配置"; + this.btSysSetting.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText; + this.btSysSetting.Click += new System.EventHandler(this.btSysSetting_Click); + // + // btSetSensor + // + this.btSetSensor.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btSetSensor.ForeColor = System.Drawing.Color.Black; + this.btSetSensor.Name = "btSetSensor"; + this.btSetSensor.Size = new System.Drawing.Size(180, 22); + this.btSetSensor.Text = "传感器"; + this.btSetSensor.Click += new System.EventHandler(this.setsensitivity_Click); + // + // btSetAlarm + // + this.btSetAlarm.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btSetAlarm.ForeColor = System.Drawing.Color.Black; + this.btSetAlarm.Name = "btSetAlarm"; + this.btSetAlarm.Size = new System.Drawing.Size(180, 22); + this.btSetAlarm.Text = "报警"; + this.btSetAlarm.Click += new System.EventHandler(this.setalarm_Click); + // + // btSetSampling + // + this.btSetSampling.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btSetSampling.ForeColor = System.Drawing.Color.Black; + this.btSetSampling.Name = "btSetSampling"; + this.btSetSampling.Size = new System.Drawing.Size(180, 22); + this.btSetSampling.Text = "采样"; + this.btSetSampling.Click += new System.EventHandler(this.btsetsample_Click); + // + // btSetStore + // + this.btSetStore.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btSetStore.ForeColor = System.Drawing.Color.Black; + this.btSetStore.Name = "btSetStore"; + this.btSetStore.Size = new System.Drawing.Size(180, 22); + this.btSetStore.Text = "存储"; + this.btSetStore.Click += new System.EventHandler(this.sysconfig_Click); + // + // btSetDisplay + // + this.btSetDisplay.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btSetDisplay.ForeColor = System.Drawing.Color.Black; + this.btSetDisplay.Name = "btSetDisplay"; + this.btSetDisplay.Size = new System.Drawing.Size(180, 22); + this.btSetDisplay.Text = "显示"; + this.btSetDisplay.Click += new System.EventHandler(this.setdisplay_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.ForeColor = System.Drawing.Color.Black; + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(177, 6); + // + // btSetPassword + // + this.btSetPassword.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btSetPassword.ForeColor = System.Drawing.Color.Black; + this.btSetPassword.Name = "btSetPassword"; + this.btSetPassword.Size = new System.Drawing.Size(180, 22); + this.btSetPassword.Text = "密码"; + this.btSetPassword.Click += new System.EventHandler(this.btsetpassword_Click); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.BackColor = System.Drawing.Color.White; + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.statusStrip1, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.toolStrip1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 3; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 51F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 23F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(914, 718); + this.tableLayoutPanel1.TabIndex = 6; + // + // statusStrip1 + // + this.statusStrip1.BackColor = System.Drawing.Color.RoyalBlue; + this.statusStrip1.Dock = System.Windows.Forms.DockStyle.Fill; + this.statusStrip1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.statusStrip1.GripMargin = new System.Windows.Forms.Padding(0); + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.connectStatusStrip, + this.filename_Strip, + this.cutLenSpeedStrip, + this.distance_Strip}); + this.statusStrip1.Location = new System.Drawing.Point(0, 695); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(914, 23); + this.statusStrip1.SizingGrip = false; + this.statusStrip1.TabIndex = 3; + this.statusStrip1.Text = "statusStrip1"; + // + // connectStatusStrip + // + this.connectStatusStrip.ForeColor = System.Drawing.Color.White; + this.connectStatusStrip.Margin = new System.Windows.Forms.Padding(0); + this.connectStatusStrip.Name = "connectStatusStrip"; + this.connectStatusStrip.Size = new System.Drawing.Size(0, 0); + this.connectStatusStrip.Spring = true; + this.connectStatusStrip.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // filename_Strip + // + this.filename_Strip.ForeColor = System.Drawing.Color.White; + this.filename_Strip.Margin = new System.Windows.Forms.Padding(0); + this.filename_Strip.Name = "filename_Strip"; + this.filename_Strip.Size = new System.Drawing.Size(0, 0); + this.filename_Strip.Spring = true; + this.filename_Strip.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.filename_Strip.Visible = false; + // + // cutLenSpeedStrip + // + this.cutLenSpeedStrip.ForeColor = System.Drawing.Color.White; + this.cutLenSpeedStrip.Margin = new System.Windows.Forms.Padding(0); + this.cutLenSpeedStrip.Name = "cutLenSpeedStrip"; + this.cutLenSpeedStrip.Size = new System.Drawing.Size(0, 0); + this.cutLenSpeedStrip.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // distance_Strip + // + this.distance_Strip.ForeColor = System.Drawing.Color.White; + this.distance_Strip.Margin = new System.Windows.Forms.Padding(0); + this.distance_Strip.Name = "distance_Strip"; + this.distance_Strip.Size = new System.Drawing.Size(0, 0); + this.distance_Strip.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // backgroundWorker + // + this.backgroundWorker.WorkerReportsProgress = true; + this.backgroundWorker.WorkerSupportsCancellation = true; + this.backgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker_DoWork); + this.backgroundWorker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.backgroundWorker_ProgressChanged); + // + // timer_delFile + // + this.timer_delFile.Enabled = true; + this.timer_delFile.Interval = 3600000; + this.timer_delFile.Tick += new System.EventHandler(this.timer_delFile_Tick); + // + // timer_RollInfo + // + this.timer_RollInfo.Enabled = true; + this.timer_RollInfo.Interval = 30000; + this.timer_RollInfo.Tick += new System.EventHandler(this.timer_RollInfo_Tick); + // + // IServerMainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(914, 718); + this.Controls.Add(this.tableLayoutPanel1); + this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.MinimumSize = new System.Drawing.Size(930, 700); + this.Name = "IServerMainForm"; + this.ShowIcon = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = " "; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.IServerMainForm_FormClosing); + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.IServerMainForm_FormClosed); + this.Load += new System.EventHandler(this.MainForm_Load); + this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel2.PerformLayout(); + this.tableLayoutPanel3.ResumeLayout(false); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Timer Timer_Graph; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private WeifenLuo.WinFormsUI.Docking.DockPanel dockPanel1; + private System.Windows.Forms.Timer Timer_CoilInfo; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripDropDownButton btSysSetting; + private System.Windows.Forms.ToolStripMenuItem btSetSensor; + private System.Windows.Forms.ToolStripMenuItem btSetAlarm; + private System.Windows.Forms.ToolStripMenuItem btSetSampling; + private System.Windows.Forms.ToolStripMenuItem btSetStore; + private System.Windows.Forms.ToolStripMenuItem btSetDisplay; + private System.Windows.Forms.ToolStripMenuItem btSetPassword; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripButton btstart; + private System.Windows.Forms.ToolStripButton btStop; + private System.Windows.Forms.ToolStripButton btPause; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.ToolStripButton bthelp; + private System.Windows.Forms.ToolStripButton btnViewIn; + private System.Windows.Forms.ToolStripButton btReviewExit; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripDropDownButton btsearch; + private System.Windows.Forms.ToolStripMenuItem btrollInfo; + private System.Windows.Forms.ToolStripMenuItem btdataSearch; + private System.Windows.Forms.ToolStripMenuItem btdatabase; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripLabel toolStripLabel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel filename_Strip; + private System.Windows.Forms.ToolStripStatusLabel cutLenSpeedStrip; + private System.Windows.Forms.ToolStripStatusLabel distance_Strip; + private System.Windows.Forms.ToolStripStatusLabel connectStatusStrip; + private System.ComponentModel.BackgroundWorker backgroundWorker; + private System.Windows.Forms.Timer timer_delFile; + private System.Windows.Forms.Timer timer_RollInfo; + private System.ComponentModel.BackgroundWorker backgroundWorker_fileRead; + } +} + diff --git a/Host/IServerMainForm.resx b/Host/IServerMainForm.resx new file mode 100644 index 0000000..cec6448 --- /dev/null +++ b/Host/IServerMainForm.resx @@ -0,0 +1,4665 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 267, 17 + + + 514, 17 + + + 404, 17 + + + True + + + 783, 17 + + + 904, 17 + + + 1294, 17 + + + 17, 56 + + + 151, 56 + + + 95 + + + + + AAABAAEAAAAAAAEAIAAoIAQAFgAAACgAAAAAAQAAAAIAAAEAIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /x7///9O////dv///5n///+1////yf///9v////n////7/////f////7/////f////////////////// + /////////////////////////////f////v////3////7////+f////b////yf///7X///+Z////dv// + /07///8eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPkFWZ1Ig+39+FLvfqhiL9////6f// + //f///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////f////p6oYi/d+FLvfUiD7fz5BVmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM6PU53Xhjnn44Un+/GIIP/7jh3//5Ae//+QHv//kB7//5Ae//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////+QHv//kB7//5Ae//+QHv/7jh3/8Ygg/+OFJ/vXhjnnzo9TnQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAM+NTrPahTLx64Yi//mMHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/5jB7/64Yi/9qFMvHPjU6zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyR + WXjXhjnn54Uk/fiLHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//iLHv/nhST914Y558yRWXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOjlGl24Uw8++I + If/9jx7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/9jx7/74gh/9uFMPPOjlGlAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzo9Tn9yFMPXxiSH//o8e//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//o8e//GJ + If/chTD1zo9TnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2UXmLYhjft7Ycg//2PHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//2PHv/thyD/2IY37c2UXmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0YlFy+WFJv36jR3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/5YUm/dGJRcsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2WY0jYhjbt8Ikh//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/8Ikh/9iGNu3NlmNIAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAzZBVkd6ELPn3ix7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/94se/96E + LPnNkFWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADPjU+x44Un+/qNHf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/+o0d/+OFJ/vPjU+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAM+MTLnmhSX9/I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//I4e/+aFJf3PjEy5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAz41PseWFJv38jh7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//I4e/+WFJv3PjU+xAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADNkFWR44Up+/uNHf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+40d/+OFKfvNkFWRAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMuU + YUTchTD1+Ywe//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+Ywe/9yF + MPXLlGFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANaH + OuXziR///5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/84kf/9aHOuUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz4xMueqG + Iv3/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/6oYi/c+MTLkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMl2Q23oUv9/qN + Hf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/3oUv98yXZDYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSiULT8Icg//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/whyD/0olC0wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2WY0jghCr5/I4e//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yOHv/ghCr5zZZjSAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANKKRc3whyD//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//CH + IP/SikXNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANyFMPX7jR3//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/+40d/9yFMPUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzo9TneqGIv3/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/6oYi/c6PU50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1Ic+3fWLH///kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/1ix//1Ic+3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3YUv9fyOHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yOHv/dhS/1AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMk1xq5oQk/f+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/8jh7/94oe//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////eK + Hv/8jh7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+aEJP3Mk1xqAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPjE2374cg//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/6jR3/74gh/9+HMv/an2b/4buW//Hj1f////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///x49X/4buW/9qfZv/fhzL/74gh//qNHf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/74cg/8+M + TbcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTiEDb9ooe//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/+jx7/84kg/+GHMP/cp3T/7NbB//nz7f////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////nz7f/s1sH/3Kd0/+GHMP/ziSD//o8e//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/2ih7/04hA2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYhjbt+o0d//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//Y8e/+2H + IP/cjkL/48Ce//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////+PAnv/cjkL/7Ycg//2P + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//qNHf/YhjbtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdhS/1/Y8e//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yOHv/viCH/25BG/+O+ + m/////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///jvpv/25BG/++IIf/8jh7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//Y8e/92FL/UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADihCj5/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/9Ysf/9+JNv/gto//+/j0//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////7+PT/4LaP/9+JNv/1ix///5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/4oQo+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyYaCjlhSb7/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//6PHv/thyL/2pxg//Pm2v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////8+ba/9qcYP/thyL//o8e//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/lhSb7zJhoKAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMuUYUTnhST9/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+44d/+WHKv/er4P///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////96vg//lhyr/+44d//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+eFJP3LlGFEAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyVYVLphiP9/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/4Igy/+O+m/////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+O+ + m//giDL/+o0d//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/6YYj/cyV + YVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyVYVLqhiL9/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//qNHf/fiTb/5smu//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+bJrv/fiTb/+o0d//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/qhiL9zJVhUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMuUYUTphiP9/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//I4e/+OILv/kw6T///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////+TDpP/jiC7//I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/+mGI/3LlGFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyYaCjnhST9/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/+jx7/6IYl/9+0i/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////9+0i//ohiX//o8e//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/54Uk/cyYaCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADlhSb7/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/ziR//26Bn//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////9ugZ//ziR///5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/lhSb7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADihCj5/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//uOHf/djD7/8ePV//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////8ePV/92M + Pv/7jh3//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+KEKPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdhS/1/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/+yHIv/ivJn///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////4ryZ/+yHIv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/3YUv9QAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYhjbt/Y8e//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/+44d/9uQSP/48ev///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////48ev/25BI//uOHf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//2PHv/YhjbtAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTiEDb+o0d//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/7Ici/+C2j/////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////gto//7Ici//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+o0d/9OI + QNsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPjE239ooe//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/9jx7/3oo3//Xq4P////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////Xq4P/eijf//Y8e//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/2ih7/z4xNtwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMk1xq74cg//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/3ih7/2p5j//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////9qeY//3ih7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/++HIP/Mk1xqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5oQk/f+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/tiCL/5MOk//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////5MOk/+2I + Iv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/5oQk/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3YUv9f+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//6P + Hv/jhy3/9u3k//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///27eT/44ct//6PHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/dhS/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1Ic+3fyOHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yO + Hv/bjUL//v37//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////79+//bjUL//I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//I4e/9SHPt0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzo9TnfWLH///kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//qN + Hf/anWH///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////9qdYf/6jR3//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/1ix//zo9TnQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOqGIv3/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//iM + Hv/er4P///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////3q+D//iMHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+qGIv0AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANyFMPX/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//WL + H//myKv///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////myKv/9Ysf//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/3IUw9QAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANKKRc37jR3//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//OJ + IP/s1sH///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////+zWwf/ziSD//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//uN + Hf/SikXNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2WY0jwhyD//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//GI + IP/r077///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////69O+//GI + IP//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/8Icg/82WY0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADghCr5/5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//GI + IP/p0Ln///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///p0Ln/8Ygg//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/ghCr5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSiULT/I4e//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//OJ + H//s1sL///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+zWwv/ziR///5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//I4e/9KJQtMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMl2Q28Icg//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//WL + H//r077///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////69O+//WLH///kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/whyD/zJdkNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3oUv9/+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//iL + Hv/lxaf///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////f39//XV1e/1dXWf9XV1n/V1dZ/1dXWf9YWFr/fn5///////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////lxaf/+Ise//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/96FL/cAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz4xMufqN + Hf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//qN + Hf/esYX///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////Wlpc/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf+NjY7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////96xhf/6jR3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/z4xMuQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOqG + Iv3/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yO + Hv/anmP///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////ZmZo/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/7+/ + v/////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////2p5j//yOHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+qGIv0AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANaH + OuX/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/ajkP///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////paWm/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9gYGL/+/v7//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////ajkP//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/1oc65QAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMuU + YUTziR///5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/jiC7//fr4//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////1paXP9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/5mZmv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////fr4/+OI + Lv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//OJ + H//LlGFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADchTD1/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/tiCH/9erg//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////3x8ff9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9YWFr///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///16uD/7Ygh//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/3IUw9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADNkFWR+Ywe//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/3ix7/5sir//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////+fn5/9YWFr/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/3h4ev////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+bIq//3ix7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//mMHv/NkFWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA44Up+/+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/9jx7/2p5k//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////9wcHH/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/39/f//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////2p5k//2PHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/44Up+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAz41PsfuNHf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/3Yo4//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////Z2dn/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/2JiZP////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////dijj//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//uNHf/PjU+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOWFJv3/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/7Ygh//r18f////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////YGBh/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/o6Ok//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////+vXx/+2IIf//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/5YUm/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAM+MTLn8jh7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/+44d/+C2j/////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////paWm/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1xcXv/39/f///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////gto//+44d//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yOHv/PjEy5AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADmhSX9/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/9uRSf////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////1lZW/9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/iYmK//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////9uRSf//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/5oUl/QAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADPjU+x/I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/+yHIv/27eT///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////3Z2d/9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1hY + Wv/s7O3///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////27eT/7Ici//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yOHv/PjU+xAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA44Un+/+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//uOHf/jwJ7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////9vb2/9YWFr/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/d3d4//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+PA + nv/7jh3//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/44Un+wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAzZBVkfqNHf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/djD7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////9lZWb/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf/c3N3///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////3Yw+//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//qN + Hf/NkFWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6ELPn/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/ziR//8ePV//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////+zs7T/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/YGBi//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////Hj1f/ziR///5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/3oQs+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2WY0j3ix7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/2qFr//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////XV1f/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf+ioqL///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////2qFr//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//eLHv/NlmNIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYhjbt/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/6IYl//nz7f////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////nZ2e/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/WVlb//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////nz7f/ohiX//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/2IY27QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8Ikh//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//I4e/+C2j/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////1hYWv9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf97e3z///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////4LaP//yOHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//CJIf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0YlFy/+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/+KHLf////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////3Z2d/9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/WFha/9nZ2f////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////ihy3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/0YlFywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOWFJv3/kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//qNHf/lxaf///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////+fn5/9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9sbG7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////5cWn//qNHf//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+WFJv0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2UXmL6jR3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/fiTb///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////9gYGL/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/8PD + xP////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////fiTb//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/zZReYgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYhjft/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/5smu//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////+jo6T/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9fX2H///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////5smu//qN + Hf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/9iGN+0AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7Ycg//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/34cy//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////XFxd/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/6OjpP////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///fhzL//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/thyD/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzo9Tn/2PHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//I4e/+PAn/////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////iYmK/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9YWFr///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////48Cf//yOHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//Y8e/86P + U58AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANyFMPX/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+WHKv////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////8vLy/1hY + Wv9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/3V1d/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////lhyr//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/chTD1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxiSH//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//6PHv/esYX///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////3Bw + cf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9YWFr/1NTU//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////3rGF//6PHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/8Ykh/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOjlGl/o8e//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/shyL///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+fn + 5/9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/2VlZv////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////shyL//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//6PHv/OjlGlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA24Uw8/+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/2pxg//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9dXV//V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/pqam//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////2pxg//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/24Uw8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO+I + If//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/9Yoe//Xq4P////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //+jo6T/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/19fYf////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////Xq4P/1ih7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/++IIf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyR + WXj9jx7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/9+JNv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////WVlb/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/lZWW//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////34k2//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/9jx7/zJFZeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADXhjnn/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//2PHv/hu5b///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////eXl7/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1hY + Wv////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////+G7lv/9jx7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/9eGOecAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA54Uk/f+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/viCH/+PHr//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////09PT/1hYWv9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/cHBx//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////48ev/74gh//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/nhST9AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPiLHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/25BG//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////2pqbP9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf/Z2dn///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////9uQ + Rv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+Ise/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAM+NTrP/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//Y8e/+PA + n/////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////8LCw/9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/X19h//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///jwJ///Y8e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/PjU6zAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADahTLx/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+2H + IP////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9eXmD/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf+jo6T///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+2HIP//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/2oUy8QAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA64Yi//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/cjkL///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////+ioqL/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/W1td//T09P////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////cjkL//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+uG + Iv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPmMHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/+jx7/48Ce//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////WFha/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf+CgoP///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////48Ce//6PHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/5jB7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM6PU53/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/84kg//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////bW1u/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/WFha/9TU1P////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////ziSD//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/86PU50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXhjnn/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/+GHL/////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////4+Pj/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9wcHL///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////4Ycv//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/XhjnnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA44Un+/+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/cp3T///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////2JiZP9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/9fX + 2P////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////9yndP//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/44Un+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGIIP//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/6jR3/7dnG//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////6ysrf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/15eYP/q6ur/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9gYGL///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////t2cb/+o0d//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//GIIP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7jh3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/8Igh//nz7f////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////b29v9cXF7/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf+mpqb//////21tb/9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/5mZmv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////+fPt//CIIf//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/7jh3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPkFWZ/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/9+HMv////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////+Pj4//V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9kZGb/////////////////WFha/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9ZWVv///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////fhzL//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/8+QVZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1Ig+3/+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/an2b///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////WFha/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/4+Pj/////////////////4WFh/9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/3Fxc/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////2p9m//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/UiD7fAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN+FLvf/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/8jh7/4buW//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////c3N0/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/f3+A////////////////////////////W1td/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9YWFr/3d3d//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+G7 + lv/8jh7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/34Uu9wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqhiL9/5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/94se//Ll2P////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////39/f/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/WVlb/////////////////////////////////5KSk/9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/2pqbP////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///y5dj/94se//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+qGIv0AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////6f// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////15eYP9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/8DAwf//////////////////////////////////////YWFj/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/tra2//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////pAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + //f///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////5OTk/9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/2JiZP///////////////////////////////////////////729 + vf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/11dX/////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////9wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /x7///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////9aWlz/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf/Pz8////////////////////////////////////////// + ////////bW1v/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/mJiZ//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////8eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///9O//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////98fH7/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9paWv///////////////////////////////////////// + //////////////v7+/9YWFn/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1hY + Wv////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////dv////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////y8vL/WFha/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9YWFr/9vb2//////////////////////////////////// + ////////////////////////kpKT/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/c3N1//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////3YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///5n///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////bGxt/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/f3+A//////////////////////////////////// + //////////////////////////////////9dXV//V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf/Ly8z///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////+ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///+1//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////1dXV/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/Wlpc//////////////////////////////////// + ////////////////////////////////////////vb29/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/YmJk//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA////yf////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////1xcXv9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/8nJyf////////////////////////////// + //////////////////////////////////////////////v7+/9oaGn/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/pKSl//////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////8kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///9v///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////52dnf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/2RkZf////////////////////////////// + ////////////////////////////////////////////////////////y8vM/1hYWv9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/319fv////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////n//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////9YWFr/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf/f39////////////////////////// + //////////////////////////////////////////////////////////////////9vb3H/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9ra23///////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////7/////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////90dHX/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf94eHn///////////////////////// + /////////////////////////////////////////////////////////////////////////////1hY + Wv9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/YWFj//// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////f///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////Gxsb/WFha/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9ZWVv/4+Pj//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //+ampv/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1xc + Xv////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////3AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////7//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////ZGRm/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/jo6P//////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////15eYP9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9ZWVv///////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////+wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////f////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////rq6u/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/XFxe//////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////U1NT/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/WFhZ//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////0AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////11d + Xv9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/7OztP////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////2trbf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////52d + nv9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/2RkZf////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////U1NT/WFhZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9YWFr/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////4GBgv9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf+QkJL///////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////s7O3/W1td/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9jY2X///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////5WVlv9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/xMTE//// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////Xl5g/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////87O + z/9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////cXFz/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/////f////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9YWFr/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/WFhZ//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////v///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////mJiZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1lZW/////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////3//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////f39/9cXF7/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9cXF7///////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////7/////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////paWm/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/YWFj//// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///+f///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf////////////////////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////9iYmT/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/2tr + bf////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////nAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////b//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ//////////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////0dHS/1hYWv9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf99fX7///////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////2wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////yf////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////9vb3H/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/lJSV//////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////8kAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///7X///////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////1pa + XP9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/8HBwv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////+1AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///+Z//////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////////////////////// + /////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////mQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////dv// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////// + /////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /3YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + /07///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////// + //////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////9OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8e//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////// + //////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////HgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP////f///////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////// + ////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD////p//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//// + ////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA6oYi/f+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//eL + Hv/y5dj///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n//////////////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////8uXY//eLHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/qhiL9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN+FLvf/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/8jh7/4buW//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/////////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////+G7lv/8jh7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/34Uu9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUiD7f/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/9qfZv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n//////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////an2b//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/9SIPt8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz5BVmf+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/fhzL///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////34cy//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/PkFWZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7jh3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/8Igh//nz7f////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/////////////////V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////+fPt//CIIf//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/7jh3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8Ygg//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//qNHf/t2cb///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf//////V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////+3Zxv/6jR3//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/8Ygg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOOFJ/v/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/3Kd0//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////cp3T//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+OFJ/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXhjnn/5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+GHL/////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////4Ycv//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/XhjnnAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzo9Tnf+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/ziSD///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////OJ + IP//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/zo9TnQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD5jB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//o8e/+PAnv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+PA + nv/+jx7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+Ywe/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA64Yi//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/cjkL///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///cjkL//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+uGIv8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANqFMvH/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/7Ycg//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////7Ycg//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/ahTLxAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADPjU6z/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//2P + Hv/jwJ////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////48Cf//2PHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/z41OswAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPiLHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/25BG//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////9uQRv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+Ise/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADnhST9/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/++IIf/48ev///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////jx6//viCH//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+eF + JP0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA14Y55/+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/9jx7/4buW//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////hu5b//Y8e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/XhjnnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyRWXj9jx7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/9+JNv////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////34k2//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/9jx7/zJFZeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA74gh//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/1ih7/9erg//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////9erg//WKHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/74gh/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANuFMPP/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/9qcYP////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////9qcYP//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/9uFMPMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOjlGl/o8e//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/shyL///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////shyL//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//6PHv/OjlGlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGJ + If//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//o8e/96xhf////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////esYX//o8e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/xiSH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADchTD1/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/lhyr///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////5Ycq//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/3IUw9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAzo9Tn/2PHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//I4e/+PA + n/////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////48Cf//yOHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//Y8e/86PU58AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADthyD//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/fhzL///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////9+HMv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/+2HIP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2IY37f+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/+o0d/+bJrv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////+bJrv/6jR3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/YhjftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2UXmL6jR3//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/fiTb///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////fiTb//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/zZReYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5YUm/f+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/+o0d/+XFp/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////lxaf/+o0d//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/5YUm/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANGJRcv/kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/ihy3///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////4oct//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/9GJRcsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8Ikh//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//I4e/+C2j/////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////4LaP//yOHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//CJIf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANiGNu3/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/ohiX/+fPt//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////+fPt/+iGJf//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/YhjbtAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNlmNI94se//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/9qha/////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////9qha///kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/3ix7/zZZjSAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6E + LPn/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/ziR//8ePV//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////Hj1f/ziR///5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/3oQs+QAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADNkFWR+o0d//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/92M + Pv////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////djD7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+o0d/82QVZEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOOFJ/v/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/7jh3/48Ce//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////jwJ7/+44d//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+OFJ/sAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADPjU+x/I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/+yHIv/27eT///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////27eT/7Ici//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yOHv/PjU+xAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOaFJf3/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/25FJ//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////25FJ//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/mhSX9AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPjEy5/I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//uOHf/gto////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////4LaP//uO + Hf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/8jh7/z4xMuQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOWFJv3/kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/7Ygh//r18f////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////+vXx/+2I + If//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/5YUm/QAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPjU+x+40d//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/dijj///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////92K + OP//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+40d/8+N + T7EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOOFKfv/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//Y8e/9qeZP////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////9qe + ZP/9jx7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+OF + KfsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNkFWR+Ywe//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/3ix7/5sir//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+bI + q//3ix7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//mM + Hv/NkFWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANyF + MPX/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+2I + If/16uD///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////Xq + 4P/tiCH//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/chTD1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADLlGFE84kf//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/44gu//36+P////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////36 + +P/jiC7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/ziR//y5RhRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANaHOuX/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/ajkP///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////1dXWf9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///ajkP//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/1oc65QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA6oYi/f+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//I4e/9qeY/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////9XV1n/V1dZ/1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///anmP//I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/6oYi/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+MTLn6jR3//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/3rGF//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////1dX + Wf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///esYX/+o0d//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/+o0d/8+MTLkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3oUv9/+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//iLHv/lxaf///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///lxaf/+Ise//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae/96FL/cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyXZDbwhyD//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/9Ysf/+vTvv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////1dXWf9XV1n/V1dZ/1dXWf9XV1n/V1dZ/1dXWf9XV1n///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///r077/9Ysf//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//CHIP/Ml2Q2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0olC0/yOHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/ziR//7NbC//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///s1sL/84kf//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//yOHv/SiULTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADghCr5/5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//GI + IP/p0Ln///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///p0Ln/8Ygg//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/ghCr5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZZjSPCH + IP//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/8Ygg/+vTvv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///r077/8Ygg//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/whyD/zZZjSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADSikXN+40d//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/ziSD/7NbB//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///s1sH/84kg//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/7jR3/0opFzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANyFMPX/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//WLH//myKv///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///myKv/9Ysf//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/3IUw9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA6oYi/f+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+Iwe/96vg/////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///er4P/+Iwe//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/6oYi/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAM6PU531ix///5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/2p1h//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///anWH/+o0d//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/9Ysf/86PU50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1Ic+3fyOHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yOHv/bjUL//v37//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////79 + +//bjUL//I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//I4e/9SHPt0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdhS/1/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//o8e/+OH + Lf/27eT///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////bt + 5P/jhy3//o8e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/92FL/UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOaEJP3/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/7Ygi/+TDpP////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+TD + pP/tiCL//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/+aEJP0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMk1xq74cg//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/3ih7/2p5j//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////9qe + Y//3ih7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/++HIP/Mk1xqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+M + Tbf2ih7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//2PHv/eijf/9erg//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////9erg/96K + N//9jx7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//aKHv/PjE23AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA04hA2/qNHf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae/+yHIv/gto////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////4LaP/+yH + Iv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//qNHf/TiEDbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADYhjbt/Y8e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+44d/9uQSP/48ev///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////48ev/25BI//uO + Hf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//2PHv/YhjbtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN2FL/X/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/7Ici/+K8 + mf////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////ivJn/7Ici//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/dhS/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4oQo+f+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/7jh3/3Yw+//Hj1f////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////Hj1f/djD7/+44d//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/ihy7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADlhSb7/5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/ziR//26Bn//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////9ugZ//ziR///5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/mhyn//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzJhoKOeFJP3/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//6PHv/ohiX/37SL//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////37SL/+iGJf/+jx7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/nhyf/9+/n//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLlGFE6YYj/f+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yOHv/jiC7/5MOk//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////kw6T/44gu//yOHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/phyX/8ePV////////////AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyV + YVLqhiL9/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//qNHf/fiTb/5smu//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////+bJrv/fiTb/+o0d//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/qhiL9zJVhUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAzJVhUumGI/3/kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//qN + Hf/giDL/476b//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////476b/+CIMv/6jR3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/phiP9zJVhUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADLlGFE54Uk/f+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//uOHf/lhyr/3q+D//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////er4P/5Ycq//uOHf//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/nhST9y5RhRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyYaCjlhSb7/5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//6PHv/thyL/2pxg//Pm2v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////8+ba/9qcYP/thyL//o8e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/lhSb7zJhoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOKEKPn/kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/1ix//34k2/+C2j//7+PT///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////v49P/gto//34k2//WLH///kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/ihCj5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3YUv9f2PHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/8jh7/74gh/9uQ + Rv/jvpv///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////476b/9uQRv/viCH//I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//2PHv/dhS/1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYhjbt+o0d//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//Y8e/+2HIP/cjkL/48Ce//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+PA + nv/cjkL/7Ycg//2PHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//qNHf/YhjbtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANOI + QNv2ih7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//6PHv/ziSD/4Ycw/9yndP/s1sH/+fPt//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////+fPt/+zWwf/cp3T/4Ycw//OJ + IP/+jx7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//aKHv/TiEDbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAz4xNt++HIP//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+o0d/++IIf/fhzL/2p9m/+G7 + lv/x49X///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////8ePV/+G7lv/an2b/34cy/++IIf/6jR3//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/++HIP/PjE23AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADMk1xq5oQk/f+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/8jh7/94oe//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////eKHv/8jh7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae/+aEJP3Mk1xqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdhS/1/I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//I4e/92FL/UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANSHPt31ix///5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/9Ysf/9SHPt0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzo9TneqGIv3/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7/6oYi/c6PU50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3IUw9fuN + Hf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/7jR3/3IUw9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADSikXN8Icg//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv/whyD/0opFzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAM2WY0jghCr5/I4e//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//yOHv/ghCr5zZZjSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANKJQtPwhyD//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//CHIP/SiULTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzJdkNt6FL/f6jR3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/+o0d/96FL/fMl2Q2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz4xMueqGIv3/kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7/6oYi/c+MTLkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1oc65fOJ + H///kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/ziR//1oc65QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADLlGFE3IUw9fmMHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//mM + Hv/chTD1y5RhRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADNkFWR44Up+/uNHf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+40d/+OF + KfvNkFWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPjU+x5YUm/fyOHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/8jh7/5YUm/c+N + T7EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPjEy55oUl/fyOHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//yOHv/mhSX9z4xMuQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPjU+x44Un+/qN + Hf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+o0d/+OFJ/vPjU+xAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADNkFWR3oQs+feLHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/3ix7/3oQs+c2QVZEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADNlmNI2IY27fCJIf//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//CJIf/YhjbtzZZjSAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0YlFy+WFJv36jR3//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv/6jR3/5YUm/dGJRcsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzZReYtiGN+3thyD//Y8e//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//Y8e/+2HIP/YhjftzZReYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM6P + U5/chTD18Ykh//6PHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//6PHv/xiSH/3IUw9c6PU58AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADOjlGl24Uw8++IIf/9jx7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+Q + Hv/9jx7/74gh/9uFMPPOjlGlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzJFZeNeGOefnhST9+Ise//+QHv//kB7//5Ae//+Q + Hv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+Ise/+eF + JP3XhjnnzJFZeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPjU6z2oUy8euG + Iv/5jB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////5Ae//+QHv//kB7//5Ae//+QHv//kB7//5Ae//+QHv//kB7/+Ywe/+uGIv/ahTLxz41OswAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAM6PU53Xhjnn44Un+/GIIP/7jh3//5Ae//+QHv//kB7//5Ae//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////+QHv//kB7//5Ae//+QHv/7jh3/8Ygg/+OFJ/vXhjnnzo9TnQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+QVZnUiD7f34Uu9+qGIv3////p////9/// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////9////+nqhiL934Uu99SIPt/PkFWZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8e////Tv///3b///+Z////tf///8n////b////5////+/////3////+/////3///////////// + //////////////////////////////////3////7////9////+/////n////2////8n///+1////mf// + /3b///9O////HgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////+AAAAf////////////////////////////////////AAAAAAAP///////////////////////// + ////////+AAAAAAAAB////////////////////////////////+AAAAAAAAAAf////////////////// + /////////////AAAAAAAAAAAP//////////////////////////////AAAAAAAAAAAAD//////////// + /////////////////gAAAAAAAAAAAAB////////////////////////////4AAAAAAAAAAAAAB////// + /////////////////////8AAAAAAAAAAAAAAA///////////////////////////AAAAAAAAAAAAAAAA + //////////////////////////gAAAAAAAAAAAAAAAAf////////////////////////4AAAAAAAAAAA + AAAAAAf///////////////////////+AAAAAAAAAAAAAAAAAAf///////////////////////gAAAAAA + AAAAAAAAAAAAf//////////////////////4AAAAAAAAAAAAAAAAAAAf//////////////////////AA + AAAAAAAAAAAAAAAAAA//////////////////////wAAAAAAAAAAAAAAAAAAAA/////////////////// + //8AAAAAAAAAAAAAAAAAAAAA/////////////////////gAAAAAAAAAAAAAAAAAAAAB///////////// + ///////4AAAAAAAAAAAAAAAAAAAAAB////////////////////AAAAAAAAAAAAAAAAAAAAAAD/////// + ////////////wAAAAAAAAAAAAAAAAAAAAAAD//////////////////+AAAAAAAAAAAAAAAAAAAAAAAH/ + /////////////////gAAAAAAAAAAAAAAAAAAAAAAAH/////////////////8AAAAAAAAAAAAAAAAAAAA + AAAAP/////////////////gAAAAAAAAAAAAAAAAAAAAAAAAf////////////////8AAAAAAAAAAAAAAA + AAAAAAAAAA/////////////////AAAAAAAAAAAAAAAAAAAAAAAAAA////////////////4AAAAAAAAAA + AAAAAAAAAAAAAAAB////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////4AAAAA + AAAAAAAAAAAAAAAAAAAAAH///////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////4 + AAAAAAAAAAAAAAAAAAAAAAAAAAAf//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA////////// + ////4AAAAAAAAAAAAAAAAAAAAAAAAAAAB//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAD//// + /////////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAH/////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AP////////////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAf////////////AAAAAAAAAAAAAAAAAAAAAAA + AAAAAAA////////////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////////////AAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAD///////////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///////////AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAP//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////gAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAB//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////gAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////// + //wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB// + ///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAP////////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf////////AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAA////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////gAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAH///////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAA///////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///////4AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAH///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////4AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////// + 8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP + /////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAB//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAP/////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf////+AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/////AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////gAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH////4AAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////8 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + H///+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAB////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAD///4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///gAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAf//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///wAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//8AAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//+A + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + Af//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4A + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4A + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAB//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8A + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAD//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///AAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//+AAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///g + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + D///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///+AAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAf///4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB////gAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAH////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////8AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf////gAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH////8AAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///// + gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB + /////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAA//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAf/////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//////wAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAP//////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////+AAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAH//////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//////wAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAD///////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//////+AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////// + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/ + ///////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAD////////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf////////wAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAD/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////+AAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAB/////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////wAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAA//////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//////////AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA//////////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//////////8AA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////// + ///gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/// + ////////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAA + AD////////////4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////wAAAAAAAAAAAAAAAAAAAAAA + AAAAAAA/////////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////AAAAAAAAAAAAAAAAA + AAAAAAAAAAAD/////////////+AAAAAAAAAAAAAAAAAAAAAAAAAAAAf/////////////8AAAAAAAAAAA + AAAAAAAAAAAAAAAAD//////////////4AAAAAAAAAAAAAAAAAAAAAAAAAAAf//////////////wAAAAA + AAAAAAAAAAAAAAAAAAAAAD///////////////gAAAAAAAAAAAAAAAAAAAAAAAAAAf/////////////// + AAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////+AAAAAAAAAAAAAAAAAAAAAAAAAAf////////// + /////8AAAAAAAAAAAAAAAAAAAAAAAAAD////////////////8AAAAAAAAAAAAAAAAAAAAAAAAA////// + ///////////4AAAAAAAAAAAAAAAAAAAAAAAAH/////////////////wAAAAAAAAAAAAAAAAAAAAAAAA/ + /////////////////gAAAAAAAAAAAAAAAAAAAAAAAH//////////////////gAAAAAAAAAAAAAAAAAAA + AAAB///////////////////AAAAAAAAAAAAAAAAAAAAAAAP///////////////////AAAAAAAAAAAAAA + AAAAAAAAD///////////////////+AAAAAAAAAAAAAAAAAAAAAAf///////////////////+AAAAAAAA + AAAAAAAAAAAAAH////////////////////8AAAAAAAAAAAAAAAAAAAAA/////////////////////8AA + AAAAAAAAAAAAAAAAAAP/////////////////////8AAAAAAAAAAAAAAAAAAAD/////////////////// + ///4AAAAAAAAAAAAAAAAAAAf//////////////////////4AAAAAAAAAAAAAAAAAAH////////////// + /////////4AAAAAAAAAAAAAAAAAB////////////////////////4AAAAAAAAAAAAAAAAAf///////// + ///////////////4AAAAAAAAAAAAAAAAH/////////////////////////8AAAAAAAAAAAAAAAD///// + /////////////////////8AAAAAAAAAAAAAAA///////////////////////////+AAAAAAAAAAAAAAf + ///////////////////////////+AAAAAAAAAAAAAH/////////////////////////////AAAAAAAAA + AAAD//////////////////////////////wAAAAAAAAAAD///////////////////////////////4AA + AAAAAAAB////////////////////////////////+AAAAAAAAB////////////////////////////// + ////wAAAAAAD////////////////////////////////////4AAAB/////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////8= + + + \ No newline at end of file diff --git a/Host/MessageShowForm.Designer.cs b/Host/MessageShowForm.Designer.cs new file mode 100644 index 0000000..2233291 --- /dev/null +++ b/Host/MessageShowForm.Designer.cs @@ -0,0 +1,106 @@ +namespace CRVM +{ + partial class MessageShowForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.btn_OK = new System.Windows.Forms.Button(); + this.label_title = new System.Windows.Forms.Label(); + this.richTextBox_msg = new System.Windows.Forms.RichTextBox(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.btn_OK); + this.panel1.Controls.Add(this.label_title); + this.panel1.Controls.Add(this.richTextBox_msg); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(384, 262); + this.panel1.TabIndex = 0; + // + // btn_OK + // + this.btn_OK.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_OK.Font = new System.Drawing.Font("微软雅黑", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_OK.Location = new System.Drawing.Point(152, 218); + this.btn_OK.Name = "btn_OK"; + this.btn_OK.Size = new System.Drawing.Size(80, 32); + this.btn_OK.TabIndex = 3; + this.btn_OK.Text = "确定"; + this.btn_OK.UseVisualStyleBackColor = true; + this.btn_OK.Click += new System.EventHandler(this.btn_OK_Click); + // + // label_title + // + this.label_title.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_title.Location = new System.Drawing.Point(146, 9); + this.label_title.Name = "label_title"; + this.label_title.Size = new System.Drawing.Size(100, 29); + this.label_title.TabIndex = 1; + this.label_title.Text = "label1"; + this.label_title.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // richTextBox_msg + // + this.richTextBox_msg.Font = new System.Drawing.Font("微软雅黑", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.richTextBox_msg.Location = new System.Drawing.Point(12, 51); + this.richTextBox_msg.Name = "richTextBox_msg"; + this.richTextBox_msg.ReadOnly = true; + this.richTextBox_msg.Size = new System.Drawing.Size(360, 146); + this.richTextBox_msg.TabIndex = 0; + this.richTextBox_msg.Text = ""; + // + // MessageShowForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(384, 262); + this.Controls.Add(this.panel1); + this.MaximizeBox = false; + this.MaximumSize = new System.Drawing.Size(400, 300); + this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(400, 300); + this.Name = "MessageShowForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Load += new System.EventHandler(this.MessageShowForm_Load); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.RichTextBox richTextBox_msg; + private System.Windows.Forms.Label label_title; + private System.Windows.Forms.Button btn_OK; + } +} \ No newline at end of file diff --git a/Host/MessageShowForm.cs b/Host/MessageShowForm.cs new file mode 100644 index 0000000..cd22b6c --- /dev/null +++ b/Host/MessageShowForm.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace CRVM +{ + public partial class MessageShowForm : Form + { + string title = ""; + string msg = ""; + public MessageShowForm() + { + InitializeComponent(); + } + + public MessageShowForm(string title,string msg) + { + this.title = title; + this.msg = msg; + InitializeComponent(); + } + + private void btn_OK_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void btn_Close_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void MessageShowForm_Load(object sender, EventArgs e) + { + Initial(); + } + + private void Initial() + { + if (title == "警告") + { + label_title.BackColor = System.Drawing.Color.Red; + } + label_title.Text = title; + richTextBox_msg.Text = msg; + } + } +} diff --git a/Host/MessageShowForm.resx b/Host/MessageShowForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Host/MessageShowForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Host/OnlineRollForm.Designer.cs b/Host/OnlineRollForm.Designer.cs new file mode 100644 index 0000000..48f50e4 --- /dev/null +++ b/Host/OnlineRollForm.Designer.cs @@ -0,0 +1,894 @@ +namespace CRVM +{ + partial class OnlineRollForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label_alarm = new System.Windows.Forms.Label(); + this.label_title = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.dia_29 = new System.Windows.Forms.TextBox(); + this.dia_27 = new System.Windows.Forms.TextBox(); + this.dia_25 = new System.Windows.Forms.TextBox(); + this.dia_24 = new System.Windows.Forms.TextBox(); + this.dia_26 = new System.Windows.Forms.TextBox(); + this.dia_28 = new System.Windows.Forms.TextBox(); + this.dia_23 = new System.Windows.Forms.TextBox(); + this.dia_21 = new System.Windows.Forms.TextBox(); + this.dia_19 = new System.Windows.Forms.TextBox(); + this.dia_18 = new System.Windows.Forms.TextBox(); + this.dia_20 = new System.Windows.Forms.TextBox(); + this.dia_22 = new System.Windows.Forms.TextBox(); + this.dia_17 = new System.Windows.Forms.TextBox(); + this.dia_15 = new System.Windows.Forms.TextBox(); + this.dia_13 = new System.Windows.Forms.TextBox(); + this.dia_12 = new System.Windows.Forms.TextBox(); + this.dia_14 = new System.Windows.Forms.TextBox(); + this.dia_16 = new System.Windows.Forms.TextBox(); + this.dia_11 = new System.Windows.Forms.TextBox(); + this.dia_9 = new System.Windows.Forms.TextBox(); + this.dia_7 = new System.Windows.Forms.TextBox(); + this.dia_6 = new System.Windows.Forms.TextBox(); + this.dia_8 = new System.Windows.Forms.TextBox(); + this.dia_10 = new System.Windows.Forms.TextBox(); + this.dia_5 = new System.Windows.Forms.TextBox(); + this.dia_3 = new System.Windows.Forms.TextBox(); + this.dia_1 = new System.Windows.Forms.TextBox(); + this.dia_0 = new System.Windows.Forms.TextBox(); + this.dia_2 = new System.Windows.Forms.TextBox(); + this.dia_4 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.stand5 = new Baosight.ColdRolling.TcmControls.Stand(); + this.stand4 = new Baosight.ColdRolling.TcmControls.Stand(); + this.stand3 = new Baosight.ColdRolling.TcmControls.Stand(); + this.stand2 = new Baosight.ColdRolling.TcmControls.Stand(); + this.stand1 = new Baosight.ColdRolling.TcmControls.Stand(); + this.backgroundWorker = new System.ComponentModel.BackgroundWorker(); + this.label11 = new System.Windows.Forms.Label(); + this.dia_35 = new System.Windows.Forms.TextBox(); + this.dia_33 = new System.Windows.Forms.TextBox(); + this.dia_31 = new System.Windows.Forms.TextBox(); + this.dia_30 = new System.Windows.Forms.TextBox(); + this.dia_32 = new System.Windows.Forms.TextBox(); + this.dia_34 = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.stand6 = new Baosight.ColdRolling.TcmControls.Stand(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1216, 518); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel2 + // + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel2.Controls.Add(this.label11); + this.panel2.Controls.Add(this.dia_35); + this.panel2.Controls.Add(this.dia_33); + this.panel2.Controls.Add(this.dia_31); + this.panel2.Controls.Add(this.dia_30); + this.panel2.Controls.Add(this.dia_32); + this.panel2.Controls.Add(this.dia_34); + this.panel2.Controls.Add(this.label12); + this.panel2.Controls.Add(this.stand6); + this.panel2.Controls.Add(this.label_alarm); + this.panel2.Controls.Add(this.label_title); + this.panel2.Controls.Add(this.label10); + this.panel2.Controls.Add(this.label9); + this.panel2.Controls.Add(this.label8); + this.panel2.Controls.Add(this.label7); + this.panel2.Controls.Add(this.label6); + this.panel2.Controls.Add(this.dia_29); + this.panel2.Controls.Add(this.dia_27); + this.panel2.Controls.Add(this.dia_25); + this.panel2.Controls.Add(this.dia_24); + this.panel2.Controls.Add(this.dia_26); + this.panel2.Controls.Add(this.dia_28); + this.panel2.Controls.Add(this.dia_23); + this.panel2.Controls.Add(this.dia_21); + this.panel2.Controls.Add(this.dia_19); + this.panel2.Controls.Add(this.dia_18); + this.panel2.Controls.Add(this.dia_20); + this.panel2.Controls.Add(this.dia_22); + this.panel2.Controls.Add(this.dia_17); + this.panel2.Controls.Add(this.dia_15); + this.panel2.Controls.Add(this.dia_13); + this.panel2.Controls.Add(this.dia_12); + this.panel2.Controls.Add(this.dia_14); + this.panel2.Controls.Add(this.dia_16); + this.panel2.Controls.Add(this.dia_11); + this.panel2.Controls.Add(this.dia_9); + this.panel2.Controls.Add(this.dia_7); + this.panel2.Controls.Add(this.dia_6); + this.panel2.Controls.Add(this.dia_8); + this.panel2.Controls.Add(this.dia_10); + this.panel2.Controls.Add(this.dia_5); + this.panel2.Controls.Add(this.dia_3); + this.panel2.Controls.Add(this.dia_1); + this.panel2.Controls.Add(this.dia_0); + this.panel2.Controls.Add(this.dia_2); + this.panel2.Controls.Add(this.dia_4); + this.panel2.Controls.Add(this.label5); + this.panel2.Controls.Add(this.label4); + this.panel2.Controls.Add(this.label3); + this.panel2.Controls.Add(this.label2); + this.panel2.Controls.Add(this.label1); + this.panel2.Controls.Add(this.stand5); + this.panel2.Controls.Add(this.stand4); + this.panel2.Controls.Add(this.stand3); + this.panel2.Controls.Add(this.stand2); + this.panel2.Controls.Add(this.stand1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(3, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1210, 512); + this.panel2.TabIndex = 1; + // + // label_alarm + // + this.label_alarm.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_alarm.ForeColor = System.Drawing.Color.Red; + this.label_alarm.Location = new System.Drawing.Point(474, 68); + this.label_alarm.Name = "label_alarm"; + this.label_alarm.Size = new System.Drawing.Size(228, 23); + this.label_alarm.TabIndex = 46; + this.label_alarm.Text = "无法获取L2在线轧辊数据!"; + this.label_alarm.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label_alarm.Visible = false; + // + // label_title + // + this.label_title.Font = new System.Drawing.Font("微软雅黑", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_title.Location = new System.Drawing.Point(378, 5); + this.label_title.Name = "label_title"; + this.label_title.Size = new System.Drawing.Size(419, 63); + this.label_title.TabIndex = 45; + this.label_title.Text = "在线轧辊画面"; + this.label_title.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label10 + // + this.label10.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label10.Location = new System.Drawing.Point(841, 111); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(35, 14); + this.label10.TabIndex = 44; + this.label10.Text = "辊径 "; + // + // label9 + // + this.label9.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label9.Location = new System.Drawing.Point(659, 111); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(35, 14); + this.label9.TabIndex = 43; + this.label9.Text = "辊径 "; + // + // label8 + // + this.label8.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label8.Location = new System.Drawing.Point(470, 111); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(35, 14); + this.label8.TabIndex = 42; + this.label8.Text = "辊径 "; + // + // label7 + // + this.label7.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.Location = new System.Drawing.Point(285, 111); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(35, 14); + this.label7.TabIndex = 41; + this.label7.Text = "辊径 "; + // + // label6 + // + this.label6.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(96, 111); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(35, 14); + this.label6.TabIndex = 40; + this.label6.Text = "辊径 "; + // + // dia_29 + // + this.dia_29.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_29.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_29.Location = new System.Drawing.Point(803, 357); + this.dia_29.Name = "dia_29"; + this.dia_29.ReadOnly = true; + this.dia_29.Size = new System.Drawing.Size(103, 23); + this.dia_29.TabIndex = 39; + this.dia_29.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_27 + // + this.dia_27.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_27.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_27.Location = new System.Drawing.Point(803, 304); + this.dia_27.Name = "dia_27"; + this.dia_27.ReadOnly = true; + this.dia_27.Size = new System.Drawing.Size(103, 23); + this.dia_27.TabIndex = 38; + this.dia_27.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_25 + // + this.dia_25.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_25.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_25.Location = new System.Drawing.Point(803, 269); + this.dia_25.Name = "dia_25"; + this.dia_25.ReadOnly = true; + this.dia_25.Size = new System.Drawing.Size(103, 23); + this.dia_25.TabIndex = 37; + this.dia_25.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_24 + // + this.dia_24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_24.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_24.Location = new System.Drawing.Point(803, 242); + this.dia_24.Name = "dia_24"; + this.dia_24.ReadOnly = true; + this.dia_24.Size = new System.Drawing.Size(103, 23); + this.dia_24.TabIndex = 36; + this.dia_24.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_26 + // + this.dia_26.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_26.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_26.Location = new System.Drawing.Point(803, 200); + this.dia_26.Name = "dia_26"; + this.dia_26.ReadOnly = true; + this.dia_26.Size = new System.Drawing.Size(103, 23); + this.dia_26.TabIndex = 35; + this.dia_26.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_28 + // + this.dia_28.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_28.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_28.Location = new System.Drawing.Point(803, 153); + this.dia_28.Name = "dia_28"; + this.dia_28.ReadOnly = true; + this.dia_28.Size = new System.Drawing.Size(103, 23); + this.dia_28.TabIndex = 34; + this.dia_28.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_23 + // + this.dia_23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_23.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_23.Location = new System.Drawing.Point(624, 357); + this.dia_23.Name = "dia_23"; + this.dia_23.ReadOnly = true; + this.dia_23.Size = new System.Drawing.Size(103, 23); + this.dia_23.TabIndex = 33; + this.dia_23.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_21 + // + this.dia_21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_21.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_21.Location = new System.Drawing.Point(624, 304); + this.dia_21.Name = "dia_21"; + this.dia_21.ReadOnly = true; + this.dia_21.Size = new System.Drawing.Size(103, 23); + this.dia_21.TabIndex = 32; + this.dia_21.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_19 + // + this.dia_19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_19.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_19.Location = new System.Drawing.Point(624, 269); + this.dia_19.Name = "dia_19"; + this.dia_19.ReadOnly = true; + this.dia_19.Size = new System.Drawing.Size(103, 23); + this.dia_19.TabIndex = 31; + this.dia_19.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_18 + // + this.dia_18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_18.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_18.Location = new System.Drawing.Point(624, 242); + this.dia_18.Name = "dia_18"; + this.dia_18.ReadOnly = true; + this.dia_18.Size = new System.Drawing.Size(103, 23); + this.dia_18.TabIndex = 30; + this.dia_18.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_20 + // + this.dia_20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_20.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_20.Location = new System.Drawing.Point(624, 200); + this.dia_20.Name = "dia_20"; + this.dia_20.ReadOnly = true; + this.dia_20.Size = new System.Drawing.Size(103, 23); + this.dia_20.TabIndex = 29; + this.dia_20.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_22 + // + this.dia_22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_22.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_22.Location = new System.Drawing.Point(624, 153); + this.dia_22.Name = "dia_22"; + this.dia_22.ReadOnly = true; + this.dia_22.Size = new System.Drawing.Size(103, 23); + this.dia_22.TabIndex = 28; + this.dia_22.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_17 + // + this.dia_17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_17.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_17.Location = new System.Drawing.Point(439, 357); + this.dia_17.Name = "dia_17"; + this.dia_17.ReadOnly = true; + this.dia_17.Size = new System.Drawing.Size(103, 23); + this.dia_17.TabIndex = 27; + this.dia_17.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_15 + // + this.dia_15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_15.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_15.Location = new System.Drawing.Point(439, 304); + this.dia_15.Name = "dia_15"; + this.dia_15.ReadOnly = true; + this.dia_15.Size = new System.Drawing.Size(103, 23); + this.dia_15.TabIndex = 26; + this.dia_15.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_13 + // + this.dia_13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_13.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_13.Location = new System.Drawing.Point(439, 269); + this.dia_13.Name = "dia_13"; + this.dia_13.ReadOnly = true; + this.dia_13.Size = new System.Drawing.Size(103, 23); + this.dia_13.TabIndex = 25; + this.dia_13.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_12 + // + this.dia_12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_12.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_12.Location = new System.Drawing.Point(439, 242); + this.dia_12.Name = "dia_12"; + this.dia_12.ReadOnly = true; + this.dia_12.Size = new System.Drawing.Size(103, 23); + this.dia_12.TabIndex = 24; + this.dia_12.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_14 + // + this.dia_14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_14.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_14.Location = new System.Drawing.Point(439, 200); + this.dia_14.Name = "dia_14"; + this.dia_14.ReadOnly = true; + this.dia_14.Size = new System.Drawing.Size(103, 23); + this.dia_14.TabIndex = 23; + this.dia_14.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_16 + // + this.dia_16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_16.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_16.Location = new System.Drawing.Point(439, 153); + this.dia_16.Name = "dia_16"; + this.dia_16.ReadOnly = true; + this.dia_16.Size = new System.Drawing.Size(103, 23); + this.dia_16.TabIndex = 22; + this.dia_16.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_11 + // + this.dia_11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_11.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_11.Location = new System.Drawing.Point(245, 357); + this.dia_11.Name = "dia_11"; + this.dia_11.ReadOnly = true; + this.dia_11.Size = new System.Drawing.Size(103, 23); + this.dia_11.TabIndex = 21; + this.dia_11.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_9 + // + this.dia_9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_9.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_9.Location = new System.Drawing.Point(245, 304); + this.dia_9.Name = "dia_9"; + this.dia_9.ReadOnly = true; + this.dia_9.Size = new System.Drawing.Size(103, 23); + this.dia_9.TabIndex = 20; + this.dia_9.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_7 + // + this.dia_7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_7.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_7.Location = new System.Drawing.Point(245, 269); + this.dia_7.Name = "dia_7"; + this.dia_7.ReadOnly = true; + this.dia_7.Size = new System.Drawing.Size(103, 23); + this.dia_7.TabIndex = 19; + this.dia_7.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_6 + // + this.dia_6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_6.Location = new System.Drawing.Point(245, 242); + this.dia_6.Name = "dia_6"; + this.dia_6.ReadOnly = true; + this.dia_6.Size = new System.Drawing.Size(103, 23); + this.dia_6.TabIndex = 18; + this.dia_6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_8 + // + this.dia_8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_8.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_8.Location = new System.Drawing.Point(245, 200); + this.dia_8.Name = "dia_8"; + this.dia_8.ReadOnly = true; + this.dia_8.Size = new System.Drawing.Size(103, 23); + this.dia_8.TabIndex = 17; + this.dia_8.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_10 + // + this.dia_10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_10.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_10.Location = new System.Drawing.Point(245, 153); + this.dia_10.Name = "dia_10"; + this.dia_10.ReadOnly = true; + this.dia_10.Size = new System.Drawing.Size(103, 23); + this.dia_10.TabIndex = 16; + this.dia_10.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_5 + // + this.dia_5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_5.Location = new System.Drawing.Point(59, 357); + this.dia_5.Name = "dia_5"; + this.dia_5.ReadOnly = true; + this.dia_5.Size = new System.Drawing.Size(103, 23); + this.dia_5.TabIndex = 15; + this.dia_5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_3 + // + this.dia_3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_3.Location = new System.Drawing.Point(59, 304); + this.dia_3.Name = "dia_3"; + this.dia_3.ReadOnly = true; + this.dia_3.Size = new System.Drawing.Size(103, 23); + this.dia_3.TabIndex = 14; + this.dia_3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_1 + // + this.dia_1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_1.Location = new System.Drawing.Point(59, 269); + this.dia_1.Name = "dia_1"; + this.dia_1.ReadOnly = true; + this.dia_1.Size = new System.Drawing.Size(103, 23); + this.dia_1.TabIndex = 13; + this.dia_1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_0 + // + this.dia_0.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_0.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_0.Location = new System.Drawing.Point(59, 242); + this.dia_0.Name = "dia_0"; + this.dia_0.ReadOnly = true; + this.dia_0.Size = new System.Drawing.Size(103, 23); + this.dia_0.TabIndex = 12; + this.dia_0.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_2 + // + this.dia_2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_2.Location = new System.Drawing.Point(59, 200); + this.dia_2.Name = "dia_2"; + this.dia_2.ReadOnly = true; + this.dia_2.Size = new System.Drawing.Size(103, 23); + this.dia_2.TabIndex = 11; + this.dia_2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_4 + // + this.dia_4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_4.Location = new System.Drawing.Point(59, 153); + this.dia_4.Name = "dia_4"; + this.dia_4.ReadOnly = true; + this.dia_4.Size = new System.Drawing.Size(103, 23); + this.dia_4.TabIndex = 10; + this.dia_4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(911, 425); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(61, 25); + this.label5.TabIndex = 9; + this.label5.Text = "5机架"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.Location = new System.Drawing.Point(736, 425); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(61, 25); + this.label4.TabIndex = 8; + this.label4.Text = "4机架"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(550, 425); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(61, 25); + this.label3.TabIndex = 7; + this.label3.Text = "3机架"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(354, 425); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(61, 25); + this.label2.TabIndex = 6; + this.label2.Text = "2机架"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(168, 425); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(61, 25); + this.label1.TabIndex = 5; + this.label1.Text = "1机架"; + // + // stand5 + // + this.stand5.AutoSetRollCount = false; + this.stand5.BoderColor = System.Drawing.Color.Black; + this.stand5.Cir1Precent = 45; + this.stand5.Cir2Precent = 35; + this.stand5.Cir3Precent = 20; + this.stand5.Cor1 = System.Drawing.Color.Black; + this.stand5.Cor2 = System.Drawing.Color.Blue; + this.stand5.Count = 3; + this.stand5.Location = new System.Drawing.Point(912, 134); + this.stand5.Name = "stand5"; + this.stand5.Rheight = 5; + this.stand5.Size = new System.Drawing.Size(68, 260); + this.stand5.TabIndex = 4; + this.stand5.Thickness = 1; + // + // stand4 + // + this.stand4.AutoSetRollCount = false; + this.stand4.BoderColor = System.Drawing.Color.Black; + this.stand4.Cir1Precent = 45; + this.stand4.Cir2Precent = 35; + this.stand4.Cir3Precent = 20; + this.stand4.Cor1 = System.Drawing.Color.Black; + this.stand4.Cor2 = System.Drawing.Color.Blue; + this.stand4.Count = 3; + this.stand4.Location = new System.Drawing.Point(733, 134); + this.stand4.Name = "stand4"; + this.stand4.Rheight = 5; + this.stand4.Size = new System.Drawing.Size(64, 260); + this.stand4.TabIndex = 3; + this.stand4.Thickness = 1; + // + // stand3 + // + this.stand3.AutoSetRollCount = false; + this.stand3.BoderColor = System.Drawing.Color.Black; + this.stand3.Cir1Precent = 45; + this.stand3.Cir2Precent = 35; + this.stand3.Cir3Precent = 20; + this.stand3.Cor1 = System.Drawing.Color.Black; + this.stand3.Cor2 = System.Drawing.Color.Blue; + this.stand3.Count = 3; + this.stand3.Location = new System.Drawing.Point(548, 134); + this.stand3.Name = "stand3"; + this.stand3.Rheight = 5; + this.stand3.Size = new System.Drawing.Size(65, 260); + this.stand3.TabIndex = 2; + this.stand3.Thickness = 1; + // + // stand2 + // + this.stand2.AutoSetRollCount = false; + this.stand2.BoderColor = System.Drawing.Color.Black; + this.stand2.Cir1Precent = 45; + this.stand2.Cir2Precent = 35; + this.stand2.Cir3Precent = 20; + this.stand2.Cor1 = System.Drawing.Color.Black; + this.stand2.Cor2 = System.Drawing.Color.Blue; + this.stand2.Count = 3; + this.stand2.Location = new System.Drawing.Point(356, 134); + this.stand2.Name = "stand2"; + this.stand2.Rheight = 5; + this.stand2.Size = new System.Drawing.Size(66, 260); + this.stand2.TabIndex = 1; + this.stand2.Thickness = 1; + // + // stand1 + // + this.stand1.AutoSetRollCount = false; + this.stand1.BoderColor = System.Drawing.Color.Black; + this.stand1.Cir1Precent = 45; + this.stand1.Cir2Precent = 35; + this.stand1.Cir3Precent = 20; + this.stand1.Cor1 = System.Drawing.Color.Black; + this.stand1.Cor2 = System.Drawing.Color.Blue; + this.stand1.Count = 3; + this.stand1.Location = new System.Drawing.Point(170, 134); + this.stand1.Name = "stand1"; + this.stand1.Rheight = 5; + this.stand1.Size = new System.Drawing.Size(69, 260); + this.stand1.TabIndex = 0; + this.stand1.Thickness = 1; + // + // backgroundWorker + // + this.backgroundWorker.WorkerReportsProgress = true; + this.backgroundWorker.WorkerSupportsCancellation = true; + // + // label11 + // + this.label11.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label11.Location = new System.Drawing.Point(1024, 111); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(35, 14); + this.label11.TabIndex = 55; + this.label11.Text = "辊径 "; + // + // dia_35 + // + this.dia_35.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_35.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_35.Location = new System.Drawing.Point(986, 357); + this.dia_35.Name = "dia_35"; + this.dia_35.ReadOnly = true; + this.dia_35.Size = new System.Drawing.Size(103, 23); + this.dia_35.TabIndex = 54; + this.dia_35.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_33 + // + this.dia_33.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_33.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_33.Location = new System.Drawing.Point(986, 304); + this.dia_33.Name = "dia_33"; + this.dia_33.ReadOnly = true; + this.dia_33.Size = new System.Drawing.Size(103, 23); + this.dia_33.TabIndex = 53; + this.dia_33.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_31 + // + this.dia_31.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_31.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_31.Location = new System.Drawing.Point(986, 269); + this.dia_31.Name = "dia_31"; + this.dia_31.ReadOnly = true; + this.dia_31.Size = new System.Drawing.Size(103, 23); + this.dia_31.TabIndex = 52; + this.dia_31.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_30 + // + this.dia_30.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_30.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_30.Location = new System.Drawing.Point(986, 242); + this.dia_30.Name = "dia_30"; + this.dia_30.ReadOnly = true; + this.dia_30.Size = new System.Drawing.Size(103, 23); + this.dia_30.TabIndex = 51; + this.dia_30.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_32 + // + this.dia_32.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_32.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_32.Location = new System.Drawing.Point(986, 200); + this.dia_32.Name = "dia_32"; + this.dia_32.ReadOnly = true; + this.dia_32.Size = new System.Drawing.Size(103, 23); + this.dia_32.TabIndex = 50; + this.dia_32.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_34 + // + this.dia_34.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_34.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_34.Location = new System.Drawing.Point(986, 153); + this.dia_34.Name = "dia_34"; + this.dia_34.ReadOnly = true; + this.dia_34.Size = new System.Drawing.Size(103, 23); + this.dia_34.TabIndex = 49; + this.dia_34.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.Location = new System.Drawing.Point(1094, 425); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(61, 25); + this.label12.TabIndex = 48; + this.label12.Text = "6机架"; + // + // stand6 + // + this.stand6.AutoSetRollCount = false; + this.stand6.BoderColor = System.Drawing.Color.Black; + this.stand6.Cir1Precent = 45; + this.stand6.Cir2Precent = 35; + this.stand6.Cir3Precent = 20; + this.stand6.Cor1 = System.Drawing.Color.Black; + this.stand6.Cor2 = System.Drawing.Color.Blue; + this.stand6.Count = 3; + this.stand6.Location = new System.Drawing.Point(1095, 134); + this.stand6.Name = "stand6"; + this.stand6.Rheight = 5; + this.stand6.Size = new System.Drawing.Size(68, 260); + this.stand6.TabIndex = 47; + this.stand6.Thickness = 1; + // + // OnlineRollForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1216, 518); + this.Controls.Add(this.tableLayoutPanel1); + this.MaximizeBox = false; + this.MaximumSize = new System.Drawing.Size(1299, 557); + this.MinimizeBox = false; + this.MinimumSize = new System.Drawing.Size(1099, 557); + this.Name = "OnlineRollForm"; + this.ShowIcon = false; + this.Load += new System.EventHandler(this.RollInfo_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel2; + private Baosight.ColdRolling.TcmControls.Stand stand1; + private Baosight.ColdRolling.TcmControls.Stand stand5; + private Baosight.ColdRolling.TcmControls.Stand stand4; + private Baosight.ColdRolling.TcmControls.Stand stand3; + private Baosight.ColdRolling.TcmControls.Stand stand2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox dia_4; + private System.Windows.Forms.TextBox dia_5; + private System.Windows.Forms.TextBox dia_3; + private System.Windows.Forms.TextBox dia_1; + private System.Windows.Forms.TextBox dia_0; + private System.Windows.Forms.TextBox dia_2; + private System.Windows.Forms.TextBox dia_29; + private System.Windows.Forms.TextBox dia_27; + private System.Windows.Forms.TextBox dia_25; + private System.Windows.Forms.TextBox dia_24; + private System.Windows.Forms.TextBox dia_26; + private System.Windows.Forms.TextBox dia_28; + private System.Windows.Forms.TextBox dia_23; + private System.Windows.Forms.TextBox dia_21; + private System.Windows.Forms.TextBox dia_19; + private System.Windows.Forms.TextBox dia_18; + private System.Windows.Forms.TextBox dia_20; + private System.Windows.Forms.TextBox dia_22; + private System.Windows.Forms.TextBox dia_17; + private System.Windows.Forms.TextBox dia_15; + private System.Windows.Forms.TextBox dia_13; + private System.Windows.Forms.TextBox dia_12; + private System.Windows.Forms.TextBox dia_14; + private System.Windows.Forms.TextBox dia_16; + private System.Windows.Forms.TextBox dia_11; + private System.Windows.Forms.TextBox dia_9; + private System.Windows.Forms.TextBox dia_7; + private System.Windows.Forms.TextBox dia_6; + private System.Windows.Forms.TextBox dia_8; + private System.Windows.Forms.TextBox dia_10; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label_title; + private System.Windows.Forms.Label label_alarm; + private System.ComponentModel.BackgroundWorker backgroundWorker; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox dia_35; + private System.Windows.Forms.TextBox dia_33; + private System.Windows.Forms.TextBox dia_31; + private System.Windows.Forms.TextBox dia_30; + private System.Windows.Forms.TextBox dia_32; + private System.Windows.Forms.TextBox dia_34; + private System.Windows.Forms.Label label12; + private Baosight.ColdRolling.TcmControls.Stand stand6; + } +} \ No newline at end of file diff --git a/Host/OnlineRollForm.cs b/Host/OnlineRollForm.cs new file mode 100644 index 0000000..9abee1d --- /dev/null +++ b/Host/OnlineRollForm.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Windows.Forms; +using CRVM.SIDExcuter; +using CRVM.Entity; + +namespace CRVM +{ + public partial class OnlineRollForm : Form + { + string exp_msg = ""; + public OnlineRollForm() + { + InitializeComponent(); + } + + private void RollInfo_Load(object sender, EventArgs e) + { + label_alarm.Text = "正在读取在线轧辊信息!"; + label_alarm.Visible = true; + + backgroundWorker.DoWork += backgroundWorker_DoWork; + backgroundWorker.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted; + + if (!backgroundWorker.IsBusy) + { + backgroundWorker.RunWorkerAsync(); + } + } + + void backgroundWorker_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) + { + DataTable data = (DataTable)e.Result; + //Console.WriteLine(String.Format(" data.Columns.Count:{ 0}", data.Columns.Count)); + string msg = ""; + if (data != null) + { + if (data.Rows.Count == 1) + { + for (int i = 0; i < data.Columns.Count; i++) + { + string controlName = "dia_" + i.ToString(); + TextBox box = (TextBox)panel2.Controls[controlName]; + if (box != null) + { + box.Text = data.Rows[0][i].ToString(); + } + } + label_alarm.Visible = false; + } + } + else + { + exp_msg = "读取在线轧辊数据失败,请查看数据库连接配置或网络状态!异常信息如下:" + exp_msg; + MessageShowForm form = new MessageShowForm("警告", exp_msg); + form.ShowDialog(); + + label_alarm.Text = "读取在线轧辊数据失败!"; + label_alarm.Visible = true; + } + } + + private void backgroundWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + DataTable data = null; + try + { + data = DbHelper.GetInstance("").GetL2OnlineRollInfo(); + } + catch (Exception ex) + { + exp_msg = ex.ToString(); + } + e.Result = data; + } + + } +} diff --git a/Host/OnlineRollForm.resx b/Host/OnlineRollForm.resx new file mode 100644 index 0000000..975fd0d --- /dev/null +++ b/Host/OnlineRollForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Host/OriginRollForm.Designer.cs b/Host/OriginRollForm.Designer.cs new file mode 100644 index 0000000..6bafe06 --- /dev/null +++ b/Host/OriginRollForm.Designer.cs @@ -0,0 +1,906 @@ +namespace CRVM +{ + partial class OriginRollForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label12 = new System.Windows.Forms.Label(); + this.dia_B_L_6 = new System.Windows.Forms.TextBox(); + this.dia_M_L_6 = new System.Windows.Forms.TextBox(); + this.dia_W_L_6 = new System.Windows.Forms.TextBox(); + this.dia_W_U_6 = new System.Windows.Forms.TextBox(); + this.dia_M_U_6 = new System.Windows.Forms.TextBox(); + this.dia_B_U_6 = new System.Windows.Forms.TextBox(); + this.label13 = new System.Windows.Forms.Label(); + this.stand6 = new Baosight.ColdRolling.TcmControls.Stand(); + this.label_alarm = new System.Windows.Forms.Label(); + this.label_title = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.dia_B_L_5 = new System.Windows.Forms.TextBox(); + this.dia_M_L_5 = new System.Windows.Forms.TextBox(); + this.dia_W_L_5 = new System.Windows.Forms.TextBox(); + this.dia_W_U_5 = new System.Windows.Forms.TextBox(); + this.dia_M_U_5 = new System.Windows.Forms.TextBox(); + this.dia_B_U_5 = new System.Windows.Forms.TextBox(); + this.dia_B_L_4 = new System.Windows.Forms.TextBox(); + this.dia_M_L_4 = new System.Windows.Forms.TextBox(); + this.dia_W_L_4 = new System.Windows.Forms.TextBox(); + this.dia_W_U_4 = new System.Windows.Forms.TextBox(); + this.dia_M_U_4 = new System.Windows.Forms.TextBox(); + this.dia_B_U_4 = new System.Windows.Forms.TextBox(); + this.dia_B_L_3 = new System.Windows.Forms.TextBox(); + this.dia_M_L_3 = new System.Windows.Forms.TextBox(); + this.dia_W_L_3 = new System.Windows.Forms.TextBox(); + this.dia_W_U_3 = new System.Windows.Forms.TextBox(); + this.dia_M_U_3 = new System.Windows.Forms.TextBox(); + this.dia_B_U_3 = new System.Windows.Forms.TextBox(); + this.dia_B_L_2 = new System.Windows.Forms.TextBox(); + this.dia_M_L_2 = new System.Windows.Forms.TextBox(); + this.dia_W_L_2 = new System.Windows.Forms.TextBox(); + this.dia_W_U_2 = new System.Windows.Forms.TextBox(); + this.dia_M_U_2 = new System.Windows.Forms.TextBox(); + this.dia_B_U_2 = new System.Windows.Forms.TextBox(); + this.dia_B_L_1 = new System.Windows.Forms.TextBox(); + this.dia_M_L_1 = new System.Windows.Forms.TextBox(); + this.dia_W_L_1 = new System.Windows.Forms.TextBox(); + this.dia_W_U_1 = new System.Windows.Forms.TextBox(); + this.dia_M_U_1 = new System.Windows.Forms.TextBox(); + this.dia_B_U_1 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.stand5 = new Baosight.ColdRolling.TcmControls.Stand(); + this.stand4 = new Baosight.ColdRolling.TcmControls.Stand(); + this.stand3 = new Baosight.ColdRolling.TcmControls.Stand(); + this.stand2 = new Baosight.ColdRolling.TcmControls.Stand(); + this.stand1 = new Baosight.ColdRolling.TcmControls.Stand(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label11 = new System.Windows.Forms.Label(); + this.combox_createdates = new System.Windows.Forms.ComboBox(); + this.btn_OK = new System.Windows.Forms.Button(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel3.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.panel3, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 55F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1284, 581); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel2 + // + this.panel2.Controls.Add(this.label12); + this.panel2.Controls.Add(this.dia_B_L_6); + this.panel2.Controls.Add(this.dia_M_L_6); + this.panel2.Controls.Add(this.dia_W_L_6); + this.panel2.Controls.Add(this.dia_W_U_6); + this.panel2.Controls.Add(this.dia_M_U_6); + this.panel2.Controls.Add(this.dia_B_U_6); + this.panel2.Controls.Add(this.label13); + this.panel2.Controls.Add(this.stand6); + this.panel2.Controls.Add(this.label_alarm); + this.panel2.Controls.Add(this.label_title); + this.panel2.Controls.Add(this.label10); + this.panel2.Controls.Add(this.label9); + this.panel2.Controls.Add(this.label8); + this.panel2.Controls.Add(this.label7); + this.panel2.Controls.Add(this.label6); + this.panel2.Controls.Add(this.dia_B_L_5); + this.panel2.Controls.Add(this.dia_M_L_5); + this.panel2.Controls.Add(this.dia_W_L_5); + this.panel2.Controls.Add(this.dia_W_U_5); + this.panel2.Controls.Add(this.dia_M_U_5); + this.panel2.Controls.Add(this.dia_B_U_5); + this.panel2.Controls.Add(this.dia_B_L_4); + this.panel2.Controls.Add(this.dia_M_L_4); + this.panel2.Controls.Add(this.dia_W_L_4); + this.panel2.Controls.Add(this.dia_W_U_4); + this.panel2.Controls.Add(this.dia_M_U_4); + this.panel2.Controls.Add(this.dia_B_U_4); + this.panel2.Controls.Add(this.dia_B_L_3); + this.panel2.Controls.Add(this.dia_M_L_3); + this.panel2.Controls.Add(this.dia_W_L_3); + this.panel2.Controls.Add(this.dia_W_U_3); + this.panel2.Controls.Add(this.dia_M_U_3); + this.panel2.Controls.Add(this.dia_B_U_3); + this.panel2.Controls.Add(this.dia_B_L_2); + this.panel2.Controls.Add(this.dia_M_L_2); + this.panel2.Controls.Add(this.dia_W_L_2); + this.panel2.Controls.Add(this.dia_W_U_2); + this.panel2.Controls.Add(this.dia_M_U_2); + this.panel2.Controls.Add(this.dia_B_U_2); + this.panel2.Controls.Add(this.dia_B_L_1); + this.panel2.Controls.Add(this.dia_M_L_1); + this.panel2.Controls.Add(this.dia_W_L_1); + this.panel2.Controls.Add(this.dia_W_U_1); + this.panel2.Controls.Add(this.dia_M_U_1); + this.panel2.Controls.Add(this.dia_B_U_1); + this.panel2.Controls.Add(this.label5); + this.panel2.Controls.Add(this.label4); + this.panel2.Controls.Add(this.label3); + this.panel2.Controls.Add(this.label2); + this.panel2.Controls.Add(this.label1); + this.panel2.Controls.Add(this.stand5); + this.panel2.Controls.Add(this.stand4); + this.panel2.Controls.Add(this.stand3); + this.panel2.Controls.Add(this.stand2); + this.panel2.Controls.Add(this.stand1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(3, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1278, 520); + this.panel2.TabIndex = 1; + // + // label12 + // + this.label12.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label12.Location = new System.Drawing.Point(1045, 134); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(35, 14); + this.label12.TabIndex = 102; + this.label12.Text = "辊径 "; + // + // dia_B_L_6 + // + this.dia_B_L_6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_L_6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_L_6.Location = new System.Drawing.Point(1007, 380); + this.dia_B_L_6.Name = "dia_B_L_6"; + this.dia_B_L_6.Size = new System.Drawing.Size(103, 23); + this.dia_B_L_6.TabIndex = 101; + this.dia_B_L_6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_L_6 + // + this.dia_M_L_6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_L_6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_L_6.Location = new System.Drawing.Point(1007, 327); + this.dia_M_L_6.Name = "dia_M_L_6"; + this.dia_M_L_6.Size = new System.Drawing.Size(103, 23); + this.dia_M_L_6.TabIndex = 100; + this.dia_M_L_6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_L_6 + // + this.dia_W_L_6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_L_6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_L_6.Location = new System.Drawing.Point(1007, 292); + this.dia_W_L_6.Name = "dia_W_L_6"; + this.dia_W_L_6.Size = new System.Drawing.Size(103, 23); + this.dia_W_L_6.TabIndex = 99; + this.dia_W_L_6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_U_6 + // + this.dia_W_U_6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_U_6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_U_6.Location = new System.Drawing.Point(1007, 265); + this.dia_W_U_6.Name = "dia_W_U_6"; + this.dia_W_U_6.Size = new System.Drawing.Size(103, 23); + this.dia_W_U_6.TabIndex = 98; + this.dia_W_U_6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_U_6 + // + this.dia_M_U_6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_U_6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_U_6.Location = new System.Drawing.Point(1007, 223); + this.dia_M_U_6.Name = "dia_M_U_6"; + this.dia_M_U_6.Size = new System.Drawing.Size(103, 23); + this.dia_M_U_6.TabIndex = 97; + this.dia_M_U_6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_U_6 + // + this.dia_B_U_6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_U_6.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_U_6.Location = new System.Drawing.Point(1007, 176); + this.dia_B_U_6.Name = "dia_B_U_6"; + this.dia_B_U_6.Size = new System.Drawing.Size(103, 23); + this.dia_B_U_6.TabIndex = 96; + this.dia_B_U_6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label13.Location = new System.Drawing.Point(1115, 448); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(61, 25); + this.label13.TabIndex = 95; + this.label13.Text = "6机架"; + // + // stand6 + // + this.stand6.AutoSetRollCount = false; + this.stand6.BoderColor = System.Drawing.Color.Black; + this.stand6.Cir1Precent = 45; + this.stand6.Cir2Precent = 35; + this.stand6.Cir3Precent = 20; + this.stand6.Cor1 = System.Drawing.Color.Black; + this.stand6.Cor2 = System.Drawing.Color.Blue; + this.stand6.Count = 3; + this.stand6.Location = new System.Drawing.Point(1116, 157); + this.stand6.Name = "stand6"; + this.stand6.Rheight = 5; + this.stand6.Size = new System.Drawing.Size(68, 260); + this.stand6.TabIndex = 94; + this.stand6.Thickness = 1; + // + // label_alarm + // + this.label_alarm.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_alarm.ForeColor = System.Drawing.Color.Red; + this.label_alarm.Location = new System.Drawing.Point(517, 82); + this.label_alarm.Name = "label_alarm"; + this.label_alarm.Size = new System.Drawing.Size(228, 23); + this.label_alarm.TabIndex = 93; + this.label_alarm.Text = "本地暂无轧辊数据!"; + this.label_alarm.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label_alarm.Visible = false; + // + // label_title + // + this.label_title.Font = new System.Drawing.Font("微软雅黑", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label_title.Location = new System.Drawing.Point(421, 20); + this.label_title.Name = "label_title"; + this.label_title.Size = new System.Drawing.Size(419, 63); + this.label_title.TabIndex = 92; + this.label_title.Text = "离线轧辊画面"; + this.label_title.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label10 + // + this.label10.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label10.Location = new System.Drawing.Point(862, 134); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(35, 14); + this.label10.TabIndex = 91; + this.label10.Text = "辊径 "; + // + // label9 + // + this.label9.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label9.Location = new System.Drawing.Point(680, 134); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(35, 14); + this.label9.TabIndex = 90; + this.label9.Text = "辊径 "; + // + // label8 + // + this.label8.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label8.Location = new System.Drawing.Point(491, 134); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(35, 14); + this.label8.TabIndex = 89; + this.label8.Text = "辊径 "; + // + // label7 + // + this.label7.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.Location = new System.Drawing.Point(306, 134); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(35, 14); + this.label7.TabIndex = 88; + this.label7.Text = "辊径 "; + // + // label6 + // + this.label6.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(117, 134); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(35, 14); + this.label6.TabIndex = 87; + this.label6.Text = "辊径 "; + // + // dia_B_L_5 + // + this.dia_B_L_5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_L_5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_L_5.Location = new System.Drawing.Point(824, 380); + this.dia_B_L_5.Name = "dia_B_L_5"; + this.dia_B_L_5.Size = new System.Drawing.Size(103, 23); + this.dia_B_L_5.TabIndex = 86; + this.dia_B_L_5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_L_5 + // + this.dia_M_L_5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_L_5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_L_5.Location = new System.Drawing.Point(824, 327); + this.dia_M_L_5.Name = "dia_M_L_5"; + this.dia_M_L_5.Size = new System.Drawing.Size(103, 23); + this.dia_M_L_5.TabIndex = 85; + this.dia_M_L_5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_L_5 + // + this.dia_W_L_5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_L_5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_L_5.Location = new System.Drawing.Point(824, 292); + this.dia_W_L_5.Name = "dia_W_L_5"; + this.dia_W_L_5.Size = new System.Drawing.Size(103, 23); + this.dia_W_L_5.TabIndex = 84; + this.dia_W_L_5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_U_5 + // + this.dia_W_U_5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_U_5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_U_5.Location = new System.Drawing.Point(824, 265); + this.dia_W_U_5.Name = "dia_W_U_5"; + this.dia_W_U_5.Size = new System.Drawing.Size(103, 23); + this.dia_W_U_5.TabIndex = 83; + this.dia_W_U_5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_U_5 + // + this.dia_M_U_5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_U_5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_U_5.Location = new System.Drawing.Point(824, 223); + this.dia_M_U_5.Name = "dia_M_U_5"; + this.dia_M_U_5.Size = new System.Drawing.Size(103, 23); + this.dia_M_U_5.TabIndex = 82; + this.dia_M_U_5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_U_5 + // + this.dia_B_U_5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_U_5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_U_5.Location = new System.Drawing.Point(824, 176); + this.dia_B_U_5.Name = "dia_B_U_5"; + this.dia_B_U_5.Size = new System.Drawing.Size(103, 23); + this.dia_B_U_5.TabIndex = 81; + this.dia_B_U_5.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_L_4 + // + this.dia_B_L_4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_L_4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_L_4.Location = new System.Drawing.Point(645, 380); + this.dia_B_L_4.Name = "dia_B_L_4"; + this.dia_B_L_4.Size = new System.Drawing.Size(103, 23); + this.dia_B_L_4.TabIndex = 80; + this.dia_B_L_4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_L_4 + // + this.dia_M_L_4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_L_4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_L_4.Location = new System.Drawing.Point(645, 327); + this.dia_M_L_4.Name = "dia_M_L_4"; + this.dia_M_L_4.Size = new System.Drawing.Size(103, 23); + this.dia_M_L_4.TabIndex = 79; + this.dia_M_L_4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_L_4 + // + this.dia_W_L_4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_L_4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_L_4.Location = new System.Drawing.Point(645, 292); + this.dia_W_L_4.Name = "dia_W_L_4"; + this.dia_W_L_4.Size = new System.Drawing.Size(103, 23); + this.dia_W_L_4.TabIndex = 78; + this.dia_W_L_4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_U_4 + // + this.dia_W_U_4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_U_4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_U_4.Location = new System.Drawing.Point(645, 265); + this.dia_W_U_4.Name = "dia_W_U_4"; + this.dia_W_U_4.Size = new System.Drawing.Size(103, 23); + this.dia_W_U_4.TabIndex = 77; + this.dia_W_U_4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_U_4 + // + this.dia_M_U_4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_U_4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_U_4.Location = new System.Drawing.Point(645, 223); + this.dia_M_U_4.Name = "dia_M_U_4"; + this.dia_M_U_4.Size = new System.Drawing.Size(103, 23); + this.dia_M_U_4.TabIndex = 76; + this.dia_M_U_4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_U_4 + // + this.dia_B_U_4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_U_4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_U_4.Location = new System.Drawing.Point(645, 176); + this.dia_B_U_4.Name = "dia_B_U_4"; + this.dia_B_U_4.Size = new System.Drawing.Size(103, 23); + this.dia_B_U_4.TabIndex = 75; + this.dia_B_U_4.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_L_3 + // + this.dia_B_L_3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_L_3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_L_3.Location = new System.Drawing.Point(460, 380); + this.dia_B_L_3.Name = "dia_B_L_3"; + this.dia_B_L_3.Size = new System.Drawing.Size(103, 23); + this.dia_B_L_3.TabIndex = 74; + this.dia_B_L_3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_L_3 + // + this.dia_M_L_3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_L_3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_L_3.Location = new System.Drawing.Point(460, 327); + this.dia_M_L_3.Name = "dia_M_L_3"; + this.dia_M_L_3.Size = new System.Drawing.Size(103, 23); + this.dia_M_L_3.TabIndex = 73; + this.dia_M_L_3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_L_3 + // + this.dia_W_L_3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_L_3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_L_3.Location = new System.Drawing.Point(460, 292); + this.dia_W_L_3.Name = "dia_W_L_3"; + this.dia_W_L_3.Size = new System.Drawing.Size(103, 23); + this.dia_W_L_3.TabIndex = 72; + this.dia_W_L_3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_U_3 + // + this.dia_W_U_3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_U_3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_U_3.Location = new System.Drawing.Point(460, 265); + this.dia_W_U_3.Name = "dia_W_U_3"; + this.dia_W_U_3.Size = new System.Drawing.Size(103, 23); + this.dia_W_U_3.TabIndex = 71; + this.dia_W_U_3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_U_3 + // + this.dia_M_U_3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_U_3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_U_3.Location = new System.Drawing.Point(460, 223); + this.dia_M_U_3.Name = "dia_M_U_3"; + this.dia_M_U_3.Size = new System.Drawing.Size(103, 23); + this.dia_M_U_3.TabIndex = 70; + this.dia_M_U_3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_U_3 + // + this.dia_B_U_3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_U_3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_U_3.Location = new System.Drawing.Point(460, 176); + this.dia_B_U_3.Name = "dia_B_U_3"; + this.dia_B_U_3.Size = new System.Drawing.Size(103, 23); + this.dia_B_U_3.TabIndex = 69; + this.dia_B_U_3.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_L_2 + // + this.dia_B_L_2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_L_2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_L_2.Location = new System.Drawing.Point(266, 380); + this.dia_B_L_2.Name = "dia_B_L_2"; + this.dia_B_L_2.Size = new System.Drawing.Size(103, 23); + this.dia_B_L_2.TabIndex = 68; + this.dia_B_L_2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_L_2 + // + this.dia_M_L_2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_L_2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_L_2.Location = new System.Drawing.Point(266, 327); + this.dia_M_L_2.Name = "dia_M_L_2"; + this.dia_M_L_2.Size = new System.Drawing.Size(103, 23); + this.dia_M_L_2.TabIndex = 67; + this.dia_M_L_2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_L_2 + // + this.dia_W_L_2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_L_2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_L_2.Location = new System.Drawing.Point(266, 292); + this.dia_W_L_2.Name = "dia_W_L_2"; + this.dia_W_L_2.Size = new System.Drawing.Size(103, 23); + this.dia_W_L_2.TabIndex = 66; + this.dia_W_L_2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_U_2 + // + this.dia_W_U_2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_U_2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_U_2.Location = new System.Drawing.Point(266, 265); + this.dia_W_U_2.Name = "dia_W_U_2"; + this.dia_W_U_2.Size = new System.Drawing.Size(103, 23); + this.dia_W_U_2.TabIndex = 65; + this.dia_W_U_2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_U_2 + // + this.dia_M_U_2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_U_2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_U_2.Location = new System.Drawing.Point(266, 223); + this.dia_M_U_2.Name = "dia_M_U_2"; + this.dia_M_U_2.Size = new System.Drawing.Size(103, 23); + this.dia_M_U_2.TabIndex = 64; + this.dia_M_U_2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_U_2 + // + this.dia_B_U_2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_U_2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_U_2.Location = new System.Drawing.Point(266, 176); + this.dia_B_U_2.Name = "dia_B_U_2"; + this.dia_B_U_2.Size = new System.Drawing.Size(103, 23); + this.dia_B_U_2.TabIndex = 63; + this.dia_B_U_2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_L_1 + // + this.dia_B_L_1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_L_1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_L_1.Location = new System.Drawing.Point(80, 380); + this.dia_B_L_1.Name = "dia_B_L_1"; + this.dia_B_L_1.Size = new System.Drawing.Size(103, 23); + this.dia_B_L_1.TabIndex = 62; + this.dia_B_L_1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_L_1 + // + this.dia_M_L_1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_L_1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_L_1.Location = new System.Drawing.Point(80, 327); + this.dia_M_L_1.Name = "dia_M_L_1"; + this.dia_M_L_1.Size = new System.Drawing.Size(103, 23); + this.dia_M_L_1.TabIndex = 61; + this.dia_M_L_1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_L_1 + // + this.dia_W_L_1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_L_1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_L_1.Location = new System.Drawing.Point(80, 292); + this.dia_W_L_1.Name = "dia_W_L_1"; + this.dia_W_L_1.Size = new System.Drawing.Size(103, 23); + this.dia_W_L_1.TabIndex = 60; + this.dia_W_L_1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_W_U_1 + // + this.dia_W_U_1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_W_U_1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_W_U_1.Location = new System.Drawing.Point(80, 265); + this.dia_W_U_1.Name = "dia_W_U_1"; + this.dia_W_U_1.Size = new System.Drawing.Size(103, 23); + this.dia_W_U_1.TabIndex = 59; + this.dia_W_U_1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_M_U_1 + // + this.dia_M_U_1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_M_U_1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_M_U_1.Location = new System.Drawing.Point(80, 223); + this.dia_M_U_1.Name = "dia_M_U_1"; + this.dia_M_U_1.Size = new System.Drawing.Size(103, 23); + this.dia_M_U_1.TabIndex = 58; + this.dia_M_U_1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // dia_B_U_1 + // + this.dia_B_U_1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dia_B_U_1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dia_B_U_1.Location = new System.Drawing.Point(80, 176); + this.dia_B_U_1.Name = "dia_B_U_1"; + this.dia_B_U_1.Size = new System.Drawing.Size(103, 23); + this.dia_B_U_1.TabIndex = 57; + this.dia_B_U_1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(932, 448); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(61, 25); + this.label5.TabIndex = 56; + this.label5.Text = "5机架"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.Location = new System.Drawing.Point(757, 448); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(61, 25); + this.label4.TabIndex = 55; + this.label4.Text = "4机架"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(571, 448); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(61, 25); + this.label3.TabIndex = 54; + this.label3.Text = "3机架"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(375, 448); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(61, 25); + this.label2.TabIndex = 53; + this.label2.Text = "2机架"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(189, 448); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(61, 25); + this.label1.TabIndex = 52; + this.label1.Text = "1机架"; + // + // stand5 + // + this.stand5.AutoSetRollCount = false; + this.stand5.BoderColor = System.Drawing.Color.Black; + this.stand5.Cir1Precent = 45; + this.stand5.Cir2Precent = 35; + this.stand5.Cir3Precent = 20; + this.stand5.Cor1 = System.Drawing.Color.Black; + this.stand5.Cor2 = System.Drawing.Color.Blue; + this.stand5.Count = 3; + this.stand5.Location = new System.Drawing.Point(933, 157); + this.stand5.Name = "stand5"; + this.stand5.Rheight = 5; + this.stand5.Size = new System.Drawing.Size(68, 260); + this.stand5.TabIndex = 51; + this.stand5.Thickness = 1; + // + // stand4 + // + this.stand4.AutoSetRollCount = false; + this.stand4.BoderColor = System.Drawing.Color.Black; + this.stand4.Cir1Precent = 45; + this.stand4.Cir2Precent = 35; + this.stand4.Cir3Precent = 20; + this.stand4.Cor1 = System.Drawing.Color.Black; + this.stand4.Cor2 = System.Drawing.Color.Blue; + this.stand4.Count = 3; + this.stand4.Location = new System.Drawing.Point(754, 157); + this.stand4.Name = "stand4"; + this.stand4.Rheight = 5; + this.stand4.Size = new System.Drawing.Size(64, 260); + this.stand4.TabIndex = 50; + this.stand4.Thickness = 1; + // + // stand3 + // + this.stand3.AutoSetRollCount = false; + this.stand3.BoderColor = System.Drawing.Color.Black; + this.stand3.Cir1Precent = 45; + this.stand3.Cir2Precent = 35; + this.stand3.Cir3Precent = 20; + this.stand3.Cor1 = System.Drawing.Color.Black; + this.stand3.Cor2 = System.Drawing.Color.Blue; + this.stand3.Count = 3; + this.stand3.Location = new System.Drawing.Point(569, 157); + this.stand3.Name = "stand3"; + this.stand3.Rheight = 5; + this.stand3.Size = new System.Drawing.Size(65, 260); + this.stand3.TabIndex = 49; + this.stand3.Thickness = 1; + // + // stand2 + // + this.stand2.AutoSetRollCount = false; + this.stand2.BoderColor = System.Drawing.Color.Black; + this.stand2.Cir1Precent = 45; + this.stand2.Cir2Precent = 35; + this.stand2.Cir3Precent = 20; + this.stand2.Cor1 = System.Drawing.Color.Black; + this.stand2.Cor2 = System.Drawing.Color.Blue; + this.stand2.Count = 3; + this.stand2.Location = new System.Drawing.Point(377, 157); + this.stand2.Name = "stand2"; + this.stand2.Rheight = 5; + this.stand2.Size = new System.Drawing.Size(66, 260); + this.stand2.TabIndex = 48; + this.stand2.Thickness = 1; + // + // stand1 + // + this.stand1.AutoSetRollCount = false; + this.stand1.BoderColor = System.Drawing.Color.Black; + this.stand1.Cir1Precent = 45; + this.stand1.Cir2Precent = 35; + this.stand1.Cir3Precent = 20; + this.stand1.Cor1 = System.Drawing.Color.Black; + this.stand1.Cor2 = System.Drawing.Color.Blue; + this.stand1.Count = 3; + this.stand1.Location = new System.Drawing.Point(191, 157); + this.stand1.Name = "stand1"; + this.stand1.Rheight = 5; + this.stand1.Size = new System.Drawing.Size(69, 260); + this.stand1.TabIndex = 47; + this.stand1.Thickness = 1; + // + // panel3 + // + this.panel3.Controls.Add(this.label11); + this.panel3.Controls.Add(this.combox_createdates); + this.panel3.Controls.Add(this.btn_OK); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Font = new System.Drawing.Font("微软雅黑", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.panel3.Location = new System.Drawing.Point(3, 529); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(1278, 49); + this.panel3.TabIndex = 2; + // + // label11 + // + this.label11.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label11.Location = new System.Drawing.Point(45, 13); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(97, 19); + this.label11.TabIndex = 94; + this.label11.Text = "参考时刻点:"; + this.label11.UseWaitCursor = true; + this.label11.Visible = false; + // + // combox_createdates + // + this.combox_createdates.FormattingEnabled = true; + this.combox_createdates.Location = new System.Drawing.Point(150, 12); + this.combox_createdates.Name = "combox_createdates"; + this.combox_createdates.Size = new System.Drawing.Size(234, 27); + this.combox_createdates.TabIndex = 1; + this.combox_createdates.Visible = false; + this.combox_createdates.SelectedIndexChanged += new System.EventHandler(this.combox_createdates_SelectedIndexChanged); + // + // btn_OK + // + this.btn_OK.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_OK.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_OK.Location = new System.Drawing.Point(950, 3); + this.btn_OK.Name = "btn_OK"; + this.btn_OK.Size = new System.Drawing.Size(90, 38); + this.btn_OK.TabIndex = 0; + this.btn_OK.Text = "应用"; + this.btn_OK.UseVisualStyleBackColor = true; + this.btn_OK.Visible = false; + this.btn_OK.Click += new System.EventHandler(this.btn_OK_Click); + // + // OriginRollForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1284, 581); + this.Controls.Add(this.tableLayoutPanel1); + this.MaximumSize = new System.Drawing.Size(1300, 620); + this.MinimumSize = new System.Drawing.Size(1100, 620); + this.Name = "OriginRollForm"; + this.ShowIcon = false; + this.Load += new System.EventHandler(this.RollInfo_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.panel3.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Button btn_OK; + private System.Windows.Forms.Label label_alarm; + private System.Windows.Forms.Label label_title; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox dia_B_L_5; + private System.Windows.Forms.TextBox dia_M_L_5; + private System.Windows.Forms.TextBox dia_W_L_5; + private System.Windows.Forms.TextBox dia_W_U_5; + private System.Windows.Forms.TextBox dia_M_U_5; + private System.Windows.Forms.TextBox dia_B_U_5; + private System.Windows.Forms.TextBox dia_B_L_4; + private System.Windows.Forms.TextBox dia_M_L_4; + private System.Windows.Forms.TextBox dia_W_L_4; + private System.Windows.Forms.TextBox dia_W_U_4; + private System.Windows.Forms.TextBox dia_M_U_4; + private System.Windows.Forms.TextBox dia_B_U_4; + private System.Windows.Forms.TextBox dia_B_L_3; + private System.Windows.Forms.TextBox dia_M_L_3; + private System.Windows.Forms.TextBox dia_W_L_3; + private System.Windows.Forms.TextBox dia_W_U_3; + private System.Windows.Forms.TextBox dia_M_U_3; + private System.Windows.Forms.TextBox dia_B_U_3; + private System.Windows.Forms.TextBox dia_B_L_2; + private System.Windows.Forms.TextBox dia_M_L_2; + private System.Windows.Forms.TextBox dia_W_L_2; + private System.Windows.Forms.TextBox dia_W_U_2; + private System.Windows.Forms.TextBox dia_M_U_2; + private System.Windows.Forms.TextBox dia_B_U_2; + private System.Windows.Forms.TextBox dia_B_L_1; + private System.Windows.Forms.TextBox dia_M_L_1; + private System.Windows.Forms.TextBox dia_W_L_1; + private System.Windows.Forms.TextBox dia_W_U_1; + private System.Windows.Forms.TextBox dia_M_U_1; + private System.Windows.Forms.TextBox dia_B_U_1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private Baosight.ColdRolling.TcmControls.Stand stand5; + private Baosight.ColdRolling.TcmControls.Stand stand4; + private Baosight.ColdRolling.TcmControls.Stand stand3; + private Baosight.ColdRolling.TcmControls.Stand stand2; + private Baosight.ColdRolling.TcmControls.Stand stand1; + private System.Windows.Forms.ComboBox combox_createdates; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.TextBox dia_B_L_6; + private System.Windows.Forms.TextBox dia_M_L_6; + private System.Windows.Forms.TextBox dia_W_L_6; + private System.Windows.Forms.TextBox dia_W_U_6; + private System.Windows.Forms.TextBox dia_M_U_6; + private System.Windows.Forms.TextBox dia_B_U_6; + private System.Windows.Forms.Label label13; + private Baosight.ColdRolling.TcmControls.Stand stand6; + } +} \ No newline at end of file diff --git a/Host/OriginRollForm.cs b/Host/OriginRollForm.cs new file mode 100644 index 0000000..65ef46d --- /dev/null +++ b/Host/OriginRollForm.cs @@ -0,0 +1,196 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Windows.Forms; +using CRVM.SIDExcuter; +using CRVM.Entity; +using System.Text.RegularExpressions; + +namespace CRVM +{ + public partial class OriginRollForm : Form + { + Machine reviewMac = null; + public OriginRollForm(Machine reviewMac) + { + this.reviewMac = reviewMac; + InitializeComponent(); + } + + private void RollInfo_Load(object sender, EventArgs e) + { + Inital(); + } + + private void Inital() + { + if (reviewMac == null) + { + return; + } + int standCount = SysParam.Instance.SpeedChannelCount+1; + for (int standno = 1; standno < standCount; standno++) + { + TextBox textbox_BU = (TextBox)panel2.Controls["dia_B_U_" + standno]; + textbox_BU.Text = reviewMac.Stand[standno - 1].rollDiameterBU.ToString(); + TextBox textbox_BL = (TextBox)panel2.Controls["dia_B_L_" + standno]; + textbox_BL.Text = reviewMac.Stand[standno - 1].rollDiameterBL.ToString(); + TextBox textbox_MU = (TextBox)panel2.Controls["dia_M_U_" + standno]; + textbox_MU.Text = reviewMac.Stand[standno - 1].rollDiameterMU.ToString(); + TextBox textbox_ML = (TextBox)panel2.Controls["dia_M_L_" + standno]; + textbox_ML.Text = reviewMac.Stand[standno - 1].rollDiameterML.ToString(); ; + TextBox textbox_WU = (TextBox)panel2.Controls["dia_W_U_" + standno]; + textbox_WU.Text = reviewMac.Stand[standno - 1].rollDiameterWU.ToString(); + TextBox textbox_WL = (TextBox)panel2.Controls["dia_W_L_" + standno]; + textbox_WL.Text = reviewMac.Stand[standno - 1].rollDiameterWL.ToString(); + } + //DataTable createdates = null; + //try + //{ + // createdates = DbHelper.GetInstance("").SelCreateTimeRolData(); + //} + //catch (Exception ex) + //{ + // label_alarm.Text = "无法获取本地轧辊数据,请查看本地数据库连接状态!"; + // label_alarm.Visible = true; + //} + + //if (createdates == null) + //{ + // return; + //} + //else + //{ + // List list = new List(); + // for (int i = 0; i < createdates.Rows.Count; i++) + // { + // list.Add(createdates.Rows[i]["createdate"].ToString()); + // } + // combox_createdates.DataSource = list; + // if (list.Count > 0) + // { + // combox_createdates.SelectedIndex = 0; + // } + //} + } + + private void DiameterView(string createdate) + { + //DataTable data = null; + //try + //{ + // data = DbHelper.GetInstance("").SelRollDataByCreateDate(createdate); + //} + //catch (Exception) + //{ + // label_alarm.Text = "无法获取本地轧辊数据,请查看本地数据库连接状态!"; + // label_alarm.Visible = true; + //} + + //if (data != null) + //{ + // for (int i = 0; i < data.Rows.Count; i++) + // { + // string controlName = "dia_" + data.Rows[i]["rolltype"] + "_" + data.Rows[i]["rollposition"] + "_" + data.Rows[i]["standno"]; + // TextBox box = (TextBox)panel2.Controls[controlName]; + // if (box != null) + // { + // box.Text = data.Rows[i]["diametermiddle"].ToString(); + // } + // } + //} + } + + private void combox_createdates_SelectedIndexChanged(object sender, EventArgs e) + { + ClearDiameter(); + DiameterView(combox_createdates.Text.Trim()); + } + + private void ClearDiameter() + { + foreach (Control item in panel2.Controls) + { + if (item.GetType().ToString().Contains("TextBox")) + { + TextBox textbox = (TextBox)item; + textbox.Text = ""; + } + } + } + + private void btn_OK_Click(object sender, EventArgs e) + { + if (IsInputOk()) + { + if (reviewMac == null) + { + return; + } + int standCount = SysParam.Instance.SpeedChannelCount+1; + for (int standno = 1; standno < standCount; standno++) + { + TextBox textbox_BU = (TextBox)panel2.Controls["dia_B_U_" + standno]; + reviewMac.Stand[standno - 1].rollDiameterBU = Convert.ToDouble(textbox_BU.Text.Trim()); + TextBox textbox_BL = (TextBox)panel2.Controls["dia_B_L_" + standno]; + reviewMac.Stand[standno - 1].rollDiameterBL = Convert.ToDouble(textbox_BL.Text.Trim()); + TextBox textbox_MU = (TextBox)panel2.Controls["dia_M_U_" + standno]; + reviewMac.Stand[standno - 1].rollDiameterMU = Convert.ToDouble(textbox_MU.Text.Trim()); + TextBox textbox_ML = (TextBox)panel2.Controls["dia_M_L_" + standno]; + reviewMac.Stand[standno - 1].rollDiameterML = Convert.ToDouble(textbox_ML.Text.Trim()); + TextBox textbox_WU = (TextBox)panel2.Controls["dia_W_U_" + standno]; + reviewMac.Stand[standno - 1].rollDiameterWU = Convert.ToDouble(textbox_WU.Text.Trim()); + TextBox textbox_WL = (TextBox)panel2.Controls["dia_W_L_" + standno]; + reviewMac.Stand[standno - 1].rollDiameterWL = Convert.ToDouble(textbox_WL.Text.Trim()); + } + MessageShowForm form = new MessageShowForm("提示", "轧辊直径设置成功!"); + form.ShowDialog(); + } + } + + private bool IsInputOk() + { + foreach (Control item in panel2.Controls) + { + if (item.GetType().ToString().Contains("TextBox")) + { + TextBox textbox = (TextBox)item; + double value = 0d; + if (!double.TryParse(textbox.Text.Trim(), out value)) + { + string name = textbox.Name; + string standno = name.Substring(8, 1); + string rollposition = name.Substring(6, 1); + string rolltype = name.Substring(4, 1); + if (rollposition == "U") + { + rollposition = "上"; + } + else + { + rollposition = "下"; + } + + if (rolltype == "B") + { + rolltype = "支撑辊"; + } + else if (rolltype == "M") + { + rolltype = "中间辊"; + } + else if (rolltype == "W") + { + rolltype = "工作辊"; + } + string msg = standno + "机架" + rolltype + rollposition + "辊直径输入格式不正确!"; + MessageShowForm form = new MessageShowForm("提示", msg); + form.ShowDialog(); + return false; + } + } + } + return true; + } + } +} diff --git a/Host/OriginRollForm.resx b/Host/OriginRollForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Host/OriginRollForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Host/Plot_energy.cs b/Host/Plot_energy.cs new file mode 100644 index 0000000..cfee505 --- /dev/null +++ b/Host/Plot_energy.cs @@ -0,0 +1,343 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; +using ZedGraph; +using CRVM.SIDExcuter; +using CRVM.Entity; + +namespace CRVM +{ + public partial class Plot_energy : DockContent + { + private MasterPane master; + private Machine mac = null; + IViewHelper fileHelper = null; + public Plot_energy(IViewHelper fileHelper, Machine mac) + { + this.fileHelper = fileHelper; + this.mac = mac; + InitializeComponent(); + timer1.Enabled = true; + timer1.Interval = 2000; + timer1.Start(); + } + + private void Plot_energy_Load(object sender, EventArgs e) + { + SubExcute(); + } + + private void timer1_Tick(object sender, EventArgs e) + { + GraRefresh(); + } + public void GraRefresh() + { + SubExcute(); + } + + private void SubExcute() + { + if (fileHelper != null) + { + master = new MasterPane(); + master.PaneList.Clear(); + if (SysParam.Instance.orderByChannel) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + if (SysParam.Instance.channel[i].ChChecked) + { + if (SysParam.Instance.checkBoxEnergy) + OrderByChannel_Energy(i); + } + } + } + else + { + if (SysParam.Instance.checkBoxEnergy) + OrderByKind_Energy(); + } + master.Border.IsVisible = false; + master.Fill.Color = SysParam.Instance.colorBackgroud; + master.Margin.All = 5f; + master.InnerPaneGap = 5f; + zedGraphControl1.MasterPane = master; + Graphics gg1 = zedGraphControl1.CreateGraphics(); + master.AxisChange(gg1); + if (SysParam.Instance.orderBySingleColumn) + { + zedGraphControl1.MasterPane.SetLayout(gg1, PaneLayout.SingleColumn); + } + else + { + zedGraphControl1.MasterPane.SetLayout(gg1, PaneLayout.SquareRowPreferred); + } + zedGraphControl1.Height = DockPanel.Height; + zedGraphControl1.Refresh(); + } + } + private void OrderByChannel_Energy( int standNo) + { + + if (SysParam.Instance.checkBoxEnergyAll) + { + energy_All(fileHelper.energyData, SysParam.Instance.comboBoxEnergyAll, standNo); + } + if (SysParam.Instance.checkBoxEnergyL) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyL, standNo, 0, "低频"); + } + if (SysParam.Instance.checkBoxEnergyM) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyM, standNo, 1, "中频"); + } + if (SysParam.Instance.checkBoxEnergyH) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyH, standNo, 2, "高频"); + } + if (SysParam.Instance.checkBoxEnergySpeed && (standNo < SysParam.Instance.SpeedChannelCount)) + { + energy_Speed(fileHelper.energyData, SysParam.Instance.comboBoxEnergySpeed, standNo); + } + } + private void OrderByKind_Energy() + { + if (SysParam.Instance.checkBoxEnergyAll) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_All(fileHelper.energyData, SysParam.Instance.comboBoxEnergyAll, i); + } + } + } + if (SysParam.Instance.checkBoxEnergyL) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyL, i,0,"低频"); + } + } + } + if (SysParam.Instance.checkBoxEnergyM) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyM, i, 1, "中频"); + } + } + } + if (SysParam.Instance.checkBoxEnergyH) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyH, i, 2, "高频"); + } + } + } + if (SysParam.Instance.checkBoxEnergySpeed) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_Speed(fileHelper.energyData, SysParam.Instance.comboBoxEnergySpeed, i); + } + } + } + } + private void energy_All(double[,] lineList, string yAxisVal, int stdNo) + { + GraphPane gpt = new GraphPane(); + gpt.CurveList.Clear(); + int length = fileHelper.signalLengthEnergy; + double[] tx = new double[length]; + double[] ty = new double[length]; + for (int i = 0; i < length; i++) + { + tx[i] = i * SysParam.Instance.reSamplePoint / Convert.ToDouble(SysParam.Instance.reSampleFre); + ty[i] = lineList[stdNo * 8 + 1, i]; + } + gpt.AddCurve("", tx, ty, SysParam.Instance.colorEnergy, SymbolType.None); + gpt.XAxis.Scale.Min = 0.0; + gpt.XAxis.Scale.Max = tx[length - 1]; + gpt.YAxis.Scale.Min = 0.0; + gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); + gpt.Title.Text = (stdNo + 1) + "号机架全局能量"; + GraPaneSetting(gpt); + this.master.Add(gpt); + } + + private void energy_LMH(double[,] lineList, string yAxisVal, int stdNo, int typeNo, string type) + { + GraphPane gpt = new GraphPane(); + gpt.CurveList.Clear(); + int length = fileHelper.signalLengthEnergy; + double[] tx = new double[length]; + double[] ty = new double[length]; + double[] tyalarm = new double[length]; + for (int i = 0; i < length; i++) + { + tx[i] = i * SysParam.Instance.reSamplePoint / Convert.ToDouble(SysParam.Instance.reSampleFre); + ty[i] = lineList[stdNo * 8 + 2 + typeNo, i]; + tyalarm[i] = lineList[stdNo * 8 + 5 + typeNo, i]; + } + gpt.AddCurve("", tx, ty, SysParam.Instance.colorEnergy, SymbolType.None); + gpt.AddCurve("", tx, tyalarm, SysParam.Instance.colorAlarm, SymbolType.None).Line.Width = 2f; + + gpt.XAxis.Scale.Min = 0.0; + gpt.XAxis.Scale.Max = tx[length - 1]; + gpt.YAxis.Scale.Min = 0.0; + gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); + gpt.Title.Text = (stdNo + 1) + "号机架" + type + "能量"; + GraPaneSetting(gpt); + this.master.Add(gpt); + } + + private void energy_Speed(double[,] lineList, string yAxisVal, int stdNo) + { + GraphPane gpt = new GraphPane(); + gpt.CurveList.Clear(); + int length = fileHelper.signalLengthEnergy; + double[] tx = new double[length]; + double[] ty = new double[length]; + for (int i = 0; i < length; i++) + { + tx[i] = i * SysParam.Instance.reSamplePoint / Convert.ToDouble(SysParam.Instance.reSampleFre); + ty[i] = lineList[stdNo * 8, i]; + } + gpt.AddCurve("", tx, ty, SysParam.Instance.colorSpeed, SymbolType.None).Line.Width = 2f; + gpt.XAxis.Scale.Min = 0.0; + gpt.XAxis.Scale.Max = tx[length - 1]; + gpt.YAxis.Scale.Min = 0.0; + gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); + gpt.Title.Text = (stdNo + 1) + "号机架速度"; + GraPaneSetting(gpt); + this.master.Add(gpt); + } + + private static void GraPaneSetting(GraphPane tempGraph) + { + float fontsize = SysParam.Instance.fontSize; + Color myFontColor = SysParam.Instance.colorFont; + //tempGraph.Margin.All = 2f; + tempGraph.Fill.IsVisible = false; + tempGraph.IsFontsScaled = false; + tempGraph.TitleGap = 0f; + tempGraph.Margin.All = 3f; + tempGraph.Border.Color = Color.FromArgb(127, myFontColor); + + tempGraph.Chart.Border.Color = myFontColor; + tempGraph.Chart.Fill.IsVisible = false; + + tempGraph.Title.FontSpec.FontColor = myFontColor; + tempGraph.Title.FontSpec.Family = "微软雅黑"; + tempGraph.Title.FontSpec.IsBold = false; + tempGraph.Title.FontSpec.Size = 1.5f * fontsize; + + tempGraph.Legend.Border.IsVisible = false; + tempGraph.Legend.Position = LegendPos.InsideTopLeft; + tempGraph.Legend.FontSpec.Size = fontsize; + tempGraph.Legend.Fill.IsVisible = false; + tempGraph.Legend.FontSpec.FontColor = myFontColor; + tempGraph.Legend.FontSpec.Family = "微软雅黑"; + + tempGraph.XAxis.Title.FontSpec.Family = "微软雅黑"; + tempGraph.XAxis.Title.FontSpec.IsBold = false; + tempGraph.XAxis.Scale.FontSpec.FontColor = myFontColor; + tempGraph.XAxis.Scale.FontSpec.Size = fontsize; + tempGraph.XAxis.Title.IsVisible = false; + tempGraph.XAxis.MajorTic.IsOutside = false; + tempGraph.XAxis.MajorTic.Color = Color.FromArgb(127, myFontColor); + tempGraph.XAxis.MinorTic.IsAllTics = false; + + tempGraph.YAxis.Title.FontSpec.Family = "微软雅黑"; + tempGraph.YAxis.Title.FontSpec.IsBold = false; + tempGraph.YAxis.Scale.FontSpec.FontColor = myFontColor; + tempGraph.YAxis.Scale.FontSpec.Size = fontsize; + tempGraph.YAxis.Title.IsVisible = false; + tempGraph.YAxis.MajorTic.IsOutside = false; + tempGraph.YAxis.MajorTic.Color = Color.FromArgb(127, myFontColor); + tempGraph.YAxis.MinorTic.IsAllTics = false; + tempGraph.YAxis.MajorGrid.IsZeroLine = false; + + if (SysParam.Instance.BackgroundGridOn) + { + tempGraph.XAxis.MajorGrid.IsVisible = true; + tempGraph.XAxis.MajorGrid.Color = Color.FromArgb(127, myFontColor); + tempGraph.YAxis.MajorGrid.IsVisible = true; + tempGraph.YAxis.MajorGrid.Color = Color.FromArgb(127, myFontColor); + } + else + { + tempGraph.XAxis.MajorGrid.IsVisible = false; + tempGraph.YAxis.MajorGrid.IsVisible = false; + } + } + + + private string zedGraphControl1_PointValueEvent(ZedGraphControl sender, GraphPane pane, CurveItem curve, int iPt) + { + if (pane.Title.Text.Contains("速度")) + { + PointPair pt = curve[iPt]; + return (pt.X.ToString("0.000") + "s " + pt.Y.ToString("0.0") + "m/min"); + } + else if (pane.Title.Text.Contains("频谱")) + { + PointPair pt = curve[iPt]; + return (pt.X.ToString("0.0") + "Hz " + pt.Y.ToString("0.00000") + "g"); + } + else + { + PointPair pt = curve[iPt]; + return (pt.X.ToString("0.000") + "s " + pt.Y.ToString("0.00000") + "g"); + } + } + + private void zedGraphControl1_ContextMenuBuilder(ZedGraphControl sender, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectState objState) + { + for (int i = 0; i < menuStrip.Items.Count; i++) + { + switch (menuStrip.Items[i].Tag.ToString().Trim()) + { + case "copy": + menuStrip.Items[i].Text = "复制图片"; + break; + case "show_val": + menuStrip.Items[i].Text = "查看坐标"; + break; + case "save_as": + menuStrip.Items[i].Text = "图片保存至..."; + break; + case "page_setup": + menuStrip.Items[i].Text = "页面设置"; + break; + case "print": + menuStrip.Items[i].Text = "打印"; + break; + case "unzoom": + menuStrip.Items[i].Text = "还原缩放"; + break; + case "undo_all": + menuStrip.Items[i].Text = @"还原缩放\移动"; + break; + case "set_default": + menuStrip.Items[i].Text = "恢复默认设置"; + break; + } + } + } + + } + +} diff --git a/Host/Plot_energy.designer.cs b/Host/Plot_energy.designer.cs new file mode 100644 index 0000000..1a68cb2 --- /dev/null +++ b/Host/Plot_energy.designer.cs @@ -0,0 +1,78 @@ +namespace CRVM +{ + partial class Plot_energy + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.zedGraphControl1 = new ZedGraph.ZedGraphControl(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.SuspendLayout(); + // + // zedGraphControl1 + // + this.zedGraphControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.zedGraphControl1.Location = new System.Drawing.Point(0, 0); + this.zedGraphControl1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.zedGraphControl1.Name = "zedGraphControl1"; + this.zedGraphControl1.ScrollGrace = 0D; + this.zedGraphControl1.ScrollMaxX = 0D; + this.zedGraphControl1.ScrollMaxY = 0D; + this.zedGraphControl1.ScrollMaxY2 = 0D; + this.zedGraphControl1.ScrollMinX = 0D; + this.zedGraphControl1.ScrollMinY = 0D; + this.zedGraphControl1.ScrollMinY2 = 0D; + this.zedGraphControl1.Size = new System.Drawing.Size(688, 411); + this.zedGraphControl1.TabIndex = 1; + this.zedGraphControl1.ContextMenuBuilder += new ZedGraph.ZedGraphControl.ContextMenuBuilderEventHandler(this.zedGraphControl1_ContextMenuBuilder); + this.zedGraphControl1.PointValueEvent += new ZedGraph.ZedGraphControl.PointValueHandler(this.zedGraphControl1_PointValueEvent); + // + // timer1 + // + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // Plot_energy + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(688, 411); + this.Controls.Add(this.zedGraphControl1); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "Plot_energy"; + this.Text = "Plot_energy"; + this.Load += new System.EventHandler(this.Plot_energy_Load); + this.ResumeLayout(false); + + } + + #endregion + + private ZedGraph.ZedGraphControl zedGraphControl1; + private System.Windows.Forms.Timer timer1; + } +} \ No newline at end of file diff --git a/Host/Plot_energy.resx b/Host/Plot_energy.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/Host/Plot_energy.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Host/Plotting.cs b/Host/Plotting.cs new file mode 100644 index 0000000..df7d711 --- /dev/null +++ b/Host/Plotting.cs @@ -0,0 +1,855 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; +using ZedGraph; +using CRVM.SIDExcuter; +using CRVM.Entity; +using CRVM.Utility; + +namespace CRVM +{ + public partial class Plotting : DockContent + { + private MasterPane master; + private Machine mac = null; + GraphPane gpt; + private double[] xAxisEnergy; + + public Plotting(Machine mac) + { + this.mac = mac; + InitializeComponent(); + } + + private void Plotting_Load(object sender, EventArgs e) + { + GraRefresh(); + } + public void GraRefresh() + { + if (mac != null) + { + zedGraphControl1.IsShowPointValues = false; + master = new MasterPane(); + master.PaneList.Clear(); + xAxisEnergy = mac.xAxisEnergy.ToArray(); + + if (SysParam.Instance.orderByOther) + { + if (SysParam.Instance.orderByChannel) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.channelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + if (SysParam.Instance.checkBoxTime) + OrderByChannel_Time(mac.Stand[i], i); + if (SysParam.Instance.checkBoxEnergy) + OrderByChannel_Energy(mac.Stand[i], i); + } + } + } + else + { + if (SysParam.Instance.checkBoxTime) + OrderByKind_Time(); + if (SysParam.Instance.checkBoxEnergy) + OrderByKind_Energy(); + } + } + else if (SysParam.Instance.orderByStandnoR2L) + { + if (SysParam.Instance.checkBoxTime) + OrderByKind_Time(); + if (SysParam.Instance.checkBoxEnergy) + OrderByKind_Energy(); + } + else if (SysParam.Instance.orderByStandnoL2R) + { + if (SysParam.Instance.checkBoxTime) + OrderByKind_Time2(); + if (SysParam.Instance.checkBoxEnergy) + OrderByKind_Energy2(); + } + + + master.Border.IsVisible = false; + master.Margin.All = 5f; + master.InnerPaneGap = 5f; + master.Fill = new Fill(SysParam.Instance.colorBackgroud); + master.AxisChange(); + zedGraphControl1.MasterPane = master; + + if (SysParam.Instance.orderByStandnoR2L|| SysParam.Instance.orderByStandnoL2R) + { + int colNumTemp = 0;//显示的列数,按机架排列 + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + if (SysParam.Instance.channel[i].ChChecked) + { + colNumTemp++; + } + } + + int picNumber = 0; + if (SysParam.Instance.checkBoxTime) + { + if (SysParam.Instance.checkBoxTimeAll) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeL) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeM) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeH) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeFre) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeFilt) + { + picNumber++; + } + } + if (SysParam.Instance.checkBoxEnergy) + { + if (SysParam.Instance.checkBoxEnergyAll) + { + picNumber++; + } + if (SysParam.Instance.checkBoxEnergyL) + { + picNumber++; + } + if (SysParam.Instance.checkBoxEnergyM) + { + picNumber++; + } + if (SysParam.Instance.checkBoxEnergyH) + { + picNumber++; + } + if (SysParam.Instance.checkBoxEnergySpeed) + { + picNumber++; + } + } + if (picNumber == 0) + { + picNumber = 1; + } + zedGraphControl1.MasterPane.RowNum = picNumber; + + if (colNumTemp == 0 || colNumTemp > SysParam.Instance.SpeedChannelCount) + { + + } + else + { + zedGraphControl1.MasterPane.ColNum = colNumTemp; + } + + zedGraphControl1.MasterPane.SetLayout(zedGraphControl1.CreateGraphics(), PaneLayout.UserFormat); + } + else if (SysParam.Instance.orderByOther) + { + if (SysParam.Instance.orderBySingleColumn) + { + zedGraphControl1.MasterPane.SetLayout(zedGraphControl1.CreateGraphics(), PaneLayout.SingleColumn); + } + else + { + zedGraphControl1.MasterPane.SetLayout(zedGraphControl1.CreateGraphics(), PaneLayout.SquareRowPreferred); + } + } + + zedGraphControl1.Height = DockPanel.Height; + zedGraphControl1.Invalidate(); + } + } + + private void OrderByChannel_Time(Stand stand, int standNo) + { + if (standNo >= SysParam.Instance.SpeedChannelCount) + { + return; + } + if (SysParam.Instance.checkBoxTimeAll) + { + SetTimeGra_All(stand.tVib, SysParam.Instance.comboBoxTimeAll, (standNo + 1) + "号机架时域波形", standNo); + } + if (SysParam.Instance.checkBoxTimeL) + { + SetTimeGra_LMH(stand.tVib, stand.band_Fre_L1, stand.band_Fre_L2, SysParam.Instance.comboBoxTimeL, (standNo + 1) + "号机架低频时域", standNo); + } + if (SysParam.Instance.checkBoxTimeM) + { + SetTimeGra_LMH(stand.tVib, stand.band_Fre_M1, stand.band_Fre_M2, SysParam.Instance.comboBoxTimeM, (standNo + 1) + "号机架中频时域", standNo); + } + if (SysParam.Instance.checkBoxTimeH) + { + SetTimeGra_LMH(stand.tVib, stand.band_Fre_H1, stand.band_Fre_H2, SysParam.Instance.comboBoxTimeH, (standNo + 1) + "号机架高频时域", standNo); + } + if (SysParam.Instance.checkBoxTimeFre) + { + SetTimeGra_Fre(stand.tVib, SysParam.Instance.comboBoxTimeFre, (standNo + 1) + "号机架频谱"); + } + if (SysParam.Instance.checkBoxTimeFilt) + { + SetTimeGra_LMH(stand.tVib, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (standNo + 1) + "号机架带通滤波", standNo); + } + } + + private void OrderByChannel_Energy(Stand stand, int standNo) + { + if (standNo >= SysParam.Instance.SpeedChannelCount) + { + return; + } + if (SysParam.Instance.checkBoxEnergyAll) + { + energy_All(stand.list_Energy_All.ToArray(), SysParam.Instance.comboBoxEnergyAll, (standNo + 1) + "号机架全局能量"); + } + if (SysParam.Instance.checkBoxEnergyL) + { + energy_LMH(stand.list_Energy_L.ToArray(), stand.list_Alarm_L.ToArray(), stand.list_Defect_L.ToArray(), SysParam.Instance.comboBoxEnergyL, (standNo + 1) + "号机架低频能量"); + } + if (SysParam.Instance.checkBoxEnergyM) + { + energy_LMH(stand.list_Energy_M.ToArray(), stand.list_Alarm_M.ToArray(), stand.list_Defect_M.ToArray(), SysParam.Instance.comboBoxEnergyM, (standNo + 1) + "号机架中频能量"); + } + if (SysParam.Instance.checkBoxEnergyH) + { + energy_LMH(stand.list_Energy_H.ToArray(), stand.list_Alarm_H.ToArray(), stand.list_Defect_H.ToArray(), SysParam.Instance.comboBoxEnergyH, (standNo + 1) + "号机架高频能量"); + } + if (SysParam.Instance.checkBoxEnergySpeed && (standNo < SysParam.Instance.SpeedChannelCount)) + { + energy_Speed(stand.list_Energy_Speed.ToArray(), SysParam.Instance.comboBoxEnergySpeed, (standNo + 1) + "号机架速度"); + } + } + + private void OrderByKind_Time() + { + if (SysParam.Instance.checkBoxTimeAll) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_All(mac.Stand[i].tVib, SysParam.Instance.comboBoxTimeAll, (i + 1) + "号机架时域波形", i); + } + } + } + if (SysParam.Instance.checkBoxTimeL) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_L1, mac.Stand[i].band_Fre_L2, SysParam.Instance.comboBoxTimeL, (i + 1) + "号机架低频时域", i); + } + } + } + if (SysParam.Instance.checkBoxTimeM) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_M1, mac.Stand[i].band_Fre_M2, SysParam.Instance.comboBoxTimeM, (i + 1) + "号机架中频时域", i); + } + } + } + if (SysParam.Instance.checkBoxTimeH) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_H1, mac.Stand[i].band_Fre_H2, SysParam.Instance.comboBoxTimeH, (i + 1) + "号机架高频时域", i); + } + } + } + if (SysParam.Instance.checkBoxTimeFre) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_Fre(mac.Stand[i].tVib, SysParam.Instance.comboBoxTimeFre, (i + 1) + "号机架频谱"); + } + } + } + if (SysParam.Instance.checkBoxTimeFilt) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_LMH(mac.Stand[i].tVib, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (i + 1) + "号机架带通滤波", i); + } + } + } + } + + private void OrderByKind_Time2() + { + if (SysParam.Instance.checkBoxTimeAll) + { + for (int i = 0; i = 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_All(mac.Stand[i].tVib, SysParam.Instance.comboBoxTimeAll, (i + 1) + "号机架时域波形", i); + } + } + } + if (SysParam.Instance.checkBoxTimeL) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_L1, mac.Stand[i].band_Fre_L2, SysParam.Instance.comboBoxTimeL, (i + 1) + "号机架低频时域", i); + } + } + } + if (SysParam.Instance.checkBoxTimeM) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_M1, mac.Stand[i].band_Fre_M2, SysParam.Instance.comboBoxTimeM, (i + 1) + "号机架中频时域", i); + } + } + } + if (SysParam.Instance.checkBoxTimeH) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_H1, mac.Stand[i].band_Fre_H2, SysParam.Instance.comboBoxTimeH, (i + 1) + "号机架高频时域", i); + } + } + } + if (SysParam.Instance.checkBoxTimeFre) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_Fre(mac.Stand[i].tVib, SysParam.Instance.comboBoxTimeFre, (i + 1) + "号机架频谱"); + } + } + } + if (SysParam.Instance.checkBoxTimeFilt) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_LMH(mac.Stand[i].tVib, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (i + 1) + "号机架带通滤波", i); + } + } + } + } + + + private void OrderByKind_Energy() + { + if (SysParam.Instance.checkBoxEnergyAll) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_All(mac.Stand[i].list_Energy_All.ToArray(), SysParam.Instance.comboBoxEnergyAll, (i + 1) + "号机架全局能量"); + } + } + } + if (SysParam.Instance.checkBoxEnergyL) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(mac.Stand[i].list_Energy_L.ToArray(), mac.Stand[i].list_Alarm_L.ToArray(), mac.Stand[i].list_Defect_L.ToArray(), SysParam.Instance.comboBoxEnergyL, (i + 1) + "号机架低频能量"); + } + } + } + if (SysParam.Instance.checkBoxEnergyM) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(mac.Stand[i].list_Energy_M.ToArray(), mac.Stand[i].list_Alarm_M.ToArray(), mac.Stand[i].list_Defect_M.ToArray(), SysParam.Instance.comboBoxEnergyM, (i + 1) + "号机架中频能量"); + } + } + } + if (SysParam.Instance.checkBoxEnergyH) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(mac.Stand[i].list_Energy_H.ToArray(), mac.Stand[i].list_Alarm_H.ToArray(), mac.Stand[i].list_Defect_H.ToArray(), SysParam.Instance.comboBoxEnergyH, (i + 1) + "号机架高频能量"); + } + } + } + if (SysParam.Instance.checkBoxEnergySpeed) + { + //for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_Speed(mac.Stand[i].list_Energy_Speed.ToArray(), SysParam.Instance.comboBoxEnergySpeed, (i + 1) + "号机架速度"); + } + } + } + } + + private void OrderByKind_Energy2() + { + if (SysParam.Instance.checkBoxEnergyAll) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_All(mac.Stand[i].list_Energy_All.ToArray(), SysParam.Instance.comboBoxEnergyAll, (i + 1) + "号机架全局能量"); + } + } + } + if (SysParam.Instance.checkBoxEnergyL) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(mac.Stand[i].list_Energy_L.ToArray(), mac.Stand[i].list_Alarm_L.ToArray(), mac.Stand[i].list_Defect_L.ToArray(), SysParam.Instance.comboBoxEnergyL, (i + 1) + "号机架低频能量"); + } + } + } + if (SysParam.Instance.checkBoxEnergyM) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(mac.Stand[i].list_Energy_M.ToArray(), mac.Stand[i].list_Alarm_M.ToArray(), mac.Stand[i].list_Defect_M.ToArray(), SysParam.Instance.comboBoxEnergyM, (i + 1) + "号机架中频能量"); + } + } + } + if (SysParam.Instance.checkBoxEnergyH) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(mac.Stand[i].list_Energy_H.ToArray(), mac.Stand[i].list_Alarm_H.ToArray(), mac.Stand[i].list_Defect_H.ToArray(), SysParam.Instance.comboBoxEnergyH, (i + 1) + "号机架高频能量"); + } + } + } + if (SysParam.Instance.checkBoxEnergySpeed) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_Speed(mac.Stand[i].list_Energy_Speed.ToArray(), SysParam.Instance.comboBoxEnergySpeed, (i + 1) + "号机架速度"); + } + } + } + } + + private void SetTimeGra_All(double[] tx, string yAxisVal, string title, int standno) + { + //DevelopLog.DeBug.WriteLogFile("onlineview", "###############"); + gpt = new GraphPane(); + gpt.CurveList.Clear(); + //辊系故障判别线 + if (SysParam.Instance.rollLineVisible && mac.Stand[standno].speed > 5) + { + double rotatetimeB, rotatetimeM, rotatetimeW; + rotatetimeB = (Math.PI * (mac.Stand[standno].rollDiameterBL + mac.Stand[standno].rollDiameterBU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//支撑辊的旋转周期 + rotatetimeM = (Math.PI * (mac.Stand[standno].rollDiameterML + mac.Stand[standno].rollDiameterMU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//中间辊的旋转周期 + rotatetimeW = (Math.PI * (mac.Stand[standno].rollDiameterWL + mac.Stand[standno].rollDiameterWU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//工作辊的旋转周期 + + //DevelopLog.DeBug.WriteLogFile("onlineview", rotatetimeB.ToString()); + //DevelopLog.DeBug.WriteLogFile("onlineview", rotatetimeM.ToString()); + //DevelopLog.DeBug.WriteLogFile("onlineview", rotatetimeW.ToString()); + + if (rotatetimeB < mac.xAxisTime[mac.xAxisTime.Length - 1]) + { + double[] x = { rotatetimeB, rotatetimeB }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("支撑辊(" + rotatetimeB.ToString("0.000") + "s)", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; + } + if (rotatetimeM < mac.xAxisTime[mac.xAxisTime.Length - 1]) + { + double[] x = { rotatetimeM, rotatetimeM }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("中间辊(" + rotatetimeM.ToString("0.000") + "s)", x, y, SysParam.Instance.colorMidRoll).Line.Width = 2f; + } + if (rotatetimeW < mac.xAxisTime[mac.xAxisTime.Length - 1]) + { + double[] x = { rotatetimeW, rotatetimeW }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("工作辊(" + rotatetimeW.ToString("0.000") + "s)", x, y, SysParam.Instance.colorWorkRoll).Line.Width = 2f; + } + } + gpt.AddCurve("", mac.xAxisTime, tx, SysParam.Instance.colorTime, SymbolType.None); + gpt.XAxis.Scale.Min = 0; + gpt.XAxis.Scale.Max = mac.xAxisTime[mac.xAxisTime.Length - 1]; + gpt.YAxis.Scale.Min = -Convert.ToSingle(yAxisVal); + gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); + gpt.Title.Text = title; + GraPaneSetting(gpt); + master.Add(gpt); + } + + private void SetTimeGra_LMH(double[] tx, int fre_1, int fre_2, string yAxisVal, string title, int standno) + { + gpt = new GraphPane(); + int length = tx.Length; + double[] llf = new double[length]; + llf = SysParam.Instance.filterAlgor(tx, fre_1, fre_2, length, 100, Convert.ToInt32(SysParam.Instance.sampleFre)); + gpt.CurveList.Clear(); + + //辊系故障判别线 + if (SysParam.Instance.rollLineVisible && mac.Stand[standno].speed > 5) + { + double rotatetimeB, rotatetimeM, rotatetimeW; + rotatetimeB = (Math.PI * (mac.Stand[standno].rollDiameterBL + mac.Stand[standno].rollDiameterBU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//支撑辊的旋转周期 + rotatetimeM = (Math.PI * (mac.Stand[standno].rollDiameterML + mac.Stand[standno].rollDiameterMU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//中间辊的旋转周期 + rotatetimeW = (Math.PI * (mac.Stand[standno].rollDiameterWL + mac.Stand[standno].rollDiameterWU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//工作辊的旋转周期 + + if (rotatetimeB < mac.xAxisTime[mac.xAxisTime.Length - 1]) + { + double[] x = { rotatetimeB, rotatetimeB }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("支撑辊(" + rotatetimeB.ToString("0.000") + "s)", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; + } + if (rotatetimeM < mac.xAxisTime[mac.xAxisTime.Length - 1]) + { + double[] x = { rotatetimeM, rotatetimeM }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("中间辊(" + rotatetimeM.ToString("0.000") + "s)", x, y, SysParam.Instance.colorMidRoll).Line.Width = 2f; + } + if (rotatetimeW < mac.xAxisTime[mac.xAxisTime.Length - 1]) + { + double[] x = { rotatetimeW, rotatetimeW }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("工作辊(" + rotatetimeW.ToString("0.000") + "s)", x, y, SysParam.Instance.colorWorkRoll).Line.Width = 2f; + } + } + + + gpt.AddCurve("", mac.xAxisTime, llf, SysParam.Instance.colorTime, SymbolType.None); + gpt.XAxis.Scale.Min = 0; + gpt.XAxis.Scale.Max = mac.xAxisTime[mac.xAxisTime.Length - 1]; ; + gpt.YAxis.Scale.Min = -Convert.ToSingle(yAxisVal); + gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); + gpt.Title.Text = title; + GraPaneSetting(gpt); + master.Add(gpt); + } + + private void SetTimeGra_Fre(double[] tx, string yAxisVal, string title) + { + gpt = new GraphPane(); + gpt.CurveList.Clear(); + PointPairList list_f = new PointPairList(); + list_f.Clear(); + int myLength = tx.Length; + int length = Convert.ToInt32(Math.Pow(2, SysParam.Instance.N2M(myLength))); + double[] f = new double[length]; + double[] tt = new double[length]; + for (int i = 0; i < length; i++) + { + tt[i] = tx[myLength - length + i]; + } + SysParam.Instance.FFT(tt, f, length, 1); + for (int i = 0; i < length / 2; i++) + { + f[i] = 2 * Math.Sqrt(tt[i] * tt[i] + f[i] * f[i]) / length; + list_f.Add(Convert.ToDouble(i) * SysParam.Instance.sampleFre / length, f[i]); + } + gpt.AddCurve("", list_f, SysParam.Instance.colorFre, SymbolType.None); + gpt.XAxis.Scale.Max = SysParam.Instance.sampleFre / 2; + gpt.XAxis.Scale.Min = 0; + gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); + gpt.YAxis.Scale.Min = 0; + gpt.Title.Text = title; + GraPaneSetting(gpt); + master.Add(gpt); + } + + private void energy_All(double[] energyList, string yAxisVal, string title) + { + gpt = new GraphPane(); + gpt.CurveList.Clear(); + if (mac.list_CutTime.Count > 0) + { + PointPairList templist = new PointPairList(); + for (int i = 0; i < mac.list_CutTime.Count; i++) + { + templist.Add(mac.list_CutTime[i], Convert.ToDouble(yAxisVal)); + } + gpt.AddStick("剪切线", templist, SysParam.Instance.colorCut).Line.Width = 2f; + } + gpt.AddCurve("", xAxisEnergy, energyList, SysParam.Instance.colorEnergy, SymbolType.None); + gpt.XAxis.Scale.Min = xAxisEnergy[0]; + gpt.XAxis.Scale.Max = xAxisEnergy[xAxisEnergy.Length - 1]; + gpt.XAxis.Type = AxisType.Date; + gpt.XAxis.Scale.Format = "HH:mm:ss"; + gpt.YAxis.Scale.Min = 0.0; + gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); + gpt.Title.Text = title; + GraPaneSetting(gpt); + this.master.Add(gpt); + } + + private void energy_LMH(double[] lineList, double[] alarmList, double[] defectList, string yAxisVal, string title) + { + gpt = new GraphPane(); + gpt.CurveList.Clear(); + if (mac.list_CutTime.Count > 0) + { + PointPairList templist = new PointPairList(); + for (int i = 0; i < mac.list_CutTime.Count; i++) + { + templist.Add(mac.list_CutTime[i], Convert.ToDouble(yAxisVal)); + } + gpt.AddStick("剪切线", templist, SysParam.Instance.colorCut).Line.Width = 2f; + } + gpt.AddCurve("缺陷线", xAxisEnergy, defectList, SysParam.Instance.colorDefect, SymbolType.None).Line.Width = 2f; + gpt.AddCurve("报警线", xAxisEnergy, alarmList, SysParam.Instance.colorAlarm, SymbolType.None).Line.Width = 2f; + gpt.AddCurve("", xAxisEnergy, lineList, SysParam.Instance.colorEnergy, SymbolType.None); + gpt.XAxis.Scale.Min = xAxisEnergy[0]; + gpt.XAxis.Scale.Max = xAxisEnergy[xAxisEnergy.Length - 1]; + gpt.XAxis.Type = AxisType.Date; + gpt.XAxis.Scale.Format = "HH:mm:ss"; + gpt.YAxis.Scale.Min = 0.0; + gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); + gpt.Title.Text = title; + GraPaneSetting(gpt); + this.master.Add(gpt); + } + + private void energy_Speed(double[] speedList, string yAxisVal, string title) + { + gpt = new GraphPane(); + gpt.CurveList.Clear(); + if (mac.list_CutTime.Count > 0) + { + PointPairList templist = new PointPairList(); + for (int i = 0; i < mac.list_CutTime.Count; i++) + { + templist.Add(mac.list_CutTime[i], Convert.ToDouble(yAxisVal)); + } + gpt.AddStick("剪切线", templist, SysParam.Instance.colorCut).Line.Width = 2f; + } + gpt.AddCurve("速度", xAxisEnergy, speedList, SysParam.Instance.colorSpeed, SymbolType.None).Line.Width = 2f; + gpt.XAxis.Scale.Min = xAxisEnergy[0]; + gpt.XAxis.Scale.Max = xAxisEnergy[xAxisEnergy.Length - 1]; + gpt.XAxis.Type = AxisType.Date; + gpt.XAxis.Scale.Format = "HH:mm:ss"; + gpt.YAxis.Scale.Min = 0.0; + gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); + gpt.Title.Text = title; + GraPaneSetting(gpt); + this.master.Add(gpt); + } + + private static void GraPaneSetting(GraphPane tempGraph) + { + float fontsize = SysParam.Instance.fontSize; + Color myFontColor = SysParam.Instance.colorFont; + //tempGraph.Margin.All = 2f; + tempGraph.Fill.IsVisible = false; + tempGraph.IsFontsScaled = false; + tempGraph.TitleGap = 0f; + tempGraph.Margin.All = 3f; + tempGraph.Border.Color = Color.FromArgb(127, myFontColor); + + tempGraph.Chart.Border.Color = myFontColor; + tempGraph.Chart.Fill.IsVisible = false; + + tempGraph.Title.FontSpec.FontColor = myFontColor; + tempGraph.Title.FontSpec.Family = "微软雅黑"; + tempGraph.Title.FontSpec.IsBold = false; + tempGraph.Title.FontSpec.Size = 1.5f * fontsize; + + tempGraph.Legend.Border.IsVisible = false; + tempGraph.Legend.Position = LegendPos.InsideTopLeft; + tempGraph.Legend.IsHStack = false; + tempGraph.Legend.IsShowLegendSymbols = false; + tempGraph.Legend.FontSpec.Size = 0.8f * fontsize; + tempGraph.Legend.Fill.IsVisible = false; + tempGraph.Legend.FontSpec.FontColor = myFontColor; + tempGraph.Legend.FontSpec.Family = "微软雅黑"; + + tempGraph.XAxis.Title.FontSpec.Family = "微软雅黑"; + tempGraph.XAxis.Title.FontSpec.IsBold = false; + tempGraph.XAxis.Scale.FontSpec.FontColor = myFontColor; + tempGraph.XAxis.Scale.FontSpec.Size = fontsize; + tempGraph.XAxis.Title.IsVisible = false; + tempGraph.XAxis.MajorTic.IsOutside = false; + tempGraph.XAxis.MajorTic.Color = Color.FromArgb(127, myFontColor); + tempGraph.XAxis.MinorTic.IsAllTics = false; + + tempGraph.YAxis.Title.FontSpec.Family = "微软雅黑"; + tempGraph.YAxis.Title.FontSpec.IsBold = false; + tempGraph.YAxis.Scale.FontSpec.FontColor = myFontColor; + tempGraph.YAxis.Scale.FontSpec.Size = fontsize; + tempGraph.YAxis.Title.IsVisible = false; + tempGraph.YAxis.MajorTic.IsOutside = false; + tempGraph.YAxis.MajorTic.Color = Color.FromArgb(127, myFontColor); + tempGraph.YAxis.MinorTic.IsAllTics = false; + tempGraph.YAxis.MajorGrid.IsZeroLine = false; + + if (SysParam.Instance.BackgroundGridOn) + { + tempGraph.XAxis.MajorGrid.IsVisible = true; + tempGraph.XAxis.MajorGrid.Color = Color.FromArgb(127, myFontColor); + tempGraph.YAxis.MajorGrid.IsVisible = true; + tempGraph.YAxis.MajorGrid.Color = Color.FromArgb(127, myFontColor); + } + else + { + tempGraph.XAxis.MajorGrid.IsVisible = false; + tempGraph.YAxis.MajorGrid.IsVisible = false; + } + } + + + + private string zedGraphControl1_PointValueEvent(ZedGraphControl sender, GraphPane pane, CurveItem curve, int iPt) + { + if (pane.Title.Text.Contains("能量")) + { + if (iPt < curve.Points.Count) + { + PointPair pt = curve[iPt]; + return (DateTime.FromOADate(pt.X).ToString("HH:mm:ss.ff") + " " + pt.Y.ToString("0.00000") + "g " + mac.distance_Pause[iPt].ToString("0.0") + "m"); + } + else + { + return ""; + } + } + else if (pane.Title.Text.Contains("速度")) + { + if (iPt < curve.Points.Count) + { + PointPair pt = curve[iPt]; + return (DateTime.FromOADate(pt.X).ToString("HH:mm:ss.ff") + " " + pt.Y.ToString("0.0") + "m/min " + mac.distance_Pause[iPt].ToString("0.0") + "m"); + } + else + { + return ""; + } + } + else if (pane.Title.Text.Contains("频谱")) + { + if (iPt < curve.Points.Count) + { + PointPair pt = curve[iPt]; + return (pt.X.ToString("0.0") + "Hz " + pt.Y.ToString("0.00000") + "g"); + } + else + { + return ""; + } + + } + else + { + if (iPt < curve.Points.Count) + { + PointPair pt = curve[iPt]; + return (pt.X.ToString("0.000") + "s " + pt.Y.ToString("0.00000") + "g"); + } + else + { + return ""; + } + } + } + + private void zedGraphControl1_ContextMenuBuilder(ZedGraphControl sender, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectState objState) + { + for (int i = 0; i < menuStrip.Items.Count; i++) + { + switch (menuStrip.Items[i].Tag.ToString().Trim()) + { + case "copy": + menuStrip.Items[i].Text = "复制图片"; + break; + case "show_val": + menuStrip.Items[i].Text = "查看坐标"; + break; + case "save_as": + menuStrip.Items[i].Text = "图片保存至..."; + break; + case "page_setup": + menuStrip.Items[i].Text = "页面设置"; + break; + case "print": + menuStrip.Items[i].Text = "打印"; + break; + case "unzoom": + menuStrip.Items[i].Text = "还原缩放"; + break; + case "undo_all": + menuStrip.Items[i].Text = @"还原缩放\移动"; + break; + case "set_default": + menuStrip.Items[i].Text = "恢复默认设置"; + break; + } + } + } + + public void IsShowMenuStrip(bool IsShow) + { + zedGraphControl1.IsShowContextMenu = IsShow; + } + } +} diff --git a/Host/Plotting.designer.cs b/Host/Plotting.designer.cs new file mode 100644 index 0000000..0615109 --- /dev/null +++ b/Host/Plotting.designer.cs @@ -0,0 +1,75 @@ +namespace CRVM +{ + partial class Plotting + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Plotting)); + this.zedGraphControl1 = new ZedGraph.ZedGraphControl(); + this.SuspendLayout(); + // + // zedGraphControl1 + // + this.zedGraphControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.zedGraphControl1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.zedGraphControl1.Location = new System.Drawing.Point(0, 0); + this.zedGraphControl1.Margin = new System.Windows.Forms.Padding(0); + this.zedGraphControl1.Name = "zedGraphControl1"; + this.zedGraphControl1.ScrollGrace = 0D; + this.zedGraphControl1.ScrollMaxX = 0D; + this.zedGraphControl1.ScrollMaxY = 0D; + this.zedGraphControl1.ScrollMaxY2 = 0D; + this.zedGraphControl1.ScrollMinX = 0D; + this.zedGraphControl1.ScrollMinY = 0D; + this.zedGraphControl1.ScrollMinY2 = 0D; + this.zedGraphControl1.Size = new System.Drawing.Size(762, 573); + this.zedGraphControl1.TabIndex = 0; + this.zedGraphControl1.ContextMenuBuilder += new ZedGraph.ZedGraphControl.ContextMenuBuilderEventHandler(this.zedGraphControl1_ContextMenuBuilder); + this.zedGraphControl1.PointValueEvent += new ZedGraph.ZedGraphControl.PointValueHandler(this.zedGraphControl1_PointValueEvent); + // + // Plotting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(762, 573); + this.Controls.Add(this.zedGraphControl1); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "Plotting"; + this.Text = "Plotting"; + this.Load += new System.EventHandler(this.Plotting_Load); + this.ResumeLayout(false); + + } + + #endregion + + private ZedGraph.ZedGraphControl zedGraphControl1; + } +} \ No newline at end of file diff --git a/Host/Plotting.resx b/Host/Plotting.resx new file mode 100644 index 0000000..3fba45a --- /dev/null +++ b/Host/Plotting.resx @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/PlottingReview.cs b/Host/PlottingReview.cs new file mode 100644 index 0000000..1d90ca3 --- /dev/null +++ b/Host/PlottingReview.cs @@ -0,0 +1,1201 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using ZedGraph; +using CRVM.SIDExcuter; +using CRVM.Entity; +using CRVM.Utility; + +namespace CRVM +{ + public partial class PlottingReview : WeifenLuo.WinFormsUI.Docking.DockContent + { + private int oneStepPoints; + private double timeSpan; + private int displayPoints; + private int indexPos = 0; + private int orient = 1;//正为正向,负为反向 + private int coeff = 1;//步数放大比例 + private MasterPane master; + private GraphPane gpt; + IViewHelper fileHelper; + private Machine macReview = null; + + Color[] rollLineColor = { Color.FromArgb(20, 25, 244), Color.FromArgb(11, 147, 47), Color.FromArgb(209, 184, 37) }; + + public PlottingReview(IViewHelper fileHelper, Machine mac) + { + this.fileHelper = fileHelper; + this.macReview = mac; + timeSpan = Convert.ToDouble(SysParam.Instance.reTimeSpan); + displayPoints = Convert.ToInt32(timeSpan * SysParam.Instance.reSampleFre); + oneStepPoints = SysParam.Instance.reSamplePoint; + InitializeComponent(); + } + + private void Plot_Load(object sender, EventArgs e) + { + LoadIni(); + } + + private void LoadIni() + { + indexPos = 0; + btLeft.Enabled = false; + btRight.Enabled = false; + btPause.Enabled = false; + btStart.Enabled = true; + btStop.Enabled = false; + stepBar.Maximum = fileHelper.signalLengthOrigin - Convert.ToInt32(SysParam.Instance.reTimeSpan) * SysParam.Instance.reSampleFre; + stepBar.Minimum = 0; + stepBar.LargeChange = 5 * oneStepPoints; + stepBar.SmallChange = oneStepPoints; + GraRefresh(); + } + + + public void GraRefresh() + { + SubExcute(); + } + + private void SubExcute() + { + if (fileHelper != null) + { + //zedGraphControl1.IsShowPointValues = false; + master = new MasterPane(); + master.PaneList.Clear(); + + if (SysParam.Instance.orderByOther) + { + if (SysParam.Instance.orderByChannel) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.channelCount - 1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + if (SysParam.Instance.checkBoxTime) + OrderByChannel_Time(macReview.Stand[i], i); + if (SysParam.Instance.checkBoxEnergy) + OrderByChannel_Energy(i); + } + } + } + else + { + if (SysParam.Instance.checkBoxTime) + OrderByKind_Time(); + if (SysParam.Instance.checkBoxEnergy) + OrderByKind_Energy(); + } + } + else if (SysParam.Instance.orderByStandnoR2L) + { + if (SysParam.Instance.checkBoxTime) + OrderByKind_Time(); + if (SysParam.Instance.checkBoxEnergy) + OrderByKind_Energy(); + } + else if (SysParam.Instance.orderByStandnoL2R) + { + if (SysParam.Instance.checkBoxTime) + OrderByKind_Time2(); + if (SysParam.Instance.checkBoxEnergy) + OrderByKind_Energy2(); + } + master.Border.IsVisible = false; + master.Margin.All = 3f; + master.InnerPaneGap = 3f; + master.Fill = new Fill(SysParam.Instance.colorBackgroud); + master.AxisChange(); + zedGraphControl1.MasterPane = master; + + if (SysParam.Instance.orderByStandnoR2L || SysParam.Instance.orderByStandnoL2R) + { + int colNumTemp = 0;//显示的列数,按机架排列 + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + { + if (SysParam.Instance.channel[i].ChChecked) + { + colNumTemp++; + } + } + + int picNumber = 0; + if (SysParam.Instance.checkBoxTime) + { + if (SysParam.Instance.checkBoxTimeAll) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeL) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeM) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeH) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeFre) + { + picNumber++; + } + if (SysParam.Instance.checkBoxTimeFilt) + { + picNumber++; + } + } + if (SysParam.Instance.checkBoxEnergy) + { + if (SysParam.Instance.checkBoxEnergyAll) + { + picNumber++; + } + if (SysParam.Instance.checkBoxEnergyL) + { + picNumber++; + } + if (SysParam.Instance.checkBoxEnergyM) + { + picNumber++; + } + if (SysParam.Instance.checkBoxEnergyH) + { + picNumber++; + } + if (SysParam.Instance.checkBoxEnergySpeed) + { + picNumber++; + } + } + if (picNumber == 0) + { + picNumber = 1; + } + zedGraphControl1.MasterPane.RowNum = picNumber; + + if (colNumTemp == 0 || colNumTemp > SysParam.Instance.SpeedChannelCount) + { + + } + else + { + zedGraphControl1.MasterPane.ColNum = colNumTemp; + } + + zedGraphControl1.MasterPane.SetLayout(zedGraphControl1.CreateGraphics(), PaneLayout.UserFormat); + } + else if (SysParam.Instance.orderByOther) + { + if (SysParam.Instance.orderBySingleColumn) + { + zedGraphControl1.MasterPane.SetLayout(zedGraphControl1.CreateGraphics(), PaneLayout.SingleColumn); + } + else + { + zedGraphControl1.MasterPane.SetLayout(zedGraphControl1.CreateGraphics(), PaneLayout.SquareRowPreferred); + } + } + zedGraphControl1.Height = ClientRectangle.Height; + zedGraphControl1.Refresh(); + //Console.WriteLine(DateTime.Now.ToString("mmss.fff")+"结束"); + } + } + + private void OrderByChannel_Time(Stand stand, int standNo) + { + if (standNo >= SysParam.Instance.SpeedChannelCount) + { + return; + } + double[] tvib = getData(standNo, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + GetAlarmParam(fileHelper.originSpeedList[standNo][indexPos], stand); + + for (int i = 0; i < displayPoints; i++) + { + tx[i] = x_min + Convert.ToDouble(i) / SysParam.Instance.reSampleFre; + } + if (SysParam.Instance.checkBoxTimeAll) + { + SetTimeGra_All(tx, tvib, x_min, x_max, SysParam.Instance.comboBoxTimeAll, (standNo + 1) + "号机架时域波形", standNo); + } + if (SysParam.Instance.checkBoxTimeL) + { + SetTimeGra_LMH(tx, tvib, x_min, x_max, stand.band_Fre_L1, stand.band_Fre_L2, SysParam.Instance.comboBoxTimeL, (standNo + 1) + "号机架低频时域", 5); + } + if (SysParam.Instance.checkBoxTimeM) + { + SetTimeGra_LMH(tx, tvib, x_min, x_max, stand.band_Fre_M1, stand.band_Fre_M2, SysParam.Instance.comboBoxTimeM, (standNo + 1) + "号机架中频时域", 5); + } + if (SysParam.Instance.checkBoxTimeH) + { + SetTimeGra_LMH(tx, tvib, x_min, x_max, stand.band_Fre_H1, stand.band_Fre_H2, SysParam.Instance.comboBoxTimeH, (standNo + 1) + "号机架高频时域", 5); + } + if (SysParam.Instance.checkBoxTimeFre) + { + SetTimeGra_Fre(tvib, SysParam.Instance.comboBoxTimeFre, (standNo + 1) + "号机架频谱"); + } + if (SysParam.Instance.checkBoxTimeFilt) + { + SetTimeGra_LMH(tx, tvib, x_min, x_max, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (standNo + 1) + "号机架带通滤波", standNo); + } + } + + /// + /// 倒叙 SysParam.Instance.SpeedChannelCount ~ 1 + /// + private void OrderByKind_Time() + { + if (SysParam.Instance.checkBoxTimeAll) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_All(tx, tvib, x_min, x_max, SysParam.Instance.comboBoxTimeAll, (i + 1) + "号机架时域波形", i); + } + } + } + if (SysParam.Instance.checkBoxTimeL) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); + SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_L1, macReview.Stand[i].band_Fre_L2, SysParam.Instance.comboBoxTimeL, (i + 1) + "号机架低频时域", 5); + } + } + } + if (SysParam.Instance.checkBoxTimeM) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); + SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_M1, macReview.Stand[i].band_Fre_M2, SysParam.Instance.comboBoxTimeM, (i + 1) + "号机架中频时域", 5); + } + } + } + if (SysParam.Instance.checkBoxTimeH) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); + SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_H1, macReview.Stand[i].band_Fre_H2, SysParam.Instance.comboBoxTimeH, (i + 1) + "号机架高频时域", 5); + } + } + } + if (SysParam.Instance.checkBoxTimeFre) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + SetTimeGra_Fre(tvib, SysParam.Instance.comboBoxTimeFre, (i + 1) + "号机架频谱"); + } + } + } + if (SysParam.Instance.checkBoxTimeFilt) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + SetTimeGra_LMH(tx, tvib, x_min, x_max, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (i + 1) + "号机架带通滤波", i); + } + } + } + } + + + /// + /// 顺序 1 ~ SysParam.Instance.SpeedChannelCount + /// + private void OrderByKind_Time2() + { + if (SysParam.Instance.checkBoxTimeAll) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + if (SysParam.Instance.channel[i].ChChecked) + { + SetTimeGra_All(tx, tvib, x_min, x_max, SysParam.Instance.comboBoxTimeAll, (i + 1) + "号机架时域波形", i); + } + } + } + if (SysParam.Instance.checkBoxTimeL) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); + SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_L1, macReview.Stand[i].band_Fre_L2, SysParam.Instance.comboBoxTimeL, (i + 1) + "号机架低频时域", 5); + } + } + } + if (SysParam.Instance.checkBoxTimeM) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); + SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_M1, macReview.Stand[i].band_Fre_M2, SysParam.Instance.comboBoxTimeM, (i + 1) + "号机架中频时域", 5); + } + } + } + if (SysParam.Instance.checkBoxTimeH) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); + SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_H1, macReview.Stand[i].band_Fre_H2, SysParam.Instance.comboBoxTimeH, (i + 1) + "号机架高频时域", 5); + } + } + } + if (SysParam.Instance.checkBoxTimeFre) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + SetTimeGra_Fre(tvib, SysParam.Instance.comboBoxTimeFre, (i + 1) + "号机架频谱"); + } + } + } + if (SysParam.Instance.checkBoxTimeFilt) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + double[] tvib = getData(i, indexPos, displayPoints); + double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; + double x_max = x_min + timeSpan; + double[] tx = new double[displayPoints]; + for (int j = 0; j < displayPoints; j++) + { + tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; + } + SetTimeGra_LMH(tx, tvib, x_min, x_max, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (i + 1) + "号机架带通滤波", i); + } + } + } + } + private void OrderByChannel_Energy(int standNo) + { + if (standNo >= SysParam.Instance.SpeedChannelCount) + { + return; + } + if (SysParam.Instance.checkBoxEnergyAll) + { + energy_All(fileHelper.energyData, SysParam.Instance.comboBoxEnergyAll, standNo); + } + if (SysParam.Instance.checkBoxEnergyL) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyL, standNo, 0, "低频"); + } + if (SysParam.Instance.checkBoxEnergyM) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyM, standNo, 1, "中频"); + } + if (SysParam.Instance.checkBoxEnergyH) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyH, standNo, 2, "高频"); + } + if (SysParam.Instance.checkBoxEnergySpeed && (standNo < SysParam.Instance.SpeedChannelCount)) + { + energy_Speed(fileHelper.energyData, SysParam.Instance.comboBoxEnergySpeed, standNo); + } + } + private void OrderByKind_Energy() + { + if (SysParam.Instance.checkBoxEnergyAll) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_All(fileHelper.energyData, SysParam.Instance.comboBoxEnergyAll, i); + } + } + } + if (SysParam.Instance.checkBoxEnergyL) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyL, i, 0, "低频"); + } + } + } + if (SysParam.Instance.checkBoxEnergyM) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyM, i, 1, "中频"); + } + } + } + if (SysParam.Instance.checkBoxEnergyH) + { + //for (int i = 0; i < SysParam.Instance.channelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyH, i, 2, "高频"); + } + } + } + if (SysParam.Instance.checkBoxEnergySpeed) + { + //for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_Speed(fileHelper.energyData, SysParam.Instance.comboBoxEnergySpeed, i); + } + } + } + } + + private void OrderByKind_Energy2() + { + if (SysParam.Instance.checkBoxEnergyAll) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_All(fileHelper.energyData, SysParam.Instance.comboBoxEnergyAll, i); + } + } + } + if (SysParam.Instance.checkBoxEnergyL) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyL, i, 0, "低频"); + } + } + } + if (SysParam.Instance.checkBoxEnergyM) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyM, i, 1, "中频"); + } + } + } + if (SysParam.Instance.checkBoxEnergyH) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyH, i, 2, "高频"); + } + } + } + if (SysParam.Instance.checkBoxEnergySpeed) + { + for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) + //for (int i = 4; i >= 0; i--) + { + if (SysParam.Instance.channel[i].ChChecked) + { + energy_Speed(fileHelper.energyData, SysParam.Instance.comboBoxEnergySpeed, i); + } + } + } + } + private void SetTimeGra_All(double[] tx, double[] lineList, double xmin, double xmax, string yAxisVal, string title, int standno) + { + if (standno >= SysParam.Instance.SpeedChannelCount) + { + return; + } + DevelopLog.DeBug.WriteLogFile("review", "XXXXXXXXXX"); + gpt = new GraphPane(); + gpt.CurveList.Clear(); + if (standno < SysParam.Instance.SpeedChannelCount) + { + //辊系故障判别线 + if (SysParam.Instance.rollLineVisible && fileHelper.originSpeedList[standno][indexPos] > 5) + { + double rotatetimeB, rotatetimeM, rotatetimeW; + rotatetimeB = (Math.PI * (macReview.Stand[standno].rollDiameterBL + macReview.Stand[standno].rollDiameterBU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//支撑辊的旋转周期 + rotatetimeM = (Math.PI * (macReview.Stand[standno].rollDiameterML + macReview.Stand[standno].rollDiameterMU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//中间辊的旋转周期 + rotatetimeW = (Math.PI * (macReview.Stand[standno].rollDiameterWL + macReview.Stand[standno].rollDiameterWU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//工作辊的旋转周期 + + if (rotatetimeB < timeSpan) + { + double[] x = { rotatetimeB + xmin, rotatetimeB + xmin }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("支撑辊(" + rotatetimeB.ToString("0.000") + "s)", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; + } + if (rotatetimeM < timeSpan) + { + double[] x = { rotatetimeM + xmin, rotatetimeM + xmin }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("中间辊(" + rotatetimeM.ToString("0.000") + "s)", x, y, SysParam.Instance.colorMidRoll).Line.Width = 2f; + } + if (rotatetimeW < timeSpan) + { + double[] x = { rotatetimeW + xmin, rotatetimeW + xmin }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("工作辊(" + rotatetimeW.ToString("0.000") + "s)", x, y, SysParam.Instance.colorWorkRoll).Line.Width = 2f; + } + } + } + gpt.AddCurve("", tx, lineList, SysParam.Instance.colorTime, SymbolType.None); + gpt.XAxis.Scale.Min = xmin; + gpt.XAxis.Scale.Max = xmax; + gpt.YAxis.Scale.Min = -Convert.ToSingle(yAxisVal); + gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); + gpt.Title.Text = title; + GraPaneSetting(gpt); + master.Add(gpt); + } + + private void SetTimeGra_LMH(double[] tx, double[] lineList, double xmin, double xmax, int fre_1, int fre_2, string yAxisVal, string title, int standno) + { + if (standno >= SysParam.Instance.SpeedChannelCount) + { + return; + } + gpt = new GraphPane(); + gpt.CurveList.Clear(); + if (standno < SysParam.Instance.SpeedChannelCount) + { + //辊系故障判别线 + if (SysParam.Instance.rollLineVisible && fileHelper.originSpeedList[standno][indexPos] > 5) + { + double rotatetimeB, rotatetimeM, rotatetimeW; + rotatetimeB = (Math.PI * (macReview.Stand[standno].rollDiameterBL + macReview.Stand[standno].rollDiameterBU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//支撑辊的旋转周期 + rotatetimeM = (Math.PI * (macReview.Stand[standno].rollDiameterML + macReview.Stand[standno].rollDiameterMU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//中间辊的旋转周期 + rotatetimeW = (Math.PI * (macReview.Stand[standno].rollDiameterWL + macReview.Stand[standno].rollDiameterWU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//工作辊的旋转周期 + + if (rotatetimeB < timeSpan) + { + double[] x = { rotatetimeB + xmin, rotatetimeB + xmin }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("支撑辊", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; + } + if (rotatetimeM < timeSpan) + { + double[] x = { rotatetimeM + xmin, rotatetimeM + xmin }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("中间辊", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; + } + if (rotatetimeW < timeSpan) + { + double[] x = { rotatetimeW + xmin, rotatetimeW + xmin }; + double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; + gpt.AddStick("工作辊", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; + } + } + } + int length = lineList.Length; + //double[] tXAxis = new double[length]; + double[] llf; + llf = SysParam.Instance.filterAlgor(lineList, fre_1, fre_2, length, 100, Convert.ToInt32(SysParam.Instance.reSampleFre)); + //for (int i = 0; i < length; i++) + //{ + // tXAxis[i] = Convert.ToDouble(i) / SysParam.Instance.sampleFre; + //} + gpt.AddCurve("", tx, llf, SysParam.Instance.colorTime, SymbolType.None); + gpt.XAxis.Scale.Min = xmin; + gpt.XAxis.Scale.Max = xmax; + gpt.YAxis.Scale.Min = -Convert.ToSingle(yAxisVal); + gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); + gpt.YAxis.Scale.Format = "90.99g"; + gpt.Title.Text = title; + GraPaneSetting(gpt); + master.Add(gpt); + } + + private void SetTimeGra_Fre(double[] lineList, string yAxisVal, string title) + { + gpt = new GraphPane(); + gpt.CurveList.Clear(); + PointPairList list_f = new PointPairList(); + list_f.Clear(); + int orgLength = lineList.Length; + int length = Convert.ToInt32(Math.Pow(2, SysParam.Instance.N2M(orgLength))); + double[] f = new double[length]; + double[] tt = new double[length]; + for (int i = 0; i < length; i++) + { + tt[i] = lineList[orgLength - length + i]; + } + SysParam.Instance.FFT(tt, f, length, 1); + for (int i = 0; i < length / 2; i++) + { + f[i] = 2 * Math.Sqrt(tt[i] * tt[i] + f[i] * f[i]) / length; + list_f.Add(Convert.ToDouble(i) * SysParam.Instance.reSampleFre / length, f[i]); + } + gpt.AddCurve("", list_f, SysParam.Instance.colorFre, SymbolType.None); + gpt.XAxis.Scale.Max = 1000; + gpt.XAxis.Scale.Min = 0; + gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); + gpt.YAxis.Scale.Min = 0; + gpt.Title.Text = title; + GraPaneSetting(gpt); + master.Add(gpt); + } + private void energy_All(double[,] lineList, string yAxisVal, int stdNo) + { + gpt = new GraphPane(); + gpt.CurveList.Clear(); + int length = fileHelper.signalLengthEnergy; + double[] tx = new double[length]; + double[] ty = new double[length]; + for (int i = 0; i < length; i++) + { + tx[i] = i * SysParam.Instance.reSamplePoint / Convert.ToDouble(SysParam.Instance.reSampleFre); + ty[i] = lineList[stdNo * 8 + 1, i]; + } + gpt.AddCurve("", tx, ty, SysParam.Instance.colorEnergy, SymbolType.None); + gpt.XAxis.Scale.Min = 0.0; + gpt.XAxis.Scale.Max = tx[length - 1]; + gpt.YAxis.Scale.Min = 0.0; + gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); + gpt.Title.Text = (stdNo + 1) + "号机架全局能量"; + GraPaneSetting(gpt); + this.master.Add(gpt); + } + + private void energy_LMH(double[,] lineList, string yAxisVal, int stdNo, int typeNo, string type) + { + gpt = new GraphPane(); + gpt.CurveList.Clear(); + int length = fileHelper.signalLengthEnergy; + double[] tx = new double[length]; + double[] ty = new double[length]; + double[] tyalarm = new double[length]; + for (int i = 0; i < length; i++) + { + tx[i] = i * SysParam.Instance.reSamplePoint / Convert.ToDouble(SysParam.Instance.reSampleFre); + ty[i] = lineList[stdNo * 8 + 2 + typeNo, i]; + tyalarm[i] = lineList[stdNo * 8 + 5 + typeNo, i]; + } + gpt.AddCurve("能量线", tx, ty, SysParam.Instance.colorEnergy, SymbolType.None); + gpt.AddCurve("报警线", tx, tyalarm, SysParam.Instance.colorAlarm, SymbolType.None).Line.Width = 2f; + + gpt.XAxis.Scale.Min = 0.0; + gpt.XAxis.Scale.Max = tx[length - 1]; + gpt.YAxis.Scale.Min = 0.0; + gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); + gpt.Title.Text = (stdNo + 1) + "号机架" + type + "能量"; + GraPaneSetting(gpt); + this.master.Add(gpt); + } + + private void energy_Speed(double[,] lineList, string yAxisVal, int stdNo) + { + gpt = new GraphPane(); + gpt.CurveList.Clear(); + int length = fileHelper.signalLengthEnergy; + double[] tx = new double[length]; + double[] ty = new double[length]; + for (int i = 0; i < length; i++) + { + tx[i] = i * SysParam.Instance.reSamplePoint / Convert.ToDouble(SysParam.Instance.reSampleFre); + ty[i] = lineList[stdNo * 8, i]; + } + gpt.AddCurve("", tx, ty, SysParam.Instance.colorSpeed, SymbolType.None).Line.IsSmooth = true; + gpt.XAxis.Scale.Min = 0.0; + gpt.XAxis.Scale.Max = tx[length - 1]; + gpt.YAxis.Scale.Min = 0.0; + gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); + gpt.Title.Text = (stdNo + 1) + "号机架速度"; + GraPaneSetting(gpt); + this.master.Add(gpt); + } + + private static void GraPaneSetting(GraphPane tempGraph) + { + float fontsize = SysParam.Instance.fontSize; + Color myFontColor = SysParam.Instance.colorFont; + //tempGraph.Margin.All = 2f; + tempGraph.Fill.IsVisible = false; + tempGraph.IsFontsScaled = false; + tempGraph.TitleGap = 0f; + tempGraph.Margin.All = 3f; + tempGraph.Border.Color = Color.FromArgb(127, myFontColor); + + tempGraph.Chart.Border.Color = myFontColor; + tempGraph.Chart.Fill.IsVisible = false; + + tempGraph.Title.FontSpec.FontColor = myFontColor; + tempGraph.Title.FontSpec.Family = "微软雅黑"; + tempGraph.Title.FontSpec.IsBold = false; + tempGraph.Title.FontSpec.Size = 1.2f * fontsize; + + tempGraph.Legend.Border.IsVisible = false; + tempGraph.Legend.Position = LegendPos.InsideTopLeft; + tempGraph.Legend.IsHStack = false; + tempGraph.Legend.IsShowLegendSymbols = false; + tempGraph.Legend.FontSpec.Size = 0.8f * fontsize; + tempGraph.Legend.Fill.IsVisible = false; + tempGraph.Legend.FontSpec.FontColor = myFontColor; + tempGraph.Legend.FontSpec.Family = "微软雅黑"; + + tempGraph.XAxis.Title.FontSpec.Family = "微软雅黑"; + tempGraph.XAxis.Title.FontSpec.IsBold = false; + tempGraph.XAxis.Scale.FontSpec.FontColor = myFontColor; + tempGraph.XAxis.Scale.FontSpec.Size = fontsize; + tempGraph.XAxis.Title.IsVisible = false; + tempGraph.XAxis.MajorTic.IsOutside = false; + tempGraph.XAxis.MajorTic.Color = Color.FromArgb(127, myFontColor); + tempGraph.XAxis.MinorTic.IsAllTics = false; + + tempGraph.YAxis.Title.FontSpec.Family = "微软雅黑"; + tempGraph.YAxis.Title.FontSpec.IsBold = false; + tempGraph.YAxis.Scale.FontSpec.FontColor = myFontColor; + tempGraph.YAxis.Scale.FontSpec.Size = fontsize; + tempGraph.XAxis.Title.IsVisible = false; + tempGraph.YAxis.MajorTic.IsOutside = false; + tempGraph.YAxis.MajorTic.Color = Color.FromArgb(127, myFontColor); + tempGraph.YAxis.MinorTic.IsAllTics = false; + tempGraph.YAxis.MajorGrid.IsZeroLine = false; + + + if (SysParam.Instance.BackgroundGridOn) + { + tempGraph.XAxis.MajorGrid.IsVisible = true; + tempGraph.XAxis.MajorGrid.Color = Color.FromArgb(127, myFontColor); + tempGraph.YAxis.MajorGrid.IsVisible = true; + tempGraph.YAxis.MajorGrid.Color = Color.FromArgb(127, myFontColor); + } + else + { + tempGraph.XAxis.MajorGrid.IsVisible = false; + tempGraph.YAxis.MajorGrid.IsVisible = false; + } + } + + private double[] getData(int standNo, int index, int length) + { + double[] originData = new double[length]; + index = index * SysParam.Instance.reSamplePoint; + try + { + for (int i = 0; i < length; i++) + { + originData[i] = fileHelper.originDataList[standNo][index + i]; + } + } + catch (Exception) + { + originData = new double[length]; + for (int i = 0; i < length; i++) + { + originData[i] = fileHelper.originDataList[standNo][fileHelper.signalLengthOrigin - length + i]; + } + } + return originData; + } + + + private void timer1_Tick(object sender, EventArgs e) + { + if (fileHelper.signalLengthOrigin >= SysParam.Instance.reSampleFre) + { + stepBar.Maximum = fileHelper.signalLengthOrigin - Convert.ToInt32(SysParam.Instance.reTimeSpan) * SysParam.Instance.reSampleFre; + int ecchstep = orient * coeff; + timeSpan = Convert.ToDouble(SysParam.Instance.reTimeSpan); + displayPoints = Convert.ToInt32(timeSpan * SysParam.Instance.reSampleFre); + indexPos = indexPos + ecchstep; + if (indexPos < 0) + { + indexPos = 0; + } + if (indexPos * SysParam.Instance.reSamplePoint + displayPoints <= fileHelper.signalLengthOrigin) + { + stepBar.Value = indexPos * SysParam.Instance.reSamplePoint; + GraRefresh(); + } + else + { + timer1.Enabled = false; + btRight.Enabled = false; + btLeft.Enabled = true; + } + } + else + { + timer1.Enabled = false; + MessageBox.Show("记录长度短于1秒,不可回放!", "警告"); + btRight.Enabled = false; + btPause.Enabled = false; + btStart.Enabled = false; + master.PaneList.Clear(); + } + + } + + private void btStart_Click(object sender, EventArgs e) + { + //indexPos = 0; + orient = 1; + timer1.Enabled = true; + btStop.Enabled = true; + btPause.Enabled = true; + btStart.Enabled = false; + btRight.Enabled = false; + btLeft.Enabled = true; + } + + private void btStop_Click(object sender, EventArgs e) + { + indexPos = 0; + timer1.Enabled = false; + btStart.Enabled = true; + btStop.Enabled = false; + btPause.Enabled = false; + btRight.Enabled = false; + btLeft.Enabled = false; + stepBar.Value = 0; + LoadIni(); + } + + private void btPaues_Click(object sender, EventArgs e) + { + stepBar.Enabled = true; + timer1.Enabled = false; + btStart.Enabled = false; + btStop.Enabled = false; + btPause.Enabled = false; + btRight.Enabled = true; + btLeft.Enabled = true; + } + + private void btRight_Click(object sender, EventArgs e) + { + orient = 1; + timer1.Enabled = true; + btStart.Enabled = false; + btStop.Enabled = true; + btPause.Enabled = true; + btRight.Enabled = false; + btLeft.Enabled = true; + } + + private void stepBar_Scroll(object sender, ScrollEventArgs e) + { + stepBar.Maximum = fileHelper.signalLengthOrigin - Convert.ToInt32(SysParam.Instance.reTimeSpan) * SysParam.Instance.reSampleFre; + //int eachstep = orient * coeff; + timeSpan = Convert.ToDouble(SysParam.Instance.reTimeSpan); + displayPoints = Convert.ToInt32(timeSpan * SysParam.Instance.reSampleFre); + indexPos = Convert.ToInt32(stepBar.Value / SysParam.Instance.reSamplePoint); + if (indexPos * SysParam.Instance.reSamplePoint + displayPoints <= fileHelper.signalLengthOrigin) + { + stepBar.Value = indexPos * SysParam.Instance.reSamplePoint; + } + else + { + btRight.Enabled = false; + btLeft.Enabled = true; + } + GraRefresh(); + } + + private void trackBar1_Scroll(object sender, EventArgs e) + { + int itmp = trackBar1.Value; + if (itmp < 0) + { + timer1.Interval = -itmp * 200; + } + else if (itmp == 0) + { + timer1.Interval = 200; + } + else + { + timer1.Interval = 200 / itmp; + } + if (itmp > 1) + { + coeff = itmp / 2; + } + else + { + coeff = 1; + } + } + + private void btLeft_Click(object sender, EventArgs e) + { + orient = -1; + timer1.Enabled = true; + btStart.Enabled = false; + btStop.Enabled = true; + btPause.Enabled = true; + btRight.Enabled = true; + btLeft.Enabled = false; + } + + private void GetAlarmParam(double speed, Stand std) + { + int ias = std.alarm_spd.Length; + int i_fre = std.fre_l_S1.Length - 1; + int iIndex = std.alarm_spd[0].alarmSpeed; + if (speed <= std.alarm_spd[0].alarmSpeed) + { + std.band_Fre_L1 = std.fre_l_S1[0];//.fre_l_A1; + std.band_Fre_L2 = std.fre_l_S2[0]; + std.band_Fre_M1 = std.fre_m_S1[0]; + std.band_Fre_M2 = std.fre_m_S2[0]; + std.band_Fre_H1 = std.fre_h_S1[0]; + std.band_Fre_H2 = std.fre_h_S2[0]; + std.alarm_L_Value_ck = std.fre_l_V[0]; + std.alarm_M_Value_ck = std.fre_m_V[0]; + std.alarm_H_Value_ck = std.fre_h_V[0]; + + std.defect_L_Value_ck = std.fre_l_D[0]; + std.defect_M_Value_ck = std.fre_m_D[0]; + std.defect_H_Value_ck = std.fre_h_D[0]; + } + else if (speed >= std.alarm_spd[ias - 1].alarmSpeed) + { + std.band_Fre_L1 = std.fre_l_S1[i_fre]; + std.band_Fre_L2 = std.fre_l_S2[i_fre]; + std.band_Fre_M1 = std.fre_m_S1[i_fre]; + std.band_Fre_M2 = std.fre_m_S2[i_fre]; + std.band_Fre_H1 = std.fre_h_S1[i_fre]; + std.band_Fre_H2 = std.fre_h_S2[i_fre]; + std.alarm_L_Value_ck = std.fre_l_V[i_fre]; + std.alarm_M_Value_ck = std.fre_m_V[i_fre]; + std.alarm_H_Value_ck = std.fre_h_V[i_fre]; + + std.defect_L_Value_ck = std.fre_l_D[i_fre]; + std.defect_M_Value_ck = std.fre_m_D[i_fre]; + std.defect_H_Value_ck = std.fre_h_D[i_fre]; + } + else + { + std.band_Fre_L1 = std.fre_l_S1[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_L2 = std.fre_l_S2[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_M1 = std.fre_m_S1[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_M2 = std.fre_m_S2[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_H1 = std.fre_h_S1[Convert.ToInt32(speed - iIndex)]; + std.band_Fre_H2 = std.fre_h_S2[Convert.ToInt32(speed - iIndex)]; + std.alarm_L_Value_ck = std.fre_l_V[Convert.ToInt32(speed - iIndex)]; + std.alarm_M_Value_ck = std.fre_m_V[Convert.ToInt32(speed - iIndex)]; + std.alarm_H_Value_ck = std.fre_h_V[Convert.ToInt32(speed - iIndex)]; + std.defect_L_Value_ck = std.fre_l_D[Convert.ToInt32(speed - iIndex)]; + std.defect_M_Value_ck = std.fre_m_D[Convert.ToInt32(speed - iIndex)]; + std.defect_H_Value_ck = std.fre_h_D[Convert.ToInt32(speed - iIndex)]; + } + } + + private string zedGraphControl1_PointValueEvent(ZedGraphControl sender, GraphPane pane, CurveItem curve, int iPt) + { + if (pane.Title.Text.Contains("能量")) + { + if (iPt < curve.Points.Count) + { + PointPair pt = curve[iPt]; + return (pt.X.ToString("0.0") + "s " + pt.Y.ToString("0.00000") + "g " + fileHelper.originDistanceList[iPt].ToString("0.0") + "m"); + } + else + { + return ""; + } + } + else if (pane.Title.Text.Contains("速度")) + { + if (iPt < curve.Points.Count) + { + PointPair pt = curve[iPt]; + return (pt.X.ToString("0.0") + "s " + pt.Y.ToString("0.0") + "m/min " + fileHelper.originDistanceList[iPt].ToString("0.0") + "m"); + } + else + { + return ""; + } + } + else if (pane.Title.Text.Contains("频谱")) + { + if (iPt < curve.Points.Count) + { + PointPair pt = curve[iPt]; + return (pt.X.ToString("0.0") + "Hz " + pt.Y.ToString("0.00000") + "g"); + } + else + { + return ""; + } + } + else + { + if (iPt < curve.Points.Count) + { + PointPair pt = curve[iPt]; + return (pt.X.ToString("0.000") + "s " + pt.Y.ToString("0.00000") + "g"); + } + else + { + return ""; + } + } + } + + private void zedGraphControl1_ContextMenuBuilder(ZedGraphControl sender, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectState objState) + { + for (int i = 0; i < menuStrip.Items.Count; i++) + { + switch (menuStrip.Items[i].Tag.ToString().Trim()) + { + case "copy": + menuStrip.Items[i].Text = "复制图片"; + break; + case "show_val": + menuStrip.Items[i].Text = "查看坐标"; + break; + case "save_as": + menuStrip.Items[i].Text = "图片保存至..."; + break; + case "page_setup": + menuStrip.Items[i].Text = "页面设置"; + break; + case "print": + menuStrip.Items[i].Text = "打印"; + break; + case "unzoom": + menuStrip.Items[i].Text = "还原缩放"; + break; + case "undo_all": + menuStrip.Items[i].Text = @"还原缩放\移动"; + break; + case "set_default": + menuStrip.Items[i].Text = "恢复默认设置"; + break; + } + } + } + + } +} diff --git a/Host/PlottingReview.designer.cs b/Host/PlottingReview.designer.cs new file mode 100644 index 0000000..0845c8e --- /dev/null +++ b/Host/PlottingReview.designer.cs @@ -0,0 +1,258 @@ +namespace CRVM +{ + partial class PlottingReview + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PlottingReview)); + this.zedGraphControl1 = new ZedGraph.ZedGraphControl(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.btStart = new System.Windows.Forms.ToolStripButton(); + this.btPause = new System.Windows.Forms.ToolStripButton(); + this.btStop = new System.Windows.Forms.ToolStripButton(); + this.btLeft = new System.Windows.Forms.ToolStripButton(); + this.btRight = new System.Windows.Forms.ToolStripButton(); + this.stepBar = new System.Windows.Forms.HScrollBar(); + this.trackBar1 = new System.Windows.Forms.TrackBar(); + this.tableLayoutPanel1.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit(); + this.SuspendLayout(); + // + // zedGraphControl1 + // + this.zedGraphControl1.BackColor = System.Drawing.SystemColors.Control; + this.zedGraphControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.zedGraphControl1.Location = new System.Drawing.Point(0, 0); + this.zedGraphControl1.Margin = new System.Windows.Forms.Padding(0); + this.zedGraphControl1.Name = "zedGraphControl1"; + this.zedGraphControl1.ScrollGrace = 0D; + this.zedGraphControl1.ScrollMaxX = 0D; + this.zedGraphControl1.ScrollMaxY = 0D; + this.zedGraphControl1.ScrollMaxY2 = 0D; + this.zedGraphControl1.ScrollMinX = 0D; + this.zedGraphControl1.ScrollMinY = 0D; + this.zedGraphControl1.ScrollMinY2 = 0D; + this.zedGraphControl1.Size = new System.Drawing.Size(898, 644); + this.zedGraphControl1.TabIndex = 0; + this.zedGraphControl1.ContextMenuBuilder += new ZedGraph.ZedGraphControl.ContextMenuBuilderEventHandler(this.zedGraphControl1_ContextMenuBuilder); + this.zedGraphControl1.PointValueEvent += new ZedGraph.ZedGraphControl.PointValueHandler(this.zedGraphControl1_PointValueEvent); + // + // timer1 + // + this.timer1.Interval = 200; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.zedGraphControl1, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(898, 679); + this.tableLayoutPanel1.TabIndex = 3; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.BackColor = System.Drawing.SystemColors.Control; + this.tableLayoutPanel2.ColumnCount = 3; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 175F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 117F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.Controls.Add(this.toolStrip1, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.stepBar, 2, 0); + this.tableLayoutPanel2.Controls.Add(this.trackBar1, 1, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 644); + this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(898, 35); + this.tableLayoutPanel2.TabIndex = 4; + // + // toolStrip1 + // + this.toolStrip1.AutoSize = false; + this.toolStrip1.BackColor = System.Drawing.SystemColors.Control; + this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Fill; + this.toolStrip1.GripMargin = new System.Windows.Forms.Padding(0); + this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(34, 34); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btStart, + this.btPause, + this.btStop, + this.btLeft, + this.btRight}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Padding = new System.Windows.Forms.Padding(0); + this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.toolStrip1.Size = new System.Drawing.Size(175, 35); + this.toolStrip1.Stretch = true; + this.toolStrip1.TabIndex = 4; + this.toolStrip1.Text = "toolStrip1"; + // + // btStart + // + this.btStart.AutoSize = false; + this.btStart.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btStart.Image = global::Host.Properties.Resources.Play_64; + this.btStart.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btStart.Margin = new System.Windows.Forms.Padding(0); + this.btStart.Name = "btStart"; + this.btStart.Size = new System.Drawing.Size(34, 34); + this.btStart.Text = "开始"; + this.btStart.Click += new System.EventHandler(this.btStart_Click); + // + // btPause + // + this.btPause.AutoSize = false; + this.btPause.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btPause.Image = global::Host.Properties.Resources.Pause_64; + this.btPause.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btPause.Margin = new System.Windows.Forms.Padding(0); + this.btPause.Name = "btPause"; + this.btPause.Size = new System.Drawing.Size(34, 34); + this.btPause.Text = "暂停"; + this.btPause.Click += new System.EventHandler(this.btPaues_Click); + // + // btStop + // + this.btStop.AutoSize = false; + this.btStop.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btStop.Image = global::Host.Properties.Resources.Stop_64; + this.btStop.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btStop.Margin = new System.Windows.Forms.Padding(0); + this.btStop.Name = "btStop"; + this.btStop.Size = new System.Drawing.Size(34, 34); + this.btStop.Text = "停止"; + this.btStop.Click += new System.EventHandler(this.btStop_Click); + // + // btLeft + // + this.btLeft.AutoSize = false; + this.btLeft.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btLeft.Image = global::Host.Properties.Resources.Back_64; + this.btLeft.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btLeft.Margin = new System.Windows.Forms.Padding(0); + this.btLeft.Name = "btLeft"; + this.btLeft.Size = new System.Drawing.Size(34, 34); + this.btLeft.Text = "后退 "; + this.btLeft.Click += new System.EventHandler(this.btLeft_Click); + // + // btRight + // + this.btRight.AutoSize = false; + this.btRight.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.btRight.Image = global::Host.Properties.Resources.Forward_64; + this.btRight.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btRight.Margin = new System.Windows.Forms.Padding(0); + this.btRight.Name = "btRight"; + this.btRight.Size = new System.Drawing.Size(34, 34); + this.btRight.Text = "继续"; + this.btRight.Click += new System.EventHandler(this.btRight_Click); + // + // stepBar + // + this.stepBar.Dock = System.Windows.Forms.DockStyle.Fill; + this.stepBar.LargeChange = 2560; + this.stepBar.Location = new System.Drawing.Point(292, 0); + this.stepBar.Maximum = 5120; + this.stepBar.Name = "stepBar"; + this.stepBar.Size = new System.Drawing.Size(606, 35); + this.stepBar.SmallChange = 2560; + this.stepBar.TabIndex = 4; + this.stepBar.Scroll += new System.Windows.Forms.ScrollEventHandler(this.stepBar_Scroll); + // + // trackBar1 + // + this.trackBar1.BackColor = System.Drawing.SystemColors.Control; + this.trackBar1.Cursor = System.Windows.Forms.Cursors.Default; + this.trackBar1.Dock = System.Windows.Forms.DockStyle.Fill; + this.trackBar1.Location = new System.Drawing.Point(175, 0); + this.trackBar1.Margin = new System.Windows.Forms.Padding(0); + this.trackBar1.Minimum = -10; + this.trackBar1.Name = "trackBar1"; + this.trackBar1.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.trackBar1.Size = new System.Drawing.Size(117, 35); + this.trackBar1.TabIndex = 5; + this.trackBar1.TickStyle = System.Windows.Forms.TickStyle.Both; + this.trackBar1.Scroll += new System.EventHandler(this.trackBar1_Scroll); + // + // PlottingReview + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(898, 679); + this.Controls.Add(this.tableLayoutPanel1); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "PlottingReview"; + this.ShowIcon = false; + this.Text = "PlottingReview"; + this.Load += new System.EventHandler(this.Plot_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + this.tableLayoutPanel2.PerformLayout(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private ZedGraph.ZedGraphControl zedGraphControl1; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.HScrollBar stepBar; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton btStart; + private System.Windows.Forms.ToolStripButton btStop; + private System.Windows.Forms.ToolStripButton btPause; + private System.Windows.Forms.ToolStripButton btRight; + private System.Windows.Forms.TrackBar trackBar1; + private System.Windows.Forms.ToolStripButton btLeft; + } +} \ No newline at end of file diff --git a/Host/PlottingReview.resx b/Host/PlottingReview.resx new file mode 100644 index 0000000..47feef1 --- /dev/null +++ b/Host/PlottingReview.resx @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 14, 8 + + + 102, 12 + + + 46 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/Program.cs b/Host/Program.cs new file mode 100644 index 0000000..8f8e701 --- /dev/null +++ b/Host/Program.cs @@ -0,0 +1,37 @@ +using System; +using System.Windows.Forms; +using System.Threading; +using RestApi; +namespace CRVM +{ + static class Program + { + //static RestHandler sh = new RestHandler(); + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + bool create; + using (Mutex mu = new Mutex(true, Application.ProductName, out create)) + { + if (create) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + var mf = new IServerMainForm(); + //sh.Roll_mill_data = new RollMillData(mf.roll_mill_data_array); + //sh.Roll_mill_data.AF = mf.alarmInfo; + //sh.cZState = mf.cZState; + //sh.Start(); + Application.Run(mf); + } + else + { + MessageBox.Show("程序正在运行!"); + } + } + } + } +} diff --git a/Host/Properties/AssemblyInfo.cs b/Host/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..d191639 --- /dev/null +++ b/Host/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Host")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Host")] +[assembly: AssemblyCopyright("Copyright © 2011")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("8c170788-8185-4a7c-9c87-d5c6a67aae65")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Host/Properties/Resources.Designer.cs b/Host/Properties/Resources.Designer.cs new file mode 100644 index 0000000..14f6f47 --- /dev/null +++ b/Host/Properties/Resources.Designer.cs @@ -0,0 +1,213 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace Host.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Host.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Back_64 { + get { + object obj = ResourceManager.GetObject("Back_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap baosteel { + get { + object obj = ResourceManager.GetObject("baosteel", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap baosteel150 { + get { + object obj = ResourceManager.GetObject("baosteel150", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Exit_64 { + get { + object obj = ResourceManager.GetObject("Exit_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Forward_64 { + get { + object obj = ResourceManager.GetObject("Forward_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Help_64 { + get { + object obj = ResourceManager.GetObject("Help_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Open_64 { + get { + object obj = ResourceManager.GetObject("Open_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Pause_64 { + get { + object obj = ResourceManager.GetObject("Pause_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Play_64 { + get { + object obj = ResourceManager.GetObject("Play_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Refresh_64 { + get { + object obj = ResourceManager.GetObject("Refresh_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap search_64 { + get { + object obj = ResourceManager.GetObject("search_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Settings_64 { + get { + object obj = ResourceManager.GetObject("Settings_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap Stop_64 { + get { + object obj = ResourceManager.GetObject("Stop_64", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。 + /// + public static System.Drawing.Icon VibrationTest { + get { + object obj = ResourceManager.GetObject("VibrationTest", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + public static System.Drawing.Bitmap VibrationTest1 { + get { + object obj = ResourceManager.GetObject("VibrationTest1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Host/Properties/Resources.resx b/Host/Properties/Resources.resx new file mode 100644 index 0000000..664f79c --- /dev/null +++ b/Host/Properties/Resources.resx @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Back-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\baosteel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\baosteel150.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Exit_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Forward_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Help_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Open_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Pause_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Play_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Refresh_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\search_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Settings_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Stop-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\VibrationTest.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\VibrationTest.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Host/Properties/Settings.Designer.cs b/Host/Properties/Settings.Designer.cs new file mode 100644 index 0000000..c32eb98 --- /dev/null +++ b/Host/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.1 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace CRVM.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Host/Properties/Settings.settings b/Host/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Host/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Host/Resources/$this.Icon.ico b/Host/Resources/$this.Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..044c328aaaa608c615634979bdce7d4e8c7a5049 GIT binary patch literal 3758 zcmd^Cdr(wm6hG}U}Pw<)dsAtj0%@K}L$KxVn4q z-DQ!7AeyYAIKDuQBrH%XT2w?UL=7!T3-et*CINTv?RW3pg%wP6tiQT@_Tzl#yZim_ zIp6P`b0NA1pI%Q8#)m1d8_`2V^bEee@QuV*w#(NnthK+^E}WV%v42LKZs`#scwXUjn-Z)(nI~2l?>$kVGh-kHK#+;$_aX+#QqIoaSq6p&j z#2J(^iZ}?Sda|oV*j0Dqz><^vt2 z45!oxvPY9(((=t^$YY{Oa)eBeTh6GIW|wx3enrNHS;6O zs8AkJH)$P=7VZg52+ty<|L9={oK^??iYQ$d;T|w0soC4uaO|t%BCk(6cCaRWTv$rD z%nYYdlV#{4m^5%tcJgM@DUKvI$rx<`#H4Qjo@!5J`TAuSe`_e_;^#+om3al0CI}!{!)ZzNwFf+(ZmQkC=g{}nza0Kf_Dzz0Z>Y16*A-_b;VCjE4dzBrI!oz{HjUMG zgi>*;+IXPu(K@#Hd|p5)VT1AVpBII94DtOaKi+WZ!g*L4kJY8bJpFmj{4ettaihA) z*~Mzr(1G%;G3*QnMDXI|ePT>&&c#p$qji}5 zXn^hPd~Se{B(K*C`iVZ@K2Ozw%3Y^V9>)#4x2;YZNY0lZ`sK$TD%`?c9l4_AEOs(V zjw$50Z5-^5D;W0brAuW6nU1N3UymMwefg}Hr}w6v%dCfMDi(|+0i`O&pU8LOk4!vC zs;@tKsJ3?3x;2+CoW=Ci=`)STkGm~#sbl)oc}i=x7kSS zd_F|We=HZy{$5_VG<(LFo%x(sY60M%Cw`tYqI+RVY~xRL9Q#1>Fj_L3Y6~6!rOqoNbG_h1;Ca3-bS3p6YfO)8*Dq`@ z$V(nfizoLlvrXnA$Ys{>ETN&GWytk*|iXooqA{fXPA-7kHzH5bh!5`<&VavMOeH$`tp0aJwuUxsd z%06w=qD1Jm<(ofzjvN#EmsqD{jO~$bpfpnm$AqFn1o`7mG@~4DJOuXDo(C#EYrb|q?X5vb(#oRTrmI)E zv0;lR4MS)*+NWEF;Q_nihk{vtc0b=_oRx`YJN#*nBi|*{#*7$i`506d4abHe4RNl? zI@-N;#nxq(gdt>&ysxF{a-n71`%lu5-8;7DS}f@EM!5jt>4I?FA1ZO{h@)8i3=MQL zOmV=RF_e#>tk?QhXYn+aL!mCWc z8bdiFfv80ZCN8S0HIi&mwAuC!=xU95Y|j?AEh0qrhi&Ec9pR|%AsUc$vzB8*>;}qv zvuDnPM?ut7{Ue1l!nsjo)puVJ_Z%NBzj6ig=Z zo$Ue(Z z%}v8V5QgDdOF1B+)Zh|A2hc$}0FID)fFq$JO4t%eE*vLvkfR_OxXjP@;dKFy-)CoY z*f>RIewCT`O9N;VFmr*n1sDdPfBEd|!$tLYR`?0%pZ2dJvKHxX>gMv@8UY$$h%cqw z4biIl;eh}Pa2`Ldx(5Ozz*PJ6*@LT+GD~P_;$K`QbSX@v5(eVQy3_wOa z3_w;q1VCndIzV=ODgZ)!8URXs3II}kH~?CFC;(!77yxQ~2mo@tI{^4v4Z!n$Tcq6nbU>-9+qzlaTO43|+{5HduqQ?^0T@<> z6~PRE6~PpM5y2dQ4Z#I~3Be731;G`70l^&r9U%k&86gY+6(JM=5g{A^4Iu>p2_X#t z1tApx0U;eA8vz0!69EPw3jqos0|5@;Zv@?GS*-r;tFq(C@AMg??o_*L%h%>1Ctw=E zKHlVa0gto#^Lu_xf~>7qe*6sR2{=u{oc}W8Jz*3R;EB)xJarlF-6nuxl{}yE0Q~xd UP~4gF9{>OV07*qoM6N<$f>ScJvH$=8 literal 0 HcmV?d00001 diff --git a/Host/Resources/Exit_64.png b/Host/Resources/Exit_64.png new file mode 100644 index 0000000000000000000000000000000000000000..afee9c67ffbf265a38b4b67ce1d003f66f46da22 GIT binary patch literal 782 zcmV+p1M&QcP){Y;S0U^lVM2c3IWM=%1 z6KS2lN$hzZk3Zr#;KHwP;ryrqY6e`mf!YNwJOSz;Si1nD3$(BCGW^7EMp@D_SaoJ) zK)bUUNNCIKVxeLyY}CgA&eO%l`sX5d{U2;j{UR04$XR0#@rlLWB(I(BPG1HWCSl<+az?BjB001PXkM z`*4@m3A2}6z-a;U1Hj|iQpX>d%mfNNa72Txr1fK%VgV@&93?CPuNL4XVJUc%0JenG zTdwfX@>bK+RB1mfSk(oFFVechsnGZ_WxdSs<_zc~B}uS?$M>?}vjq^lgGE9%JVn4l z5-9LA0fi;d;Hd%%Nua{h1vpEf!@CG@lHdaGCV(u#4Zehc+!bDoQS~XUolngx!KsQ! zYx`jpZW8DM9N>EqE)u8$9O2z0&;%5KcacC5P!OIjAzQ!#@Kgy|0v3d)NiYi_!5=#k zw~f}hb%99$4ZguP1?arnJS9ObfC=AkU6Xc}OzQ-d01x=Sb(WGK7T^iLqy)Ku4gPe; zQs%~$vHPO0I#MR=!wxSbfr7*PK2Ewikiy^6FfnJ_`HxBm z%}v8V5QgEIBZmY^*b?XnI6|6$B0`RY4(I?nfD*Qb2#G@^FIt49$ciPeGC$wOn`DcS`3dpVe z_9G6^$20R)KH-$o78yYlU>M(DF=PZWfPBwWxBu*~{BT@R5ySv;aCqKrnfPYxUPVL@ z1*j209H2G?6@Z!$)BtKhPz9&~K^*`c!2|#q!3+Qu!4v=y!5jb$!36*b!3_Wf!4&`j z!5zRG0Rq4i0S3Se0Sdqa0S>?#0TRFx0Ty5y0zJjm;_;N{1=s-V-3v3{jxMrNdW{du z(f_Bwzybt=_zVOIU=OewU>y$y;1Lf4;1v%6;2G}@;2rM@fDrEnfD-QlfD~^I zfEI5GfEaHEfEsTCfE=$5fF7?3P(!>LKrQhq05!#n1Jo8T3Xorw<+T4I;>%-;kx5_y zbIKxT={BNkg85}>=I&#NfEq740loYX0Xbd;;O~LP|0JaR!NiH{_N60Ty1nQvaCq=p ze=<{g6+E|Bn*h(Kl4Cc360LLGwoSk}Ue%JOU&{%EP|--Ok^lez07*qoM6N<$f}o?y AP5=M^ literal 0 HcmV?d00001 diff --git a/Host/Resources/Help_64.png b/Host/Resources/Help_64.png new file mode 100644 index 0000000000000000000000000000000000000000..5839fef7526c9c8dfc9cfcb5c006bbaead1e6bdd GIT binary patch literal 1540 zcmV+f2K)JmP)k`>{LjGc%u{$iumU?KX-QSp|^Ku*?YS)yED6IOZG@t?aZ6^zIlK1 z=AFPEA7YQok9`34HDHe;ux|o8p#a${bO34RqiuUvtOfgmSZOyuiEBVz*k>mI8UfLe z5aNJLNFrK+5OaViq0%#*G$@Gx;0oRS>@+|*AuwQaszjIvL=n}Vn@NBXI{?}1R?SurvrLp<<1hnuQSn*-2*rpea*34=Z$wHq`yYm_2UI>(bB$AbY($gc{wB+t#BB z((nx@?K7FVsB3w?762@~Ak6A)nA92)7}fzHG5~e8ug&iC$+wyVtpKUvsOAs}fO>p) zW_QZwRodg`3{`75ierohK%sow)Z4$;m%_l?DOhQNLp>>Ex(SQRZL+=;OdI`RHnDJhA69Ky`Q4HO@&>uv=iH!>8% z5C{)IVQon_$+>tejZfe02*c0joW-X#eEsuFIMqnY+{v6Q+4hzoY!x~f{N1fcHt%1b(4f8byTu6>eL@gV&^^E{55cx^p0~sRWPp^9;ssW$;?0wfI;XBI#Cvc1@ap~CSwGEA|xsR zD3^r52^|gKlRP)r)v}b69yWpY0f1?HJQH|TR{*fKtmFN406Sy}+!}ekWhv(YqowCs z`2Z8+Xkd@`_66}I1)#rBj_!GMqz4dW{~RqY|L$)xVYgb!X9DF6{9xh$!!p*K7nCfS zo_>?Q9sq5+^UE^DZ|+v{+vDxwGAg*P8Axgc!5Yv80A#|m+Ozt{F?J;YV;^>be|{rQ z;diA51bKXBHg4hd0Win{Rcd>7up6h2bhb?6^f)L-P|=iq*K&ePFsU%;7xH8&vWf7# z)&PLD6+pac%7AzMFJHD^l9D=ofL53Cy@3z1iKW6a(EI=}$@gV@5gDbzW_7?I#{7yT z*Y2(3ujN|Y%BHLjCUzZ;T@p=#M%Q89Gg~On3t)RUhbA-aUPi!zozF=76Vw$UgOZp` zV7@LNKiq-Er-X(7HneYhQu_~47*zw{<^yFr&S>CGfw}I-C2*axS1*Ec4dspKTAOL~b%HmD>{gZ1pgm}l)j)Ss5ru*>^&rQkK*AqQj z8t)C&siHK2CP$`EV@*0immt3Te|9S#01|l`YnXy|jj#zoP_Z+<3>i~I|7Ho__9A* zB}xq?+90v%586;Iis}v9)*`bV1S-X$2~maJKA%=eh!LIsAf^-91h#JO_6rFrn)(D? z09>0Vk&CMKMn1sHY@=_esQZGXEj(cwRVx?8;rZ=lqyZjn$O+UY;z*XHpb$MGZj}w$ z0;2*rHUKt#gL`?ZO~mgTXw?-wMAwH(=vYm_Z?ndK1afY>yx~>awR3Kluk;j6)jd%Y z2tvK_-+>YS!-Nntq}B|M=Z!y1RC`KE2%WeFgi%4a*Lcg&4P#;UlFfWl=w%@)6?6wnWH$Qt`1O5k;XN6xZ9*~y+00005VKyP4nCS8=? zAlZdQs*XrZjKSDgkod{cj*)HjetLTElk^BVZZ%|3fM~U=yIiwl8PRv|55S)g#Mm`M=ZvY*%hwpIale=-BJYVXFbyt7UY}$IOV_D>S@Q zbpQvSxXu0Tcvk{I2EV;JPXHvo(edD?ng^7(fH$w10$4>1s8)ejRh|Hf*A+h%rVoNL z_dkEe4}id5YIu`V?(_imKXA+c{$%|k%WJCX04aUN6siqmD}nD%ffL1m@wRzh znH)z6EJPn0qh|O@Y+)AgJI95RfGn8W9pC%0I|UXU6i25~#z!uJu$zoaWnXN*#mn-0 z7CYeWitFF}#EsWfi^mbtz2A6%?lT-`pYeb=Lb~@G572#vuVmjHocs6PX6VzkMp0z zImg#t?rmq7$S9&9Bz7p4bN9!@CT#|;0LktTdF*$8Xzc%Li{RLcG;r!k9$>yQv-86{ zp4}e<>na%J8rXFt4zPq??)b2-b0<(}hJsoLXHwICo(-%a*Lyy!>jtUIVcf1K?YA(KbLh*2~7Z{V3$7t literal 0 HcmV?d00001 diff --git a/Host/Resources/Play_64.png b/Host/Resources/Play_64.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbc2ef35b200a76350149eedda3ae7ac818dfdf GIT binary patch literal 381 zcmV-@0fPRCP)c)3jsf`E)cRSy)ieLUI_>TP+5Z|tPYPAP zSprZ8MAsDnTA01Q62Lwo^!bzkv@m;pC4hZG=<_K7XkqsHN&x$W(C1SE(8BEXl>qh$ bq0jdN3oQFV{&=-r00000NkvXXu0mjfAT*Va literal 0 HcmV?d00001 diff --git a/Host/Resources/Refresh_64.png b/Host/Resources/Refresh_64.png new file mode 100644 index 0000000000000000000000000000000000000000..72230a8dd8ce2bf14a19e7b296ec8dbaf5b27965 GIT binary patch literal 3317 zcmZ{nX*AT2+s40)rL5WaA%)78Eer;k5LvP_gs~5z7=sy0!U&Pj>Rk{6lWjXFsE6p!y$Rlekx^ zA+xi|vd=Kh!DAPMF)3C(*85y+VF;Em*n@dTOhX0qjA{3wc>ee_e(O+Y^mT1hj1{N# z-9O~Y#MbSp{`$o!OVk`-^1@T(Qvb^?CAqgR9?H`Qd_G*~w3c z@gSkF@Y~7mU{+}@oE`{1l|rJu&9rrcW_UiK^M)*^G$3rdm~ATrYp@ok-=pHwWiFsG z+Qm+sKM{PSQc00l%R<%pvSYSTfXxL<;#qlEk~Pv)bg$35%<-^DcRh(UFI91)~*OGanyInPQ2T}aWK zuO_`BebtQ=Eb&DFwT1#%?@%rF^lC|2QKl4{+QWfHi6G&l41!wG4lq~!&KJFf1Og<~ z>)3w!?npSu%2OCG16;fr%K@5n^20-cZR+b~3G50$Daf_7g9ZIb;#Cz0of2rbzAgW* zBl73*_r}lcHBxLzA_M9|(PxBeV@>T>_FN$!^KN-X;k>WiDO3(hx;o7koiRf$m%iwk zCg*vfOgGi;V#A{MoQf3b_xI)V5&HA2(Ad_h*QYwOVZVss(JnkTi&Lm~F^638SL&78 zg0`NYN-cLFY*>SIl#$xg@kVG#v9A?@!qeL}HhV^hKE=85ke-($Q*}8XzJ%z94IM-a z#Q@39gD}pz==^?|yHl$aHaTHRj#tHK5ib$EYxQikV*?5*;Zxc7TnN}W{yjSb^zbIy z4n^wY6+y27vma^JzQ6LRi%1V zxwX+_lFCc48HE{rwwVtpws+bU0Vd%^*`KCF{gJ#=<}gxHX5VLt6Z=HU zT(zSZyZSQd$r}thHqL>$I+pQm+#`PtwMd^TBeA+vqo=TdPsEWcwwEixY2udj_1v$eHX�GnY-tCeBG;6f1EXR# zG#85m#X98L3`2LK{BkL@w=B#McNeMN4_Ii5gBoJvJh%!@Rp$i7Qrde7ZkMv*0B=uc zinVM}+5^y}{@y#bef{LYGD-bQa%l zyn*#DObI&5j>I!*Y>|%Wjc-w*lCM?&U7cCzG^tKE`tZ*-tFhwEALkOs=89vFKSKb{ z$)MlenL(n*e>&Me$)`D-{Ow)9S?*XYj={>~P=TUpD8RQMNYk||-(#&UzkZ^2#r!nk zv2%16*VgU>iBsT8PL}o9+dgT8;H`ca)#Xf%f*y)5|I6!DThCl{ymN+@p71oe&03ep6E$d>yzWB zc*W#hn3j2XjH`bu1H36%PWfuJp;1p52&P#%(`uP?NsFuT_AftOZT*W~cg?66j$ zTivW{WE_zM(p0_0eLfo|3T&S|TeP|rR48^F693Jtq>MZIUwR;bGPQ%--yVU$p*s7( z`gKEGfL^zA(n5jYrG}ky#*V5#Jn2r%`p^tlrZD%WG-WDS1Tcco9GhOk3 zK{YBze3761_{d~oGn#82?5Q`!I;a5ttIIOn28LGpE>Un>y_Uro7)a0^&2SH>Vwknn zj(;?_$N6O1_|CRKZ!qWfuc5{hX?Xkw)&&5fw!P6k5KI643q_`!Gq|}Ef_%AQ-0(bp zWBs0$!DCpMmNDA#WNOP`agDt4GMvvxEJw%ObhGYKH-2}o^v7)rBTMe&jnK8;TNXdoz zlodcalr7&*&+7$^$%rF^3}}|aDT@BZbIxs?cu}_cSP^HteNF{PhBnt?6EkF)>71@tJAOEPQOGJL*z0%lcH@_oonJy!C=h=b^y-Hv(|<82`#oV%fnz>LfFA$Uu@{#%icWqvPdgG= zUN|JLrO;y`4zE>nvBvBX-1_@b$xO^UU7MV$JAy)Jsj2(Tl9L(Kh(C~L*If2dH0%29 zGY*V|#=E)}t98YZ43qpfC?kj=f)VIuJqGhH(K9h{U`W~fFQv3nmS~rb+F?7D{0SbS*#vpg# zw-6^vP3zD&m|JHt#TNQZMGMq;t+hp}9GXol(3Pxx{E+ywrTFbgf-fcBHxfQl-L!=o zRPLUJHzW2yj;1?(IoREBuWp9s&>MaCy&CUi34xf7)<#!V=(94D@_-bwXEE z2;F%;G#8WbnvlzV28kJE&=6;C%C^UGzLwy o@QPY?8PlMo`QOBjc3x1hZ+FE%6(-jH>oLIndxo&eyABcm2atI~lK=n! literal 0 HcmV?d00001 diff --git a/Host/Resources/Settings_64.png b/Host/Resources/Settings_64.png new file mode 100644 index 0000000000000000000000000000000000000000..fb6149a81034a198e5c53ffc5f99bdd950e37298 GIT binary patch literal 1680 zcmV;B25YU`1E@n&F~uH8rLKrnVxv;iA!)ZJ3$Rqa zQVeW$oCT()3meJ>MnI&oQ%cp|4}Irc;yd5@&VOoOWP6JA-S^#lzwh_n`@MG&4Eaxn z+<%M!7%^bT5g3KQkP~2(1dl}sOzWj(5q#FjRuZ==MsBfN1|JUq=1OG&W?TRO8xD)Y*lM^6Fwx@E5?QS zFgs!az+uJ*?ug)2qtO;+Zqqn#_&GAA|DbEaV&j?uk%*Q6)xOvOpp2QGeej)V+QmkP zgs0C0C9n3{d?lcs4Ob^`z{>+8z>i z?s}_V+aX}#83hYbG(c=ZU|O$N0^cMUP|xf7;prm?Qtlj3*AOI@Dn{;l7!w8_0@I#O z&r`|j_7kQhSRAAF*e-)&oz;ltCg(j#ElMRAJOINkgbwPt3E<5mHQ0$1ZrbCkAG{&a zQwF4N|C<6|xYe0WVR>Q}5`k^2w;3Yk574TKChv#Euv)h){-)JC#zPPX(hQ|msxDoB zbfefZ3(3h=&Zu^nWO)oyc6$7JW#A1FdCPAv$-fD?=4AX2^aoiDnyzv~rI^#BfY)0F ztX7*wSBD_{mpEfym6n~EpTYGWpO5OA%^3{U|JES!8i=G<_jUm}q@k-k3C@`d$#Rri z@ji1bMq(=dg)g?7hIa>jx@t|$Lb7FR8U&8FRMsnFpNFEUo1DPw&nC=;H&n)U{nQ#y z?%xpbQ@=UJ0VuyiPR#i2SBEJ8gVtg(7IzXHK@$)Ily#NaQ>%MAs3h#sM5h(a2`roW z-lIW+KM0*C%T7QD z2f(Mc`!+20+xdi)WoReXR6?`k{N%nau$CawtPl?>yVnTHiF8mx?8M1dd%^)&sbxg0 zvQys!ohNswy_OBk@;+hY7fJ-z&HQ-iEU#BUgaY7{DDZ_Lz}bMoB}kcUrT5i2>6Jax z%Y;TiNx5Pc5}_Y6dgZ)2ClUZQ2zJ@3E(3D8iL%6fvycqc-l>(^ya7fOBSk+;?>CHNY3Z zF8YKp2gBCe0w854ME(Ncq^m4O)cHYz$^t&$$tS-IGxk-iM+U%=yy_#SPYwv}_w76q zJTFk`XwfVrZoLX8yDEcT!-L9Tn2c5I0j!7Kp21xOxMmi{uk;gyPzIzt^*dMuL6t(^ zTeO`Qt0)lH2-{Z&5LswSC z+ERjE8B5?XEc`5DU4m$dc3x@$N>-&f!X^=KncA6eXB75fr z0U^Hu!ICo^wZ9`+FSGW!LNyWUTNBi=6b`!S)a~lWAil9_)xd9CH>+ePytk7dkNn-f z9Y%HYY-9$6y(CEIJNx>b+`{bbIRn&ze(i1p0HN)2RHJ+OT+bMAP%R7*%=#I)olo}k zUA+RKr$(h#Yl{Nj^cpva@)i}Ko&pf{rEz+01VEf_V-U8C7%&Lb@!nt0I`(}400003?p83dS$lhh3q3X7bani&-h n)XSKdh1AtmOeAnfY_Wf))#Lb0eJdX@bQnBc{an^LB{Ts59NKZT literal 0 HcmV?d00001 diff --git a/Host/Resources/VibrationTest.ico b/Host/Resources/VibrationTest.ico new file mode 100644 index 0000000000000000000000000000000000000000..8288b3e3ef5bbaae6579e3e2d7ef0611f7f0c90e GIT binary patch literal 270398 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 literal 0 HcmV?d00001 diff --git a/Host/Resources/baosteel150.png b/Host/Resources/baosteel150.png new file mode 100644 index 0000000000000000000000000000000000000000..b4158b818618b38575818cc890392bbde8b80d54 GIT binary patch literal 28008 zcmeIb1yt1C_wYNEfTT!+v)mG)UJw zKIy~n`EmdE-uJG%-nC#YW@ev#_CDY9Is3a$%nSr6DM(}8CcO;+0I+0bBvjzfG4Nj? z+Aa7afu)Q({0ZGgM%x|$z_|PK7Xgr*N(=zpmWPUqD=C>;J6PMBTH8>`ii=a(*jXDx zEg%4Z%UGJKvsTO@q0sap1V=+`WV<-Q!UsS@TY%P%tDS`#4FLP$;)%5Qzq+k~PjDwy zM*WNL&~2HtS92K*l_sLWubzgeKj+z`oXGv;>9)18aXNfjyPUdw*5lfX<9!E@K58k; z48W`6FTgiK8KEfirK8Rpkw9h!nF@Ca_Spob1pwGaa&>v(@KN{-;e#~*5nwaKN{81r zd-<|jiCz;x6$O}~!CS^ah*SZzv#Pb@1KNoJA5}|@ZUbTg01Hnc8$Saw3PfmFksFH;ytT{Or4haBPykNh zT9G&+`T*}FG3G7+6%QgnoZ@ab5|tcM25_KZCQr}CzfuMP&l~a*Q z_%aMx3}khs&9zD;N`ks0ZVqqNi+zVO{v18V z84FMlpxCHTj`|5^(fDE$0WkzyYrqL0@?wuAloTThfNR3Z?s^ChxQ62h5hesccfy-_ z0HAh-`1!k7BDq#H06-$c=ix_DRLmy)f=2ArrhB!GM2O&95+ay%jRLr0w-&s~Z)Xz6 zi;}1{@{J&W`iMlDaVL2ex2y@ogS9+^_uOaAhUk_)ar$TC+5mK9(RQ@EU~0ZscMQTu zXnN3ylERT`z%rcC-fyT@U*Rj$w6xp3LCg~~i_(#y-DR=E=M8%b6K%XDb#Jp21yYGf~{Kdt9uQ*ams(^lznu0q0zU~9;yLvG)bl4ry z3ktWX??3q%~&qM0tZ}CCBS>PAI2jPHgUSs^a$f#s$Vv#%W8o-3ZvN z#WUNyqp6R3sC%$_+*y!VgjtHenH3rrz9{4#a~rE4GuW`(Alz6R+j6u?6G>xE+vl_7 zJ9I>^epIbo?O#3a*!x{*&~VLl6@9;RAA5DOUwYs2NA^C^_pNVR{gm85PP9jnBo-hZ z!|kp}!xi&HXl4Jl-|V|PFw^R&FQ(c3ve^$R={EyS=DA#mgp3QU$qfoPryvvN0$>9u z`}mtLZ(0`W8M|Z6lZ~tU%LW~~y4sm13PuV#*28&+Qq9xB^`o`pXJP(tB~x1-hdc^t ziyw>kfT6_8#~&6XY6xk#YV2za7s!5lzQ(*}`AyS8iA*yEGlee&R{pLqrSOYWisdx^ z9DW4j0OP)@)fi~~Z2k6n^7^d}-UIN#{R7K`-g{l-c=x{XJMeqhIXHGXS=iLBy_w}~ z&ij(rysBwJW|C>2w#P-3^CS|6m*A8@q-vQPoNM*k4HmaZx>-H&X>dO~r6y&faMbea zWS3xz=lfH6))cZ1oo2x;(I4A~T64Bt^J%#$xu5qUm)UfkbhUL)>nIdUQ|Z&c0WI6d zzdW0%gSqST2?;_@dRCEyT7?i_yS)yq -G7Obaz@$E&@3)HjpQ~nd!dBjn}tm`h} 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 literal 0 HcmV?d00001 diff --git a/Host/Resources/search_64.png b/Host/Resources/search_64.png new file mode 100644 index 0000000000000000000000000000000000000000..89a44334fe53a3f984ecec11e7ead22dc5419b1a GIT binary patch literal 16919 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 literal 0 HcmV?d00001 diff --git a/Host/SetAlarmForm.cs b/Host/SetAlarmForm.cs new file mode 100644 index 0000000..8211ecb --- /dev/null +++ b/Host/SetAlarmForm.cs @@ -0,0 +1,229 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using CRVM.Entity; +using System.Text.RegularExpressions; +using CRVM.SIDExcuter; + +namespace CRVM +{ + public partial class SetAlarmForm : Form + { + public EntityAlarmSpeed[][] eass; + bool dataChanged = false; + public SetAlarmForm() + { + InitializeComponent(); + } + + private void Parameterforalarm_new_Load(object sender, EventArgs e) + { + dataGridView1.Columns[0].ValueType = typeof(Int32); + eass = new EntityAlarmSpeed[SysParam.Instance.channelCount][]; + comboBox1.SelectedIndex = 0; + dataChanged = false; + SetDgvSort(); + } + + private void SetDgvSort() + { + for (int i = 0; i < dataGridView1.Columns.Count; i++) + { + dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; + } + } + + private void InitialDisplay() + { + dataGridView1.Rows.Clear(); + + EntityAlarmSpeed[] aat = SysParam.Instance.channel[comboBox1.SelectedIndex].alarmConfig; + textBox1.Text = SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_l.ToString(); + textBox2.Text = SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_m.ToString(); + textBox3.Text = SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_h.ToString(); + + for (int i = 0; i < aat.Length; i++) + { + if (aat[i] != null) + { + dataGridView1.Rows.Add(1); + dataGridView1.Rows[i].Cells[0].Value = aat[i].alarmSpeed; + dataGridView1.Rows[i].Cells[1].Value = aat[i].lowPassL; + dataGridView1.Rows[i].Cells[2].Value = aat[i].lowPassU; + dataGridView1.Rows[i].Cells[3].Value = aat[i].lowAlarmValue; + dataGridView1.Rows[i].Cells[4].Value = aat[i].lowDefectValue; + dataGridView1.Rows[i].Cells[5].Value = aat[i].midPassL; + dataGridView1.Rows[i].Cells[6].Value = aat[i].midPassU; + dataGridView1.Rows[i].Cells[7].Value = aat[i].midAlarmValue; + dataGridView1.Rows[i].Cells[8].Value = aat[i].midDefectValue; + dataGridView1.Rows[i].Cells[9].Value = aat[i].highPassL; + dataGridView1.Rows[i].Cells[10].Value = aat[i].highPassU; + dataGridView1.Rows[i].Cells[11].Value = aat[i].highAlarmValue; + dataGridView1.Rows[i].Cells[12].Value = aat[i].highDefectValue; + } + } + } + + private void btnAdd_Click(object sender, EventArgs e) + { + this.dataGridView1.Rows.Add(); + } + + private void btnDel_Click(object sender, EventArgs e) + { + if (dataGridView1.SelectedRows.Count <= 0) + { + MessageBox.Show("请选择要删除的行!"); + return; + } + else + { + dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); + } + } + + + + private void btnClose_Click(object sender, EventArgs e) + { + //RefreshOneChannelData(); + if (dataChanged) + { + ConfigHelper.GetInstance("").SaveConfig(Application.StartupPath); + string path = Application.StartupPath + "\\AlarmConfig\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".config"; + ConfigHelper.GetInstance("").SaveAlarmConfig(path); + ConfigHelper.GetInstance("").SaveConfig(Application.StartupPath + "\\AppSetting.config"); + } + this.Close(); + } + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + InitialDisplay(); + } + + private void btnStore_Click(object sender, EventArgs e) + { + RefreshOneChannelData(); + } + + private void RefreshOneChannelData() + { + dataGridView1.Sort(dataGridView1.Columns[0], System.ComponentModel.ListSortDirection.Ascending); + IList ll = new List(); + EntityAlarmSpeed[] ieass = new EntityAlarmSpeed[dataGridView1.Rows.Count]; + for (int i = 0; i < dataGridView1.Rows.Count; i++) + { + EntityAlarmSpeed eas = new EntityAlarmSpeed(); + eas.alarmSpeed = Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value); + eas.lowPassL = Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value); + eas.lowPassU = Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value); + eas.lowAlarmValue = Convert.ToSingle(dataGridView1.Rows[i].Cells[3].Value); + eas.lowDefectValue = Convert.ToSingle(dataGridView1.Rows[i].Cells[4].Value); + if (eas.lowAlarmValue > eas.lowDefectValue) + { + MessageBox.Show("第" + (i + 1) + "行!\n\r不允许中频报警值低于中频缺陷值!\n\r请重新设定!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + eas.midPassL = Convert.ToInt32(dataGridView1.Rows[i].Cells[5].Value); + eas.midPassU = Convert.ToInt32(dataGridView1.Rows[i].Cells[6].Value); + eas.midAlarmValue = Convert.ToSingle(dataGridView1.Rows[i].Cells[7].Value); + eas.midDefectValue = Convert.ToSingle(dataGridView1.Rows[i].Cells[8].Value); + if (eas.midAlarmValue > eas.midDefectValue) + { + MessageBox.Show("第" + (i + 1) + "行!\n\r不允许中频报警值低于中频缺陷值!\n\r请重新设定!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + eas.highPassL = Convert.ToInt32(dataGridView1.Rows[i].Cells[9].Value); + eas.highPassU = Convert.ToInt32(dataGridView1.Rows[i].Cells[10].Value); + eas.highAlarmValue = Convert.ToSingle(dataGridView1.Rows[i].Cells[11].Value); + eas.highDefectValue = Convert.ToSingle(dataGridView1.Rows[i].Cells[12].Value); + if (eas.highAlarmValue > eas.highDefectValue) + { + MessageBox.Show("第" + (i + 1) + "行!\n\r不允许中频报警值低于中频缺陷值!\n\r请重新设定!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + ieass[i] = eas; + ll.Add(eas); + } + eass[comboBox1.SelectedIndex] = ieass; + + ConfigHelper.GetInstance("").SaveBaseData(comboBox1.SelectedIndex, ll); + DbHelper.GetInstance("").UpdateAlarmParamByStandNo(ll, comboBox1.SelectedIndex + 1);//更新数据库 + SysParam.Instance.channel[comboBox1.SelectedIndex].alarmConfig = ieass; + + string pattern = @"^[1-9]\d*$"; + if (Regex.IsMatch(textBox1.Text, pattern)) + { + SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_l = Convert.ToInt32(textBox1.Text.Trim()); + } + else + { + textBox1.Text = SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_l.ToString(); + MessageBox.Show("参数:低频报警触发次数,必须为正整数!"); + return; + } + + if (Regex.IsMatch(textBox2.Text, pattern)) + { + SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_m = Convert.ToInt32(textBox2.Text.Trim()); + } + else + { + textBox2.Text = SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_m.ToString(); + MessageBox.Show("参数:中频报警触发次数,必须为正整数!"); + return; + } + + if (Regex.IsMatch(textBox3.Text, pattern)) + { + SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_h = Convert.ToInt32(textBox3.Text.Trim()); + } + else + { + textBox3.Text = SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_h.ToString(); + MessageBox.Show("参数:高频报警触发次数,必须为正整数!"); + return; + } + + DbHelper.GetInstance("").UpdateAlarmTimes(comboBox1.SelectedIndex + 1, + SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_l, + SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_m, + SysParam.Instance.channel[comboBox1.SelectedIndex].alarmTimes_h); + + dataChanged = true; + } + + private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) + { + if (e.RowIndex > -1 && e.ColumnIndex > -1) + { + DataGridView grid = (DataGridView)sender; + grid.Rows[e.RowIndex].ErrorText = ""; + if (e.ColumnIndex == 3 || e.ColumnIndex == 4 || e.ColumnIndex == 7 || e.ColumnIndex == 8 || e.ColumnIndex == 11 || e.ColumnIndex == 12) + { + float newFloat = 0; + if (!float.TryParse(e.FormattedValue.ToString(), out newFloat)) + { + e.Cancel = true; + grid.Rows[e.RowIndex].ErrorText = "请输入一个数字!"; + MessageBox.Show("输入的值不是一个数字,请重新输入!"); + return; + } + } + else + { + Int32 newInt32 = 0; + if (!Int32.TryParse(e.FormattedValue.ToString(), out newInt32)) + { + e.Cancel = true; + grid.Rows[e.RowIndex].ErrorText = "请输入一个正整数!"; + MessageBox.Show("输入的值不是一个正整数,请重新输入!"); + return; + } + } + } + } + + } +} diff --git a/Host/SetAlarmForm.designer.cs b/Host/SetAlarmForm.designer.cs new file mode 100644 index 0000000..7d5d2a0 --- /dev/null +++ b/Host/SetAlarmForm.designer.cs @@ -0,0 +1,414 @@ +namespace CRVM +{ + partial class SetAlarmForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetAlarmForm)); + this.btnClose = new System.Windows.Forms.Button(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel29 = new System.Windows.Forms.Panel(); + this.label190 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column6 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column7 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column8 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column9 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column10 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column11 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column12 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column13 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btnStore = new System.Windows.Forms.Button(); + this.btnDel = new System.Windows.Forms.Button(); + this.btnAdd = new System.Windows.Forms.Button(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel29.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // btnClose + // + this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnClose.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnClose.Location = new System.Drawing.Point(847, 5); + this.btnClose.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.btnClose.Name = "btnClose"; + this.btnClose.Size = new System.Drawing.Size(80, 35); + this.btnClose.TabIndex = 8; + this.btnClose.Text = "关闭"; + this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.Click += new System.EventHandler(this.btnClose_Click); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.panel29, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.dataGridView1, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 2); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 3; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 60F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(968, 478); + this.tableLayoutPanel1.TabIndex = 11; + // + // panel29 + // + this.panel29.Controls.Add(this.label190); + this.panel29.Controls.Add(this.label3); + this.panel29.Controls.Add(this.comboBox1); + this.panel29.Controls.Add(this.label2); + this.panel29.Controls.Add(this.label1); + this.panel29.Controls.Add(this.textBox1); + this.panel29.Controls.Add(this.textBox2); + this.panel29.Controls.Add(this.textBox3); + this.panel29.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel29.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.panel29.Location = new System.Drawing.Point(4, 4); + this.panel29.Name = "panel29"; + this.panel29.Size = new System.Drawing.Size(960, 54); + this.panel29.TabIndex = 11; + // + // label190 + // + this.label190.AutoSize = true; + this.label190.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label190.Location = new System.Drawing.Point(15, 18); + this.label190.Name = "label190"; + this.label190.Size = new System.Drawing.Size(74, 25); + this.label190.TabIndex = 1; + this.label190.Text = "通道号:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(692, 17); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(169, 25); + this.label3.TabIndex = 1; + this.label3.Text = "高频报警触发次数:"; + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "1#", + "2#", + "3#", + "4#", + "5#", + "6#", + "7#", + "8#"}); + this.comboBox1.Location = new System.Drawing.Point(90, 15); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(60, 29); + this.comboBox1.TabIndex = 0; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(441, 18); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(169, 25); + this.label2.TabIndex = 1; + this.label2.Text = "中频报警触发次数:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(189, 18); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(169, 25); + this.label1.TabIndex = 1; + this.label1.Text = "低频报警触发次数:"; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(360, 15); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(44, 33); + this.textBox1.TabIndex = 1; + this.textBox1.Text = "3"; + // + // textBox2 + // + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(616, 14); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(44, 33); + this.textBox2.TabIndex = 2; + this.textBox2.Text = "3"; + // + // textBox3 + // + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(862, 14); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(44, 33); + this.textBox3.TabIndex = 3; + this.textBox3.Text = "3"; + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToDeleteRows = false; + this.dataGridView1.AllowUserToResizeColumns = false; + this.dataGridView1.AllowUserToResizeRows = false; + this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Column1, + this.Column2, + this.Column3, + this.Column4, + this.Column5, + this.Column6, + this.Column7, + this.Column8, + this.Column9, + this.Column10, + this.Column11, + this.Column12, + this.Column13}); + this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView1.Location = new System.Drawing.Point(4, 65); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowHeadersVisible = false; + this.dataGridView1.RowTemplate.Height = 28; + this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dataGridView1.Size = new System.Drawing.Size(960, 358); + this.dataGridView1.TabIndex = 4; + this.dataGridView1.CellValidating += new System.Windows.Forms.DataGridViewCellValidatingEventHandler(this.dataGridView1_CellValidating); + // + // Column1 + // + this.Column1.HeaderText = "速度"; + this.Column1.Name = "Column1"; + // + // Column2 + // + this.Column2.HeaderText = "低频下限"; + this.Column2.Name = "Column2"; + // + // Column3 + // + this.Column3.HeaderText = "低频上限"; + this.Column3.Name = "Column3"; + // + // Column4 + // + this.Column4.HeaderText = "低报警值"; + this.Column4.Name = "Column4"; + // + // Column5 + // + this.Column5.HeaderText = "低频缺陷"; + this.Column5.Name = "Column5"; + // + // Column6 + // + this.Column6.HeaderText = "中频下限"; + this.Column6.Name = "Column6"; + // + // Column7 + // + this.Column7.HeaderText = "中频上限"; + this.Column7.Name = "Column7"; + // + // Column8 + // + this.Column8.HeaderText = "中报警值"; + this.Column8.Name = "Column8"; + // + // Column9 + // + this.Column9.HeaderText = "中频缺陷"; + this.Column9.Name = "Column9"; + // + // Column10 + // + this.Column10.HeaderText = "高频下限"; + this.Column10.Name = "Column10"; + // + // Column11 + // + this.Column11.HeaderText = "高频上限"; + this.Column11.Name = "Column11"; + // + // Column12 + // + this.Column12.HeaderText = "高报警值"; + this.Column12.Name = "Column12"; + // + // Column13 + // + this.Column13.HeaderText = "高频缺陷"; + this.Column13.Name = "Column13"; + // + // panel1 + // + this.panel1.Controls.Add(this.btnStore); + this.panel1.Controls.Add(this.btnDel); + this.panel1.Controls.Add(this.btnAdd); + this.panel1.Controls.Add(this.btnClose); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(4, 430); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(960, 44); + this.panel1.TabIndex = 13; + // + // btnStore + // + this.btnStore.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnStore.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnStore.Location = new System.Drawing.Point(743, 5); + this.btnStore.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.btnStore.Name = "btnStore"; + this.btnStore.Size = new System.Drawing.Size(80, 35); + this.btnStore.TabIndex = 7; + this.btnStore.Text = "保存"; + this.btnStore.UseVisualStyleBackColor = true; + this.btnStore.Click += new System.EventHandler(this.btnStore_Click); + // + // btnDel + // + this.btnDel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnDel.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnDel.Location = new System.Drawing.Point(639, 5); + this.btnDel.Name = "btnDel"; + this.btnDel.Size = new System.Drawing.Size(80, 35); + this.btnDel.TabIndex = 6; + this.btnDel.Text = "删除"; + this.btnDel.UseVisualStyleBackColor = true; + this.btnDel.Click += new System.EventHandler(this.btnDel_Click); + // + // btnAdd + // + this.btnAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnAdd.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnAdd.Location = new System.Drawing.Point(535, 5); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.Size = new System.Drawing.Size(80, 35); + this.btnAdd.TabIndex = 5; + this.btnAdd.Text = "增加"; + this.btnAdd.UseVisualStyleBackColor = true; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // SetAlarmForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 25F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(968, 478); + this.Controls.Add(this.tableLayoutPanel1); + this.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(6); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SetAlarmForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "报警参数"; + this.Load += new System.EventHandler(this.Parameterforalarm_new_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel29.ResumeLayout(false); + this.panel29.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Button btnClose; + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel29; + private System.Windows.Forms.Label label190; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Button btnDel; + private System.Windows.Forms.Button btnAdd; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button btnStore; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column3; + private System.Windows.Forms.DataGridViewTextBoxColumn Column4; + private System.Windows.Forms.DataGridViewTextBoxColumn Column5; + private System.Windows.Forms.DataGridViewTextBoxColumn Column6; + private System.Windows.Forms.DataGridViewTextBoxColumn Column7; + private System.Windows.Forms.DataGridViewTextBoxColumn Column8; + private System.Windows.Forms.DataGridViewTextBoxColumn Column9; + private System.Windows.Forms.DataGridViewTextBoxColumn Column10; + private System.Windows.Forms.DataGridViewTextBoxColumn Column11; + private System.Windows.Forms.DataGridViewTextBoxColumn Column12; + private System.Windows.Forms.DataGridViewTextBoxColumn Column13; + } +} \ No newline at end of file diff --git a/Host/SetAlarmForm.resx b/Host/SetAlarmForm.resx new file mode 100644 index 0000000..1c0b80a --- /dev/null +++ b/Host/SetAlarmForm.resx @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/SetDataStorageForm.cs b/Host/SetDataStorageForm.cs new file mode 100644 index 0000000..de54390 --- /dev/null +++ b/Host/SetDataStorageForm.cs @@ -0,0 +1,117 @@ +using System; +using System.Windows.Forms; +using CRVM.Entity; +using System.Text.RegularExpressions; +using System.IO; + +namespace CRVM +{ + public partial class SetDataStorageForm : Form + { + public SetDataStorageForm() + { + InitializeComponent(); + } + + private void SetDataStorageForm_Load(object sender, EventArgs e) + { + InitalSetting(); + } + + private void InitalSetting() + { + checkBox_txtType.Checked = SysParam.Instance.checkTXT; + checkBox_datType.Checked = SysParam.Instance.checkBIT; + textBox_savePath.Text = SysParam.Instance.savePath; + textBox_alarmSaveDays.Text = SysParam.Instance.saveDaysAlarm.ToString(); + textBox_noAlarmSaveDays.Text = SysParam.Instance.saveDaysNoAlarm.ToString(); + } + + private void btn_selectSavePath_Click(object sender, EventArgs e) + { + FolderBrowserDialog folderBrowser = new FolderBrowserDialog(); + if (folderBrowser.ShowDialog(this) == DialogResult.OK) + { + textBox_savePath.Text = folderBrowser.SelectedPath; + } + } + + private void checkBox_txtType_CheckedChanged(object sender, EventArgs e) + { + if (checkBox_txtType.Checked) + { + checkBox_datType.Checked = false; + } + else + { + checkBox_datType.Checked = true; + } + } + + private void checkBox_datType_CheckedChanged(object sender, EventArgs e) + { + if (checkBox_datType.Checked) + { + checkBox_txtType.Checked = false; + } + else + { + checkBox_txtType.Checked = true; + } + } + + private void btn_ok_Click(object sender, EventArgs e) + { + string pattern = @"^[1-9]\d*$"; + if (!Regex.IsMatch(textBox_alarmSaveDays.Text.Trim(), pattern)) + { + MessageBox.Show("参数:存储时间(有报警)设置格式不正确,需为正整数!"); + return; + } + if (!Regex.IsMatch(textBox_noAlarmSaveDays.Text.Trim(), pattern)) + { + MessageBox.Show("参数:存储时间(无报警)设置格式不正确,需为正整数!"); + return; + } + if (!Directory.Exists(textBox_savePath.Text.Trim())) + { + MessageBox.Show("存储目录不存在,请重新选择!"); + return; + } + if (!checkBox_datType.Checked && !checkBox_txtType.Checked) + { + MessageBox.Show("请选择文件的存储格式!"); + return; + } + + SysParam.Instance.checkTXT = checkBox_txtType.Checked; + SysParam.Instance.checkBIT = checkBox_datType.Checked; + SysParam.Instance.savePath = textBox_savePath.Text; + SysParam.Instance.saveDaysAlarm = Convert.ToInt32(textBox_alarmSaveDays.Text); + SysParam.Instance.saveDaysNoAlarm = Convert.ToInt32(textBox_noAlarmSaveDays.Text); + + string driveStr = textBox_savePath.Text.Trim().Substring(0, 2); + System.IO.DriveInfo drive = new System.IO.DriveInfo(driveStr); + long availabelfreespace = drive.AvailableFreeSpace / 1024 / 1024 / 1024;//转换为G + long avaliableDays = (availabelfreespace - 10) / 9;//每天5G数据,计算当前可以存储的天数,留10个G的冗余 + int maxSaveDays = SysParam.Instance.saveDaysNoAlarm > SysParam.Instance.saveDaysAlarm ? SysParam.Instance.saveDaysNoAlarm : SysParam.Instance.saveDaysAlarm; + if (maxSaveDays > avaliableDays) + { + MessageBox.Show("当前硬盘剩余空间最多可存储" + avaliableDays + "天的数据,请重新设置存储时间!"); + return; + } + + DialogResult dr = MessageBox.Show("系统将自动删除" + textBox_alarmSaveDays.Text + "天之前的报警数据!\r\n自动删除" + textBox_noAlarmSaveDays.Text + "天之前的不包含报警的数据!", "数据存储", MessageBoxButtons.OKCancel); + if (dr == DialogResult.OK) + { + ConfigHelper.GetInstance("").SaveConfig(Application.StartupPath + "\\AppSetting.config"); + this.Close(); + } + } + + private void bt_cancel_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/Host/SetDataStorageForm.designer.cs b/Host/SetDataStorageForm.designer.cs new file mode 100644 index 0000000..7f1708e --- /dev/null +++ b/Host/SetDataStorageForm.designer.cs @@ -0,0 +1,305 @@ +namespace CRVM +{ + partial class SetDataStorageForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetDataStorageForm)); + this.label1 = new System.Windows.Forms.Label(); + this.textBox_savePath = new System.Windows.Forms.TextBox(); + this.btn_selectSavePath = new System.Windows.Forms.Button(); + this.btn_ok = new System.Windows.Forms.Button(); + this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.label8 = new System.Windows.Forms.Label(); + this.textBox_alarmSaveDays = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.textBox_noAlarmSaveDays = new System.Windows.Forms.TextBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.checkBox_datType = new System.Windows.Forms.CheckBox(); + this.checkBox_txtType = new System.Windows.Forms.CheckBox(); + this.panel3 = new System.Windows.Forms.Panel(); + this.bt_cancel = new System.Windows.Forms.Button(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.panel3.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(41, 42); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(78, 21); + this.label1.TabIndex = 0; + this.label1.Text = "选择目录:"; + // + // textBox_savePath + // + this.textBox_savePath.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox_savePath.Location = new System.Drawing.Point(127, 36); + this.textBox_savePath.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.textBox_savePath.Name = "textBox_savePath"; + this.textBox_savePath.Size = new System.Drawing.Size(341, 33); + this.textBox_savePath.TabIndex = 2; + // + // btn_selectSavePath + // + this.btn_selectSavePath.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_selectSavePath.Location = new System.Drawing.Point(442, 36); + this.btn_selectSavePath.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.btn_selectSavePath.Name = "btn_selectSavePath"; + this.btn_selectSavePath.Size = new System.Drawing.Size(26, 33); + this.btn_selectSavePath.TabIndex = 3; + this.btn_selectSavePath.Text = "…"; + this.btn_selectSavePath.UseVisualStyleBackColor = true; + this.btn_selectSavePath.Click += new System.EventHandler(this.btn_selectSavePath_Click); + // + // btn_ok + // + this.btn_ok.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btn_ok.Location = new System.Drawing.Point(414, 5); + this.btn_ok.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.btn_ok.Name = "btn_ok"; + this.btn_ok.Size = new System.Drawing.Size(80, 35); + this.btn_ok.TabIndex = 6; + this.btn_ok.Text = " 确定"; + this.btn_ok.UseVisualStyleBackColor = true; + this.btn_ok.Click += new System.EventHandler(this.btn_ok_Click); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.panel3, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(523, 332); + this.tableLayoutPanel1.TabIndex = 9; + // + // panel2 + // + this.panel2.Controls.Add(this.groupBox1); + this.panel2.Controls.Add(this.groupBox2); + this.panel2.Controls.Add(this.groupBox3); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(4, 4); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(515, 273); + this.panel2.TabIndex = 4; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.btn_selectSavePath); + this.groupBox1.Controls.Add(this.textBox_savePath); + this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox1.Location = new System.Drawing.Point(8, 164); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(501, 100); + this.groupBox1.TabIndex = 14; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "存储路径"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.label8); + this.groupBox2.Controls.Add(this.textBox_alarmSaveDays); + this.groupBox2.Controls.Add(this.label5); + this.groupBox2.Controls.Add(this.textBox_noAlarmSaveDays); + this.groupBox2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox2.Location = new System.Drawing.Point(259, 8); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(250, 150); + this.groupBox2.TabIndex = 13; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "存储时间(天)"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.Location = new System.Drawing.Point(10, 48); + this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(136, 21); + this.label8.TabIndex = 9; + this.label8.Text = "存储时间(有报警):"; + // + // textBox_alarmSaveDays + // + this.textBox_alarmSaveDays.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox_alarmSaveDays.Location = new System.Drawing.Point(147, 44); + this.textBox_alarmSaveDays.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.textBox_alarmSaveDays.Name = "textBox_alarmSaveDays"; + this.textBox_alarmSaveDays.Size = new System.Drawing.Size(88, 29); + this.textBox_alarmSaveDays.TabIndex = 4; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(10, 93); + this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(136, 21); + this.label5.TabIndex = 9; + this.label5.Text = "存储时间(无报警):"; + // + // textBox_noAlarmSaveDays + // + this.textBox_noAlarmSaveDays.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox_noAlarmSaveDays.Location = new System.Drawing.Point(147, 90); + this.textBox_noAlarmSaveDays.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.textBox_noAlarmSaveDays.Name = "textBox_noAlarmSaveDays"; + this.textBox_noAlarmSaveDays.Size = new System.Drawing.Size(88, 29); + this.textBox_noAlarmSaveDays.TabIndex = 4; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.checkBox_datType); + this.groupBox3.Controls.Add(this.checkBox_txtType); + this.groupBox3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox3.Location = new System.Drawing.Point(8, 8); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(250, 150); + this.groupBox3.TabIndex = 12; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "存储类型"; + // + // checkBox_datType + // + this.checkBox_datType.AutoSize = true; + this.checkBox_datType.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.checkBox_datType.Location = new System.Drawing.Point(56, 92); + this.checkBox_datType.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.checkBox_datType.Name = "checkBox_datType"; + this.checkBox_datType.Size = new System.Drawing.Size(148, 25); + this.checkBox_datType.TabIndex = 1; + this.checkBox_datType.Text = "二进制文件(.dat)"; + this.checkBox_datType.UseVisualStyleBackColor = true; + this.checkBox_datType.CheckedChanged += new System.EventHandler(this.checkBox_datType_CheckedChanged); + // + // checkBox_txtType + // + this.checkBox_txtType.AutoSize = true; + this.checkBox_txtType.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.checkBox_txtType.Location = new System.Drawing.Point(56, 46); + this.checkBox_txtType.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.checkBox_txtType.Name = "checkBox_txtType"; + this.checkBox_txtType.Size = new System.Drawing.Size(127, 25); + this.checkBox_txtType.TabIndex = 0; + this.checkBox_txtType.Text = "文本文件(.txt)"; + this.checkBox_txtType.UseVisualStyleBackColor = true; + this.checkBox_txtType.CheckedChanged += new System.EventHandler(this.checkBox_txtType_CheckedChanged); + // + // panel3 + // + this.panel3.Controls.Add(this.btn_ok); + this.panel3.Controls.Add(this.bt_cancel); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(4, 284); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(515, 44); + this.panel3.TabIndex = 5; + // + // bt_cancel + // + this.bt_cancel.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.bt_cancel.Location = new System.Drawing.Point(330, 5); + this.bt_cancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.bt_cancel.Name = "bt_cancel"; + this.bt_cancel.Size = new System.Drawing.Size(80, 35); + this.bt_cancel.TabIndex = 5; + this.bt_cancel.Text = "取消"; + this.bt_cancel.UseVisualStyleBackColor = true; + this.bt_cancel.Click += new System.EventHandler(this.bt_cancel_Click); + // + // SetDataStorageForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(523, 332); + this.Controls.Add(this.tableLayoutPanel1); + this.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SetDataStorageForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "文件存储"; + this.Load += new System.EventHandler(this.SetDataStorageForm_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.panel3.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox_savePath; + private System.Windows.Forms.Button btn_selectSavePath; + private System.Windows.Forms.Button btn_ok; + private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Button bt_cancel; + private System.Windows.Forms.TextBox textBox_alarmSaveDays; + private System.Windows.Forms.TextBox textBox_noAlarmSaveDays; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.CheckBox checkBox_datType; + private System.Windows.Forms.CheckBox checkBox_txtType; + private System.Windows.Forms.GroupBox groupBox1; + } +} \ No newline at end of file diff --git a/Host/SetDataStorageForm.resx b/Host/SetDataStorageForm.resx new file mode 100644 index 0000000..9eea39f --- /dev/null +++ b/Host/SetDataStorageForm.resx @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 25 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/SetDisplayForm.cs b/Host/SetDisplayForm.cs new file mode 100644 index 0000000..3daaecc --- /dev/null +++ b/Host/SetDisplayForm.cs @@ -0,0 +1,64 @@ +using System; +using System.Windows.Forms; +using CRVM.Entity; +namespace CRVM +{ + public partial class SetDisplayForm : Form + { + public SetDisplayForm() + { + InitializeComponent(); + } + + private void displayingingSetting_Load(object sender, EventArgs e) + { + ColorPickerTime.BackColor = SysParam.Instance.colorTime; + ColorPickerFre.BackColor = SysParam.Instance.colorFre; + ColorPickerEnergy.BackColor = SysParam.Instance.colorEnergy; + ColorPickerSpeed.BackColor = SysParam.Instance.colorSpeed; + ColorPickerAlarm.BackColor = SysParam.Instance.colorAlarm; + ColorPickerClose.BackColor = SysParam.Instance.colorDefect; + ColorPickerCut.BackColor = SysParam.Instance.colorCut; + ColorPickerWR.BackColor = SysParam.Instance.colorWorkRoll; + ColorPickerMR.BackColor = SysParam.Instance.colorMidRoll; + ColorPickerBR.BackColor = SysParam.Instance.colorBackupRoll; + ColorPickerFont.BackColor = SysParam.Instance.colorFont; + ColorPickerBack.BackColor = SysParam.Instance.colorBackgroud; + ComboBoxFontSize.Text = SysParam.Instance.fontSize.ToString(); + ComboBoxGrid.SelectedIndex = SysParam.Instance.BackgroundGridOn ? 1 : 0; + comboBoxRollLine.SelectedIndex = SysParam.Instance.rollLineVisible ? 1 : 0; + } + + private void OkDrawing_Click(object sender, EventArgs e) + { + SysParam.Instance.colorTime = ColorPickerTime.BackColor; + SysParam.Instance.colorFre = ColorPickerFre.BackColor; + SysParam.Instance.colorEnergy = ColorPickerEnergy.BackColor; + SysParam.Instance.colorSpeed = ColorPickerSpeed.BackColor; + SysParam.Instance.colorAlarm = ColorPickerAlarm.BackColor; + SysParam.Instance.colorDefect = ColorPickerClose.BackColor; + SysParam.Instance.colorCut = ColorPickerCut.BackColor; + SysParam.Instance.colorWorkRoll = ColorPickerWR.BackColor; + SysParam.Instance.colorMidRoll = ColorPickerMR.BackColor; + SysParam.Instance.colorBackupRoll = ColorPickerBR.BackColor; + SysParam.Instance.colorFont = ColorPickerFont.BackColor; + SysParam.Instance.colorBackgroud = ColorPickerBack.BackColor; + SysParam.Instance.fontSize = Convert.ToInt32(ComboBoxFontSize.Text); + SysParam.Instance.BackgroundGridOn = ComboBoxGrid.SelectedIndex == 1 ? true : false; + SysParam.Instance.rollLineVisible = comboBoxRollLine.SelectedIndex == 1 ? true : false; + this.Close(); + } + + private void CancelDrawing_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void ColorPickerButton1_Click(object sender, EventArgs e) + { + Button bt = (Button)sender; + colorDialog1.ShowDialog(); + bt.BackColor = colorDialog1.Color; + } + } +} diff --git a/Host/SetDisplayForm.designer.cs b/Host/SetDisplayForm.designer.cs new file mode 100644 index 0000000..d482ee1 --- /dev/null +++ b/Host/SetDisplayForm.designer.cs @@ -0,0 +1,576 @@ +namespace CRVM +{ + partial class SetDisplayForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetDisplayForm)); + this.Label5 = new System.Windows.Forms.Label(); + this.ComboBoxFontSize = new System.Windows.Forms.ComboBox(); + this.Label6 = new System.Windows.Forms.Label(); + this.ComboBoxGrid = new System.Windows.Forms.ComboBox(); + this.Label3 = new System.Windows.Forms.Label(); + this.CancelDrawing = new System.Windows.Forms.Button(); + this.OkDrawing = new System.Windows.Forms.Button(); + this.Label8 = new System.Windows.Forms.Label(); + this.Label7 = new System.Windows.Forms.Label(); + this.Label4 = new System.Windows.Forms.Label(); + this.Label2 = new System.Windows.Forms.Label(); + this.Label1 = new System.Windows.Forms.Label(); + this.colorDialog1 = new System.Windows.Forms.ColorDialog(); + this.ColorPickerTime = new System.Windows.Forms.Button(); + this.ColorPickerCut = new System.Windows.Forms.Button(); + this.ColorPickerAlarm = new System.Windows.Forms.Button(); + this.ColorPickerFont = new System.Windows.Forms.Button(); + this.ColorPickerBack = new System.Windows.Forms.Button(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.ColorPickerSpeed = new System.Windows.Forms.Button(); + this.ColorPickerEnergy = new System.Windows.Forms.Button(); + this.ColorPickerFre = new System.Windows.Forms.Button(); + this.label12 = new System.Windows.Forms.Label(); + this.comboBoxRollLine = new System.Windows.Forms.ComboBox(); + this.label14 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.ColorPickerClose = new System.Windows.Forms.Button(); + this.ColorPickerBR = new System.Windows.Forms.Button(); + this.ColorPickerMR = new System.Windows.Forms.Button(); + this.ColorPickerWR = new System.Windows.Forms.Button(); + this.panel2 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // Label5 + // + this.Label5.AutoSize = true; + this.Label5.BackColor = System.Drawing.Color.Transparent; + this.Label5.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Label5.Location = new System.Drawing.Point(8, 114); + this.Label5.Name = "Label5"; + this.Label5.Size = new System.Drawing.Size(88, 25); + this.Label5.TabIndex = 8; + this.Label5.Text = "能量曲线"; + // + // ComboBoxFontSize + // + this.ComboBoxFontSize.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.ComboBoxFontSize.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ComboBoxFontSize.FormattingEnabled = true; + this.ComboBoxFontSize.Items.AddRange(new object[] { + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "18", + "20"}); + this.ComboBoxFontSize.Location = new System.Drawing.Point(103, 194); + this.ComboBoxFontSize.Name = "ComboBoxFontSize"; + this.ComboBoxFontSize.Size = new System.Drawing.Size(50, 29); + this.ComboBoxFontSize.TabIndex = 12; + // + // Label6 + // + this.Label6.AutoSize = true; + this.Label6.BackColor = System.Drawing.Color.Transparent; + this.Label6.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Label6.Location = new System.Drawing.Point(8, 155); + this.Label6.Name = "Label6"; + this.Label6.Size = new System.Drawing.Size(88, 25); + this.Label6.TabIndex = 6; + this.Label6.Text = "速度曲线"; + // + // ComboBoxGrid + // + this.ComboBoxGrid.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.ComboBoxGrid.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ComboBoxGrid.FormattingEnabled = true; + this.ComboBoxGrid.Items.AddRange(new object[] { + "否", + "是"}); + this.ComboBoxGrid.Location = new System.Drawing.Point(295, 194); + this.ComboBoxGrid.Name = "ComboBoxGrid"; + this.ComboBoxGrid.Size = new System.Drawing.Size(50, 29); + this.ComboBoxGrid.TabIndex = 13; + // + // Label3 + // + this.Label3.AutoSize = true; + this.Label3.BackColor = System.Drawing.Color.Transparent; + this.Label3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Label3.Location = new System.Drawing.Point(8, 73); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(88, 25); + this.Label3.TabIndex = 7; + this.Label3.Text = "频域曲线"; + // + // CancelDrawing + // + this.CancelDrawing.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CancelDrawing.Location = new System.Drawing.Point(357, 9); + this.CancelDrawing.Name = "CancelDrawing"; + this.CancelDrawing.Size = new System.Drawing.Size(80, 35); + this.CancelDrawing.TabIndex = 15; + this.CancelDrawing.Text = "取消"; + this.CancelDrawing.UseVisualStyleBackColor = true; + this.CancelDrawing.Click += new System.EventHandler(this.CancelDrawing_Click); + // + // OkDrawing + // + this.OkDrawing.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.OkDrawing.Location = new System.Drawing.Point(443, 9); + this.OkDrawing.Name = "OkDrawing"; + this.OkDrawing.Size = new System.Drawing.Size(80, 35); + this.OkDrawing.TabIndex = 16; + this.OkDrawing.Text = "确定"; + this.OkDrawing.UseVisualStyleBackColor = true; + this.OkDrawing.Click += new System.EventHandler(this.OkDrawing_Click); + // + // Label8 + // + this.Label8.AutoSize = true; + this.Label8.BackColor = System.Drawing.Color.Transparent; + this.Label8.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Label8.Location = new System.Drawing.Point(382, 32); + this.Label8.Name = "Label8"; + this.Label8.Size = new System.Drawing.Size(88, 25); + this.Label8.TabIndex = 19; + this.Label8.Text = "剪切标志"; + // + // Label7 + // + this.Label7.AutoSize = true; + this.Label7.BackColor = System.Drawing.Color.Transparent; + this.Label7.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Label7.Location = new System.Drawing.Point(203, 32); + this.Label7.Name = "Label7"; + this.Label7.Size = new System.Drawing.Size(88, 25); + this.Label7.TabIndex = 18; + this.Label7.Text = "报警曲线"; + // + // Label4 + // + this.Label4.AutoSize = true; + this.Label4.BackColor = System.Drawing.Color.Transparent; + this.Label4.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Label4.Location = new System.Drawing.Point(203, 155); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(88, 25); + this.Label4.TabIndex = 16; + this.Label4.Text = "字体颜色"; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.BackColor = System.Drawing.Color.Transparent; + this.Label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Label2.Location = new System.Drawing.Point(203, 114); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(88, 25); + this.Label2.TabIndex = 17; + this.Label2.Text = "背景颜色"; + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.BackColor = System.Drawing.Color.Transparent; + this.Label1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Label1.Location = new System.Drawing.Point(8, 32); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(88, 25); + this.Label1.TabIndex = 20; + this.Label1.Text = "时域曲线"; + // + // ColorPickerTime + // + this.ColorPickerTime.BackColor = System.Drawing.Color.Red; + this.ColorPickerTime.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerTime.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerTime.Location = new System.Drawing.Point(103, 30); + this.ColorPickerTime.Name = "ColorPickerTime"; + this.ColorPickerTime.Size = new System.Drawing.Size(25, 25); + this.ColorPickerTime.TabIndex = 0; + this.ColorPickerTime.UseVisualStyleBackColor = false; + this.ColorPickerTime.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // ColorPickerCut + // + this.ColorPickerCut.BackColor = System.Drawing.Color.Red; + this.ColorPickerCut.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerCut.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerCut.Location = new System.Drawing.Point(472, 30); + this.ColorPickerCut.Name = "ColorPickerCut"; + this.ColorPickerCut.Size = new System.Drawing.Size(25, 25); + this.ColorPickerCut.TabIndex = 8; + this.ColorPickerCut.UseVisualStyleBackColor = false; + this.ColorPickerCut.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // ColorPickerAlarm + // + this.ColorPickerAlarm.BackColor = System.Drawing.Color.Red; + this.ColorPickerAlarm.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerAlarm.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerAlarm.Location = new System.Drawing.Point(295, 30); + this.ColorPickerAlarm.Name = "ColorPickerAlarm"; + this.ColorPickerAlarm.Size = new System.Drawing.Size(25, 25); + this.ColorPickerAlarm.TabIndex = 4; + this.ColorPickerAlarm.UseVisualStyleBackColor = false; + this.ColorPickerAlarm.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // ColorPickerFont + // + this.ColorPickerFont.BackColor = System.Drawing.Color.Red; + this.ColorPickerFont.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerFont.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerFont.Location = new System.Drawing.Point(295, 153); + this.ColorPickerFont.Name = "ColorPickerFont"; + this.ColorPickerFont.Size = new System.Drawing.Size(25, 25); + this.ColorPickerFont.TabIndex = 7; + this.ColorPickerFont.UseVisualStyleBackColor = false; + this.ColorPickerFont.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // ColorPickerBack + // + this.ColorPickerBack.BackColor = System.Drawing.Color.Red; + this.ColorPickerBack.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerBack.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerBack.Location = new System.Drawing.Point(295, 112); + this.ColorPickerBack.Name = "ColorPickerBack"; + this.ColorPickerBack.Size = new System.Drawing.Size(25, 25); + this.ColorPickerBack.TabIndex = 6; + this.ColorPickerBack.UseVisualStyleBackColor = false; + this.ColorPickerBack.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 55F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(546, 320); + this.tableLayoutPanel1.TabIndex = 21; + // + // panel1 + // + this.panel1.Controls.Add(this.ColorPickerSpeed); + this.panel1.Controls.Add(this.ColorPickerEnergy); + this.panel1.Controls.Add(this.ColorPickerFre); + this.panel1.Controls.Add(this.ColorPickerTime); + this.panel1.Controls.Add(this.Label3); + this.panel1.Controls.Add(this.Label8); + this.panel1.Controls.Add(this.Label1); + this.panel1.Controls.Add(this.label12); + this.panel1.Controls.Add(this.Label7); + this.panel1.Controls.Add(this.comboBoxRollLine); + this.panel1.Controls.Add(this.ComboBoxGrid); + this.panel1.Controls.Add(this.Label4); + this.panel1.Controls.Add(this.label14); + this.panel1.Controls.Add(this.label15); + this.panel1.Controls.Add(this.label13); + this.panel1.Controls.Add(this.Label6); + this.panel1.Controls.Add(this.label11); + this.panel1.Controls.Add(this.label10); + this.panel1.Controls.Add(this.label9); + this.panel1.Controls.Add(this.Label2); + this.panel1.Controls.Add(this.ComboBoxFontSize); + this.panel1.Controls.Add(this.ColorPickerBack); + this.panel1.Controls.Add(this.Label5); + this.panel1.Controls.Add(this.ColorPickerFont); + this.panel1.Controls.Add(this.ColorPickerClose); + this.panel1.Controls.Add(this.ColorPickerAlarm); + this.panel1.Controls.Add(this.ColorPickerBR); + this.panel1.Controls.Add(this.ColorPickerMR); + this.panel1.Controls.Add(this.ColorPickerWR); + this.panel1.Controls.Add(this.ColorPickerCut); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(4, 4); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(538, 256); + this.panel1.TabIndex = 22; + // + // ColorPickerSpeed + // + this.ColorPickerSpeed.BackColor = System.Drawing.Color.Red; + this.ColorPickerSpeed.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerSpeed.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerSpeed.Location = new System.Drawing.Point(103, 153); + this.ColorPickerSpeed.Name = "ColorPickerSpeed"; + this.ColorPickerSpeed.Size = new System.Drawing.Size(25, 25); + this.ColorPickerSpeed.TabIndex = 3; + this.ColorPickerSpeed.UseVisualStyleBackColor = false; + this.ColorPickerSpeed.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // ColorPickerEnergy + // + this.ColorPickerEnergy.BackColor = System.Drawing.Color.Red; + this.ColorPickerEnergy.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerEnergy.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerEnergy.Location = new System.Drawing.Point(103, 112); + this.ColorPickerEnergy.Name = "ColorPickerEnergy"; + this.ColorPickerEnergy.Size = new System.Drawing.Size(25, 25); + this.ColorPickerEnergy.TabIndex = 2; + this.ColorPickerEnergy.UseVisualStyleBackColor = false; + this.ColorPickerEnergy.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // ColorPickerFre + // + this.ColorPickerFre.BackColor = System.Drawing.Color.Red; + this.ColorPickerFre.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerFre.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerFre.Location = new System.Drawing.Point(103, 71); + this.ColorPickerFre.Name = "ColorPickerFre"; + this.ColorPickerFre.Size = new System.Drawing.Size(25, 25); + this.ColorPickerFre.TabIndex = 1; + this.ColorPickerFre.UseVisualStyleBackColor = false; + this.ColorPickerFre.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // label12 + // + this.label12.AutoSize = true; + this.label12.BackColor = System.Drawing.Color.Transparent; + this.label12.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.Location = new System.Drawing.Point(203, 73); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(88, 25); + this.label12.TabIndex = 18; + this.label12.Text = "缺陷曲线"; + // + // comboBoxRollLine + // + this.comboBoxRollLine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxRollLine.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.comboBoxRollLine.FormattingEnabled = true; + this.comboBoxRollLine.Items.AddRange(new object[] { + "否", + "是"}); + this.comboBoxRollLine.Location = new System.Drawing.Point(472, 194); + this.comboBoxRollLine.Name = "comboBoxRollLine"; + this.comboBoxRollLine.Size = new System.Drawing.Size(50, 29); + this.comboBoxRollLine.TabIndex = 14; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.BackColor = System.Drawing.Color.Transparent; + this.label14.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label14.Location = new System.Drawing.Point(8, 197); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(88, 25); + this.label14.TabIndex = 6; + this.label14.Text = "字体大小"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.BackColor = System.Drawing.Color.Transparent; + this.label15.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label15.Location = new System.Drawing.Point(383, 197); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(88, 25); + this.label15.TabIndex = 6; + this.label15.Text = "轧辊刻度"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.BackColor = System.Drawing.Color.Transparent; + this.label13.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label13.Location = new System.Drawing.Point(203, 197); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(88, 25); + this.label13.TabIndex = 6; + this.label13.Text = "栅格显示"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.BackColor = System.Drawing.Color.Transparent; + this.label11.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label11.Location = new System.Drawing.Point(397, 155); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(69, 25); + this.label11.TabIndex = 17; + this.label11.Text = "支撑辊"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.BackColor = System.Drawing.Color.Transparent; + this.label10.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.Location = new System.Drawing.Point(397, 114); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(69, 25); + this.label10.TabIndex = 17; + this.label10.Text = "中间辊"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.Location = new System.Drawing.Point(397, 73); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(69, 25); + this.label9.TabIndex = 17; + this.label9.Text = "工作辊"; + // + // ColorPickerClose + // + this.ColorPickerClose.BackColor = System.Drawing.Color.Red; + this.ColorPickerClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerClose.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerClose.Location = new System.Drawing.Point(295, 71); + this.ColorPickerClose.Name = "ColorPickerClose"; + this.ColorPickerClose.Size = new System.Drawing.Size(25, 25); + this.ColorPickerClose.TabIndex = 5; + this.ColorPickerClose.UseVisualStyleBackColor = false; + this.ColorPickerClose.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // ColorPickerBR + // + this.ColorPickerBR.BackColor = System.Drawing.Color.Red; + this.ColorPickerBR.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerBR.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerBR.Location = new System.Drawing.Point(472, 153); + this.ColorPickerBR.Name = "ColorPickerBR"; + this.ColorPickerBR.Size = new System.Drawing.Size(25, 25); + this.ColorPickerBR.TabIndex = 11; + this.ColorPickerBR.UseVisualStyleBackColor = false; + this.ColorPickerBR.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // ColorPickerMR + // + this.ColorPickerMR.BackColor = System.Drawing.Color.Red; + this.ColorPickerMR.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerMR.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerMR.Location = new System.Drawing.Point(472, 112); + this.ColorPickerMR.Name = "ColorPickerMR"; + this.ColorPickerMR.Size = new System.Drawing.Size(25, 25); + this.ColorPickerMR.TabIndex = 10; + this.ColorPickerMR.UseVisualStyleBackColor = false; + this.ColorPickerMR.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // ColorPickerWR + // + this.ColorPickerWR.BackColor = System.Drawing.Color.Red; + this.ColorPickerWR.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ColorPickerWR.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ColorPickerWR.Location = new System.Drawing.Point(472, 71); + this.ColorPickerWR.Name = "ColorPickerWR"; + this.ColorPickerWR.Size = new System.Drawing.Size(25, 25); + this.ColorPickerWR.TabIndex = 9; + this.ColorPickerWR.UseVisualStyleBackColor = false; + this.ColorPickerWR.Click += new System.EventHandler(this.ColorPickerButton1_Click); + // + // panel2 + // + this.panel2.Controls.Add(this.CancelDrawing); + this.panel2.Controls.Add(this.OkDrawing); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(4, 267); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(538, 49); + this.panel2.TabIndex = 23; + // + // SetDisplayForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(546, 320); + this.Controls.Add(this.tableLayoutPanel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SetDisplayForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "式样设置"; + this.Load += new System.EventHandler(this.displayingingSetting_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + internal System.Windows.Forms.Label Label5; + internal System.Windows.Forms.ComboBox ComboBoxFontSize; + internal System.Windows.Forms.Label Label6; + internal System.Windows.Forms.ComboBox ComboBoxGrid; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.Button CancelDrawing; + internal System.Windows.Forms.Button OkDrawing; + internal System.Windows.Forms.Label Label8; + internal System.Windows.Forms.Label Label7; + internal System.Windows.Forms.Label Label4; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Label Label1; + private System.Windows.Forms.ColorDialog colorDialog1; + internal System.Windows.Forms.Button ColorPickerTime; + internal System.Windows.Forms.Button ColorPickerCut; + internal System.Windows.Forms.Button ColorPickerAlarm; + internal System.Windows.Forms.Button ColorPickerFont; + internal System.Windows.Forms.Button ColorPickerBack; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + internal System.Windows.Forms.Button ColorPickerFre; + internal System.Windows.Forms.Button ColorPickerSpeed; + internal System.Windows.Forms.Button ColorPickerEnergy; + internal System.Windows.Forms.Label label12; + internal System.Windows.Forms.Label label14; + internal System.Windows.Forms.Label label13; + internal System.Windows.Forms.Label label11; + internal System.Windows.Forms.Label label10; + internal System.Windows.Forms.Label label9; + internal System.Windows.Forms.Button ColorPickerClose; + internal System.Windows.Forms.Button ColorPickerBR; + internal System.Windows.Forms.Button ColorPickerMR; + internal System.Windows.Forms.Button ColorPickerWR; + internal System.Windows.Forms.ComboBox comboBoxRollLine; + internal System.Windows.Forms.Label label15; + } +} \ No newline at end of file diff --git a/Host/SetDisplayForm.resx b/Host/SetDisplayForm.resx new file mode 100644 index 0000000..c0ef341 --- /dev/null +++ b/Host/SetDisplayForm.resx @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 25 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/SetPasswordForm.cs b/Host/SetPasswordForm.cs new file mode 100644 index 0000000..814ced6 --- /dev/null +++ b/Host/SetPasswordForm.cs @@ -0,0 +1,67 @@ +using System; +using System.Windows.Forms; +using CRVM.Entity; +using CRVM.SIDExcuter; + +namespace CRVM +{ + public partial class SetPasswordForm : Form + { + + public SetPasswordForm() + { + InitializeComponent(); + } + + private void cancel_Click(object sender, EventArgs e) + { + this.Close(); + } + //20151101 jxp + private void Setpassword_Load(object sender, EventArgs e) + { + this.old_pswd.PasswordChar = '*'; + this.new_pswd.PasswordChar = '*'; + this.again_pswd.PasswordChar = '*'; + } + + private void button1_Click(object sender, EventArgs e) + { + try + { + if (DbHelper.GetInstance("").IsUser(old_pswd.Text.Trim())) + { + if (SysParam.Instance.DataIsMatch(old_pswd.Text.Trim(), "^[a-zA-Z0-9]{6,16}$") == false) + { + MessageBox.Show("您输入的新密码格式不对,需为6~16字母与数字的组合!"); + this.new_pswd.Text = ""; + again_pswd.Text = ""; + } + else + { + if (new_pswd.Text.Trim() != again_pswd.Text.Trim()) + { + MessageBox.Show("您两次输入的密码不一致,请重新输入!"); + again_pswd.Text = ""; + } + else + { + DbHelper.GetInstance("").ChangePassWord(new_pswd.Text.Trim()); + MessageBox.Show("密码修改成功!"); + } + } + } + else + { + MessageBox.Show("原始密码错误!"); + } + } + catch (Exception ex) + { + MessageShowForm form = new MessageShowForm("警告", ex.ToString()); + form.ShowDialog(); + } + + } + } +} diff --git a/Host/SetPasswordForm.designer.cs b/Host/SetPasswordForm.designer.cs new file mode 100644 index 0000000..1dc69ac --- /dev/null +++ b/Host/SetPasswordForm.designer.cs @@ -0,0 +1,205 @@ +namespace CRVM +{ + partial class SetPasswordForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetPasswordForm)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.old_pswd = new System.Windows.Forms.TextBox(); + this.new_pswd = new System.Windows.Forms.TextBox(); + this.again_pswd = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.cancel = new System.Windows.Forms.Button(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(58, 39); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(74, 25); + this.label1.TabIndex = 0; + this.label1.Text = "原密码:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(58, 76); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(74, 25); + this.label2.TabIndex = 1; + this.label2.Text = "新密码:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(58, 113); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(93, 25); + this.label3.TabIndex = 2; + this.label3.Text = "密码确认:"; + // + // old_pswd + // + this.old_pswd.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.old_pswd.Location = new System.Drawing.Point(152, 36); + this.old_pswd.Name = "old_pswd"; + this.old_pswd.Size = new System.Drawing.Size(117, 33); + this.old_pswd.TabIndex = 0; + // + // new_pswd + // + this.new_pswd.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.new_pswd.Location = new System.Drawing.Point(152, 73); + this.new_pswd.Name = "new_pswd"; + this.new_pswd.Size = new System.Drawing.Size(117, 33); + this.new_pswd.TabIndex = 1; + // + // again_pswd + // + this.again_pswd.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.again_pswd.Location = new System.Drawing.Point(152, 110); + this.again_pswd.Name = "again_pswd"; + this.again_pswd.Size = new System.Drawing.Size(117, 33); + this.again_pswd.TabIndex = 2; + // + // button1 + // + this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(240, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(80, 35); + this.button1.TabIndex = 3; + this.button1.Text = "确定"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(331, 254); + this.tableLayoutPanel1.TabIndex = 7; + // + // panel1 + // + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.again_pswd); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.new_pswd); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.old_pswd); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(4, 4); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(322, 196); + this.panel1.TabIndex = 0; + // + // panel2 + // + this.panel2.Controls.Add(this.cancel); + this.panel2.Controls.Add(this.button1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(4, 207); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(322, 44); + this.panel2.TabIndex = 1; + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.cancel.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.cancel.Location = new System.Drawing.Point(156, 5); + this.cancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(80, 35); + this.cancel.TabIndex = 4; + this.cancel.Text = "取消"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // SetPasswordForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.ClientSize = new System.Drawing.Size(331, 254); + this.Controls.Add(this.tableLayoutPanel1); + this.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(5); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SetPasswordForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "密码设置"; + this.Load += new System.EventHandler(this.Setpassword_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox old_pswd; + private System.Windows.Forms.TextBox new_pswd; + private System.Windows.Forms.TextBox again_pswd; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button cancel; + } +} \ No newline at end of file diff --git a/Host/SetPasswordForm.resx b/Host/SetPasswordForm.resx new file mode 100644 index 0000000..3fba45a --- /dev/null +++ b/Host/SetPasswordForm.resx @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/SetSampleForm.cs b/Host/SetSampleForm.cs new file mode 100644 index 0000000..6a649fd --- /dev/null +++ b/Host/SetSampleForm.cs @@ -0,0 +1,57 @@ +using System; +using System.Windows.Forms; +using CRVM.Entity; + +namespace CRVM +{ + public partial class SetSampleForm : Form + { + public SetSampleForm() + { + InitializeComponent(); + } + + private void Sampleparameter_Load(object sender, EventArgs e) + { + ComboBoxExpoint.Text = SysParam.Instance.samplePoint.ToString(); + ComboBoxExfre.Text = SysParam.Instance.sampleFre.ToString(); + } + + private void cancel_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void button1_Click(object sender, EventArgs e) + { + int samplePoint = 1024; + int sampleFre = 3072; + if (int.TryParse(ComboBoxExpoint.Text.Trim(), out samplePoint)) + { + SysParam.Instance.samplePoint = samplePoint; + } + else + { + ComboBoxExpoint.Text = SysParam.Instance.samplePoint.ToString(); + MessageBox.Show("采集点数内容格式不正确,请重新输入!"); + return; + } + + if (int.TryParse(ComboBoxExfre.Text.Trim(), out sampleFre)) + { + SysParam.Instance.sampleFre = sampleFre; + } + else + { + ComboBoxExfre.Text = SysParam.Instance.sampleFre.ToString(); + MessageBox.Show("采集频率内容格式不正确,请重新输入!"); + return; + } + + ConfigHelper.GetInstance("").SaveConfig(SysParam.Instance.appPath + "\\AppSetting.config"); + this.DialogResult = DialogResult.OK; + this.Close(); + } + + } +} diff --git a/Host/SetSampleForm.designer.cs b/Host/SetSampleForm.designer.cs new file mode 100644 index 0000000..d9888e2 --- /dev/null +++ b/Host/SetSampleForm.designer.cs @@ -0,0 +1,201 @@ +namespace CRVM +{ + partial class SetSampleForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetSampleForm)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.ComboBoxExpoint = new System.Windows.Forms.ComboBox(); + this.ComboBoxExfre = new System.Windows.Forms.ComboBox(); + this.bt_OK = new System.Windows.Forms.Button(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.cancel = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(54, 55); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(93, 25); + this.label1.TabIndex = 0; + this.label1.Text = "采样点数:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(54, 92); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(93, 25); + this.label2.TabIndex = 1; + this.label2.Text = "采样频率:"; + // + // ComboBoxExpoint + // + this.ComboBoxExpoint.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ComboBoxExpoint.FormattingEnabled = true; + this.ComboBoxExpoint.Items.AddRange(new object[] { + "1024"}); + this.ComboBoxExpoint.Location = new System.Drawing.Point(148, 52); + this.ComboBoxExpoint.Name = "ComboBoxExpoint"; + this.ComboBoxExpoint.Size = new System.Drawing.Size(100, 33); + this.ComboBoxExpoint.TabIndex = 0; + // + // ComboBoxExfre + // + this.ComboBoxExfre.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ComboBoxExfre.FormattingEnabled = true; + this.ComboBoxExfre.Items.AddRange(new object[] { + "3072", + "5120"}); + this.ComboBoxExfre.Location = new System.Drawing.Point(148, 89); + this.ComboBoxExfre.Name = "ComboBoxExfre"; + this.ComboBoxExfre.Size = new System.Drawing.Size(100, 33); + this.ComboBoxExfre.TabIndex = 1; + // + // bt_OK + // + this.bt_OK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.bt_OK.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.bt_OK.Location = new System.Drawing.Point(276, 6); + this.bt_OK.Name = "bt_OK"; + this.bt_OK.Size = new System.Drawing.Size(80, 35); + this.bt_OK.TabIndex = 2; + this.bt_OK.Text = "确定"; + this.bt_OK.UseVisualStyleBackColor = true; + this.bt_OK.Click += new System.EventHandler(this.button1_Click); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(370, 258); + this.tableLayoutPanel1.TabIndex = 6; + // + // panel1 + // + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.ComboBoxExfre); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.ComboBoxExpoint); + this.panel1.Controls.Add(this.label2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(4, 4); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(362, 199); + this.panel1.TabIndex = 0; + // + // panel2 + // + this.panel2.Controls.Add(this.cancel); + this.panel2.Controls.Add(this.bt_OK); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(4, 210); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(362, 44); + this.panel2.TabIndex = 1; + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.cancel.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.cancel.Location = new System.Drawing.Point(184, 6); + this.cancel.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(80, 35); + this.cancel.TabIndex = 3; + this.cancel.Text = "取消"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.Red; + this.label3.Location = new System.Drawing.Point(56, 166); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(236, 17); + this.label3.TabIndex = 2; + this.label3.Text = "采集点数和采样频率请设置合法的正整数!"; + // + // SetSampleForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(370, 258); + this.Controls.Add(this.tableLayoutPanel1); + this.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(5); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SetSampleForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "采样参数设置"; + this.Load += new System.EventHandler(this.Sampleparameter_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox ComboBoxExpoint; + private System.Windows.Forms.ComboBox ComboBoxExfre; + private System.Windows.Forms.Button bt_OK; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Label label3; + } +} \ No newline at end of file diff --git a/Host/SetSampleForm.resx b/Host/SetSampleForm.resx new file mode 100644 index 0000000..3fba45a --- /dev/null +++ b/Host/SetSampleForm.resx @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/SetSenserForm.cs b/Host/SetSenserForm.cs new file mode 100644 index 0000000..75e6129 --- /dev/null +++ b/Host/SetSenserForm.cs @@ -0,0 +1,63 @@ +using System; +using System.Windows.Forms; +using CRVM.Entity; + +namespace CRVM +{ + public partial class SetSenserForm : Form + { + public SetSenserForm() + { + InitializeComponent(); + } + + private void Sensor_Load(object sender, EventArgs e) + { + InitalSetting(); + } + + private void InitalSetting() + { + for (int i = 0; i < 8; i++) + { + TextBox tb1 = (TextBox)this.panel1.Controls["textBox" + (i + 1)]; + if (tb1 != null) + { + tb1.Text = SysParam.Instance.channel[i].vibSens.ToString(); + } + } + } + + private void button2_Click(object sender, EventArgs e) + { + for (int i = 0; i < 8; i++) + { + TextBox tb1 = (TextBox)this.panel1.Controls["textBox" + (i + 1)]; + Label lab = (Label)this.panel1.Controls["label" + (i + 1)]; + if (tb1 != null) + { + float value = 0f; + if (float.TryParse(tb1.Text.Trim(), out value)) + { + SysParam.Instance.channel[i].vibSens = value; + } + else + { + tb1.Text = SysParam.Instance.channel[i].vibSens.ToString(); + MessageBox.Show(lab.Text + "传感器参数格式不对(用户需输入内容需是数字类型)"); + return; + } + } + } + + ConfigHelper.GetInstance("").SaveConfig(Application.StartupPath + "\\AppSetting.config"); + this.DialogResult = DialogResult.OK; + this.Close(); + } + + private void cancel_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/Host/SetSenserForm.designer.cs b/Host/SetSenserForm.designer.cs new file mode 100644 index 0000000..637ba31 --- /dev/null +++ b/Host/SetSenserForm.designer.cs @@ -0,0 +1,440 @@ +namespace CRVM +{ + partial class SetSenserForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetSenserForm)); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.cancel = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label12 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label71 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.textBox7 = new System.Windows.Forms.TextBox(); + this.textBox8 = new System.Windows.Forms.TextBox(); + this.textBox6 = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(332, 42); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(78, 25); + this.label5.TabIndex = 0; + this.label5.Text = "5#机架:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.Location = new System.Drawing.Point(31, 193); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(78, 25); + this.label4.TabIndex = 1; + this.label4.Text = "4#机架:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(31, 142); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(78, 25); + this.label3.TabIndex = 2; + this.label3.Text = "3#机架:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(31, 91); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(78, 25); + this.label2.TabIndex = 3; + this.label2.Text = "2#机架:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(31, 40); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(78, 25); + this.label1.TabIndex = 4; + this.label1.Text = "1#机架:"; + // + // cancel + // + this.cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.cancel.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.cancel.Location = new System.Drawing.Point(439, 5); + this.cancel.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.cancel.Name = "cancel"; + this.cancel.Size = new System.Drawing.Size(80, 35); + this.cancel.TabIndex = 17; + this.cancel.Text = "取消"; + this.cancel.UseVisualStyleBackColor = true; + this.cancel.Click += new System.EventHandler(this.cancel_Click); + // + // button2 + // + this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.button2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(537, 5); + this.button2.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(80, 36); + this.button2.TabIndex = 18; + this.button2.Text = " 确定"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // textBox5 + // + this.textBox5.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox5.Location = new System.Drawing.Point(411, 40); + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(81, 33); + this.textBox5.TabIndex = 4; + this.textBox5.Text = "95"; + // + // textBox4 + // + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(113, 190); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(81, 33); + this.textBox4.TabIndex = 3; + this.textBox4.Text = "95"; + // + // textBox3 + // + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(113, 139); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(81, 33); + this.textBox3.TabIndex = 2; + this.textBox3.Text = "95"; + // + // textBox2 + // + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(113, 88); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(81, 33); + this.textBox2.TabIndex = 1; + this.textBox2.Text = "95"; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(113, 37); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(81, 33); + this.textBox1.TabIndex = 0; + this.textBox1.Text = "95"; + // + // panel1 + // + this.panel1.Controls.Add(this.label12); + this.panel1.Controls.Add(this.label14); + this.panel1.Controls.Add(this.label15); + this.panel1.Controls.Add(this.label16); + this.panel1.Controls.Add(this.label10); + this.panel1.Controls.Add(this.label9); + this.panel1.Controls.Add(this.label71); + this.panel1.Controls.Add(this.label8); + this.panel1.Controls.Add(this.label5); + this.panel1.Controls.Add(this.label7); + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.textBox7); + this.panel1.Controls.Add(this.textBox8); + this.panel1.Controls.Add(this.textBox6); + this.panel1.Controls.Add(this.label6); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.label13); + this.panel1.Controls.Add(this.textBox1); + this.panel1.Controls.Add(this.textBox2); + this.panel1.Controls.Add(this.textBox5); + this.panel1.Controls.Add(this.textBox3); + this.panel1.Controls.Add(this.textBox4); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(1, 1); + this.panel1.Margin = new System.Windows.Forms.Padding(0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(647, 231); + this.panel1.TabIndex = 35; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.Location = new System.Drawing.Point(497, 92); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(75, 25); + this.label12.TabIndex = 14; + this.label12.Text = "(mV/g)"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label14.Location = new System.Drawing.Point(497, 141); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(75, 25); + this.label14.TabIndex = 13; + this.label14.Text = "(mV/g)"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label15.Location = new System.Drawing.Point(497, 192); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(75, 25); + this.label15.TabIndex = 12; + this.label15.Text = "(mV/g)"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label16.Location = new System.Drawing.Point(497, 39); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(75, 25); + this.label16.TabIndex = 11; + this.label16.Text = "(mV/g)"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.Location = new System.Drawing.Point(197, 93); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(75, 25); + this.label10.TabIndex = 10; + this.label10.Text = "(mV/g)"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label9.Location = new System.Drawing.Point(197, 142); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(75, 25); + this.label9.TabIndex = 9; + this.label9.Text = "(mV/g)"; + // + // label71 + // + this.label71.AutoSize = true; + this.label71.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label71.Location = new System.Drawing.Point(197, 193); + this.label71.Name = "label71"; + this.label71.Size = new System.Drawing.Size(75, 25); + this.label71.TabIndex = 8; + this.label71.Text = "(mV/g)"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.Location = new System.Drawing.Point(332, 190); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(78, 25); + this.label8.TabIndex = 0; + this.label8.Text = "8#通道:"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label7.Location = new System.Drawing.Point(332, 140); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(78, 25); + this.label7.TabIndex = 1; + this.label7.Text = "7#通道:"; + // + // textBox7 + // + this.textBox7.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox7.Location = new System.Drawing.Point(411, 138); + this.textBox7.Name = "textBox7"; + this.textBox7.Size = new System.Drawing.Size(81, 33); + this.textBox7.TabIndex = 6; + this.textBox7.Text = "95"; + // + // textBox8 + // + this.textBox8.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox8.Location = new System.Drawing.Point(411, 187); + this.textBox8.Name = "textBox8"; + this.textBox8.Size = new System.Drawing.Size(81, 33); + this.textBox8.TabIndex = 7; + this.textBox8.Text = "95"; + // + // textBox6 + // + this.textBox6.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox6.Location = new System.Drawing.Point(411, 89); + this.textBox6.Name = "textBox6"; + this.textBox6.Size = new System.Drawing.Size(81, 33); + this.textBox6.TabIndex = 5; + this.textBox6.Text = "95"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.Location = new System.Drawing.Point(332, 91); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(78, 25); + this.label6.TabIndex = 2; + this.label6.Text = "6#通道:"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label13.Location = new System.Drawing.Point(197, 40); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(75, 25); + this.label13.TabIndex = 6; + this.label13.Text = "(mV/g)"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(649, 284); + this.tableLayoutPanel1.TabIndex = 36; + // + // panel2 + // + this.panel2.Controls.Add(this.button2); + this.panel2.Controls.Add(this.cancel); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(1, 233); + this.panel2.Margin = new System.Windows.Forms.Padding(0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(647, 50); + this.panel2.TabIndex = 37; + // + // SetSenserForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(649, 284); + this.Controls.Add(this.tableLayoutPanel1); + this.Font = new System.Drawing.Font("新宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(5, 4, 5, 4); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SetSenserForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "传感器参数设置"; + this.Load += new System.EventHandler(this.Sensor_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button cancel; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.TextBox textBox5; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox textBox7; + private System.Windows.Forms.TextBox textBox8; + private System.Windows.Forms.TextBox textBox6; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label71; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label16; + } +} \ No newline at end of file diff --git a/Host/SetSenserForm.resx b/Host/SetSenserForm.resx new file mode 100644 index 0000000..3fba45a --- /dev/null +++ b/Host/SetSenserForm.resx @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/Statusmodify.cs b/Host/Statusmodify.cs new file mode 100644 index 0000000..9fb0ec6 --- /dev/null +++ b/Host/Statusmodify.cs @@ -0,0 +1,128 @@ +using System; +using System.Data; +using System.Windows.Forms; +using CRVM.Utility; + +namespace CRVM +{ + public partial class Statusmodify : Form + { + private LogicCon logicConn; + public EDBItem Access + { + get; + set; + } + public EDBItem Oracle + { + get; + set; + } + public Statusmodify() + { + InitializeComponent(); + } + private void DataBaseSql(LogicCon logicConn, string sql) + { + logicConn.DataBase(sql); + } + private void btnAccModify_Click(object sender, EventArgs e) + { + if (AccessEvent.Text == "1000"||AccessEvent.Text == "2000"||AccessEvent.Text == "3000") + { + if (Access.DataType == "" || Access.Password == "" || Access.Database == "") + { + MessageBox.Show("请确认Access数据库信息是否输入完全"); + this.Close(); + } + else + { + if (AccessStatus.Text == "" || AccessEvent.Text == "") + { + MessageBox.Show("请输入完整的修改数据"); + } + else + { + ModifyStatus(Access); + } + } + } + else if (AccessEvent.Text != "1000") + { + MessageBox.Show("找不到你所输入的事件"); + } + } + private void btnOraModify_Click(object sender, EventArgs e) + { + if (oracleEventno.Text != "4000") + { + MessageBox.Show("找不到你所输入的事件"); + } + else + { + if (Oracle.Database == "" || Oracle.DataType == "" || Oracle.Ipaddress == "" || Oracle.Password == "" || Oracle.Userid == "") + { + MessageBox.Show("请确认oracle数据库信息是否输入完全"); + this.Close(); + } + else + { + if (oracleStatus.Text == "" || oracleEventno.Text == "") + { + + MessageBox.Show("请输入完整的修改数据"); + } + else + { + ModifyStatus(Oracle); + } + } + } + } + private void ModifyStatus(EDBItem conItem) + { + if (conItem.DataType == "oracle") + { + logicConn = new LogicCon(conItem, conItem.Userid); + DataTable dt = new DataTable(); + string IsModify = string.Format("select * from T_STATUS where status={0} and eventno={1}", oracleStatus.Text, oracleEventno.Text); + dt = logicConn.SelTableData("T_STATUS", IsModify); + if (dt != null && dt.Rows.Count != 0) + { + MessageBox.Show("请验证你输入需要修改的数据是否正确!"); + } + else + { + string update = string.Format("update T_STATUS set status={0} where eventno={1}", oracleStatus.Text, oracleEventno.Text); + DataBaseSql(logicConn, update); + dt = logicConn.SelTableData("T_STATUS", IsModify); + if (dt != null && dt.Rows.Count != 0) + { + MessageBox.Show("修改成功!"); + } + } + } + else if (conItem .DataType =="access") + { + logicConn = new LogicCon(conItem, conItem.Userid); + DataTable dt = new DataTable(); + string IsModify = string.Format("select * from ZT_Inf where AlarmStatus={0} and Alarmevent={1}", AccessStatus.Text, AccessEvent.Text); + dt = logicConn.SelTableData("ZT_Inf", IsModify); + if (dt != null && dt.Rows.Count != 0) + { + MessageBox.Show("请验证你输入需要修改的数据是否正确!"); + } + else + { + string update = string.Format("update ZT_Inf set AlarmStatus={0} where Alarmevent={1}", AccessStatus.Text, AccessEvent.Text); + DataBaseSql(logicConn, update); + dt = logicConn.SelTableData("ZT_Inf", IsModify); + if (dt != null && dt.Rows.Count != 0) + { + MessageBox.Show("修改成功!"); + } + } + } + } + } +} diff --git a/Host/Statusmodify.designer.cs b/Host/Statusmodify.designer.cs new file mode 100644 index 0000000..01bc29c --- /dev/null +++ b/Host/Statusmodify.designer.cs @@ -0,0 +1,242 @@ +namespace CRVM +{ + partial class Statusmodify + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Statusmodify)); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.label4 = new System.Windows.Forms.Label(); + this.oracleEventno = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); + this.oracleStatus = new System.Windows.Forms.TextBox(); + this.btnOraModify = new System.Windows.Forms.Button(); + this.label13 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label1 = new System.Windows.Forms.Label(); + this.btnAccModify = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.AccessStatus = new System.Windows.Forms.TextBox(); + this.AccessEvent = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.groupBox2, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(563, 294); + this.tableLayoutPanel1.TabIndex = 0; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.label4); + this.groupBox2.Controls.Add(this.oracleEventno); + this.groupBox2.Controls.Add(this.label15); + this.groupBox2.Controls.Add(this.oracleStatus); + this.groupBox2.Controls.Add(this.btnOraModify); + this.groupBox2.Controls.Add(this.label13); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox2.Font = new System.Drawing.Font("微软雅黑", 12F); + this.groupBox2.Location = new System.Drawing.Point(284, 3); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(276, 288); + this.groupBox2.TabIndex = 7; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Oracle修改操作"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(28, 110); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(158, 21); + this.label4.TabIndex = 32; + this.label4.Text = "4000:生成出口卷号"; + // + // oracleEventno + // + this.oracleEventno.Location = new System.Drawing.Point(121, 60); + this.oracleEventno.Name = "oracleEventno"; + this.oracleEventno.Size = new System.Drawing.Size(98, 29); + this.oracleEventno.TabIndex = 27; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(6, 63); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(87, 21); + this.label15.TabIndex = 26; + this.label15.Text = "EVENTNO"; + // + // oracleStatus + // + this.oracleStatus.Location = new System.Drawing.Point(121, 168); + this.oracleStatus.Name = "oracleStatus"; + this.oracleStatus.Size = new System.Drawing.Size(98, 29); + this.oracleStatus.TabIndex = 28; + // + // btnOraModify + // + this.btnOraModify.Location = new System.Drawing.Point(71, 220); + this.btnOraModify.Name = "btnOraModify"; + this.btnOraModify.Size = new System.Drawing.Size(115, 41); + this.btnOraModify.TabIndex = 31; + this.btnOraModify.Text = "修改数据"; + this.btnOraModify.UseVisualStyleBackColor = true; + this.btnOraModify.Click += new System.EventHandler(this.btnOraModify_Click); + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(6, 171); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(69, 21); + this.label13.TabIndex = 30; + this.label13.Text = "STATUS"; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.btnAccModify); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.AccessStatus); + this.groupBox1.Controls.Add(this.AccessEvent); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 12F); + this.groupBox1.Location = new System.Drawing.Point(3, 3); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(275, 288); + this.groupBox1.TabIndex = 6; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Access修改操作"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(20, 98); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(190, 63); + this.label1.TabIndex = 45; + this.label1.Text = "1000:剪切完成事件\r\n2000:振动报警事件\r\n3000:钢卷数据更新事件\r\n"; + // + // btnAccModify + // + this.btnAccModify.Location = new System.Drawing.Point(71, 228); + this.btnAccModify.Name = "btnAccModify"; + this.btnAccModify.Size = new System.Drawing.Size(118, 39); + this.btnAccModify.TabIndex = 40; + this.btnAccModify.Text = "修改数据"; + this.btnAccModify.UseVisualStyleBackColor = true; + this.btnAccModify.Click += new System.EventHandler(this.btnAccModify_Click); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 176); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(102, 21); + this.label2.TabIndex = 44; + this.label2.Text = "AlarmStatus"; + // + // AccessStatus + // + this.AccessStatus.Location = new System.Drawing.Point(147, 168); + this.AccessStatus.Name = "AccessStatus"; + this.AccessStatus.Size = new System.Drawing.Size(98, 29); + this.AccessStatus.TabIndex = 43; + // + // AccessEvent + // + this.AccessEvent.Location = new System.Drawing.Point(147, 59); + this.AccessEvent.Name = "AccessEvent"; + this.AccessEvent.Size = new System.Drawing.Size(98, 29); + this.AccessEvent.TabIndex = 41; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(6, 63); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(97, 21); + this.label3.TabIndex = 39; + this.label3.Text = "Alarmevent"; + // + // Statusmodify + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(563, 294); + this.Controls.Add(this.tableLayoutPanel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "Statusmodify"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "修改状态"; + this.tableLayoutPanel1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button btnAccModify; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox AccessStatus; + private System.Windows.Forms.TextBox AccessEvent; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox oracleEventno; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.TextBox oracleStatus; + private System.Windows.Forms.Button btnOraModify; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label4; + } +} \ No newline at end of file diff --git a/Host/Statusmodify.resx b/Host/Statusmodify.resx new file mode 100644 index 0000000..fa5f853 --- /dev/null +++ b/Host/Statusmodify.resx @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAIiEAAAEAGACYDgAAFgAAACgAAAAiAAAAQgAAAAEAGAAAAAAAcA4AAAAAAAAAAAAAAAAAAAAA + AAClg2iQXC+QYjeXYzeVYjWTYjeSYTeSYTeTYjeTYTeTYTeTYjeTYjeTYjaTYjaTYjaTYjaTYjeTYTeT + YTeTYTeTYjeTYjeTYTeTYTeTYTeTYjeTYjeTYTeTYTeUYTaUYTaIVy7JtawAAKKFa3k2AHguAH4yAHw7 + AIRAAIdGAIdHAIdGAIdFAIdFAIdGAIdGAIZGAIdHAIdHAIdFAIdGAIdFAIdFAIdFAIdGAIdGAIdFAIdF + AIdFAIdGAIdGAIdFAIdFAIVGAIdGAIA4AMWskwAA////////9/b25t/XxrWloXJKcTcAfTkAgEAAhkgA + iUwDiEsCiU0HikwDiEwEiUwAiUwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsAiUsAiEwAiEwAiUsAiUsA + iUsAiUsCgj4Axa+VAAD////////////////o5ebDu7X5+/3ZysOyjXOKUyR1NQCCPACJRgCMSwCLSwCL + SQSKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACITAKDPgDFr5YAAP// + //////3///3//vn////////5/v////////////Tu6cWqk5VhMno1AIdDAIxGBIlMAIpLAIpMAIlMAIlM + AIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA/////////v/////+/v///v79 + ///+/f7////+/vz/tJyNrZWFxayc/vz4sJF2fkQGiEYAh0wDikoDi0sAiUoEiEsHikwAikwAikwAikwA + ikwAikwAikwAikwAikwAiEwCgz4Axa+WAAD//////////////////////////////v/7/v75//3///// + +fzl39vAraz8/f/b08yOVzV9PACHRgCLSQKSRwiJTAKKSwCJTACKTACKTACKTACKTACKTACKTACKTACI + TAKDPgDFr5YAAP///////////////////////////////vj9/////v///////////////9TNyMrFw7uo + me7k362Hbn9FC4dFAIdLAolMAIpMAIlMAIpMAIpMAIpMAIpMAIpMAIpMAIhMAoM+AMWvlgAA//////// + /////////////////////f39//7/2dLOxbGr0s3I1dDK4NbP////////59/Uhlg3rZF3///+kF8zhz8A + jksAjkoDjEsDiUwAikwAikwAikwAikwAikwAiEwCgz4Axq+WAAD////////////////////////////6 + /f38/f3//f/////////y8O6JZUduLgCdbkfx7ez////l29R9Tia2lX+6nYSHRA6GRgCHSwOKTACKTACJ + SwCKTACKTACKTACITAKDPgDGr5YAAP////////////////////////////79/vz+/Pj9/vr6/vr8/vj/ + //////78+bWeh4pSH3M2AMy+q////8WvnnpPJsKkl5ptRYVGAIpMAIlLAIpMAIlLAIpMAIpMAIhMAoM+ + AMavlgAA/////////////////////////////////////////////////////f//+/39////////2su9 + dTsAhE8VwqiP////eToAi0sVoGE3jUoAkEoDik0AiUsAikwAikwAiEwCgz4Axa+WAAD///////////// + ///////////////////////////////////8/Pz7/v7+/f3LxcbOw7/o4t7////HtKJ3MQCLURbg2NG8 + nol6NwCNSASKTACLSgSJTACKTACKTACITAKDPgDFr5YAAP////////////////////////////////// + //////7+/v7+/v////////////////Tx8behkYpoR+Pa1f///5pwUWokAL6ZgtbMvIFDAIlIAIlOAIpL + AIpMAIpMAIhMAoM+AMWvlgAA/////////////////////////////////////////f39////2dna1dLS + v6ej8u3q////5ujp5d7enn5igFAn1MW1zLikcSIAiE4YxKmWiEoMi0oAiUwAikwAikwAiEwCgz4Axa+W + AAD////////////////////////////////////////9/f79/f3////////t6ue7pJeTa1C+nYf8//r/ + ///w4d15PxOkfWHl3NSHSxJ7OACUWSqFSgKKTACJSwCKTACITAKDPgDFr5YAAP////////////7///// + //////////3+/v7+/v3+/v7+/P39/v38/vn8/f3//f///////66TeHIwAKyBYeHZ0////7yelpBVILqY + e6V7WoBAAIdJAolLAIpMAIpMAIhMAoM+AMWvlgAAyr+3k2Q0nXJY////t6GLzLKiuaOQ//////////// + +f7/+v7///7+/Pz+//7//P///P7/////////waSNdycAgk4a9/vtuKGYezMAj2Avt4Vgh0AAjU0CiEsA + iEsCiEwAgz4Axa6WAACbbEKCPgCFRgB1NwCKPAB+PQCFPACBSxqsjG7Tx77////////9///+///r5uXf + 3N3////l6eXPxsPSycr///+Sa0RwKwC5momwjXOKRgCDSg+jaTyESAONTQCNTACISwKDPgDFrpYAAJ5z + T4lGAIdMAIlMAIhLAo1OAIhKCIlHAIVAAHw7AH5GC7yege/r6////9TSy6mQhcW3tP////Pz96CGaauE + c////9K7rnQsAIpZL7KCY5BWGo5HAIxMBIdKBodLA4hMAIM+AMWulgAAnnNNh0UAiksAikwAikwAiUsA + ikwAiUwAiUoCi0wDiUgCjD0AdzIAjmI34tfR////p452hlgxu5+H/P/81sSyZicA386/////gkwegDkA + lFwvllwliEgCikwAikwAiEwCgz4Axa6WAACgc02HRQCKTACKTACKTACKTACKTACKTAKJSgOKSgOISgKI + SQeHTACLRgB8NwCKUyDOvLP59+yMXTJ3MQDDrJb49PSHVjWPXzj///6qhmp+OACJSguKSgOJTQCKSwCI + TAKDPgDFrpYAAJ9zTYZFAIpMAIpMAIpMAIpMAIpMAIpMAIpLAIlLAIpNAIhLA4hOAItLAodLBolIAIM+ + AHs3AMewnLCZfnI0AIJCDPr48qR+V28jANfHvbiWfn48AIlJAJBKA4dMAIhMAoM+AMWulgAAnnRNh0UA + ikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwAiksAiUwAikwAiUsAjU0Ah0kGiEAAklQrvJ2Li0YO + ejUAsol5mF8ufzAAlm1NwJV9fzwAhU0AjUoCiEwAgz4Axa6WAACedE2HRQCKTACKTACKTACKTACKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACHSwaRSwCJSQaHSQCCPgCsckyHRQuCQgCFRQCuhWV+PQCC + Th7Ir56FQASHTACISwCDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIlLAIpMAIhMAohMAo5NA4dKBIZHAJhbIJVZHI1OAIBGGaRrPIdEAIJGE5xiLIhIAIhMAIM+ + AMWulgAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAiUsAikwA + iksAiUsAiksAikwAiEkAhUgEjUsDiUcDiEsIjksIiEkAiEkDiEsCiEwAgz4Axa6WAACedE2HRQCKTACK + TACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACKTACISgCLTQKKTACG + TACLTACLSwKMSgKKSwCKTACKTACKTACITAKDPgDFrpYAAJ50TYdFAIpMAIpMAIpMAIpMAIpMAIpMAIpM + AIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIpMAIlLAIpMAIpMAIlMAIpMAIpMAIpLAolMAIpM + AIlMAIpLAIhMAoM+AMWulQAAnnRNh0UAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwAikwA + ikwAikwAikwAikwAikwAikwAikwAiUsAiUsAiksAiUsAiUwAiUwAiksAiUsAiksAikwAiEwCgz4Axa6V + AACfdE2HRQCJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJ + TACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACJTACITAKDPgDFrpQAAJduQoM5AIZAAIZAAIY/ + AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIZAAIY/AIY/AIZAAIZAAIY/AIY/AIY/AIZAAIZAAIY/AIY/ + AIY/AIZAAIZAAIY/AIY/AIZCAIc+AHwzAMWolgAAw62htJZvtZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1tZp1 + tZp1tZh3r5Fw29DGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Host/VibrationTest.ico b/Host/VibrationTest.ico new file mode 100644 index 0000000000000000000000000000000000000000..8288b3e3ef5bbaae6579e3e2d7ef0611f7f0c90e GIT binary patch literal 270398 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Host/controls/ChannelSelect.cs b/Host/controls/ChannelSelect.cs new file mode 100644 index 0000000..f266666 --- /dev/null +++ b/Host/controls/ChannelSelect.cs @@ -0,0 +1,65 @@ +using System; +using CRVM.Entity; +namespace CRVM +{ + public partial class ChannelSelect : WizardBaseChannel + { + public ChannelSelect() + { + InitializeComponent(); + } + + private void MultiChannel_Load(object sender, EventArgs e) + { + + CheckBox_zj01.Checked = SysParam.Instance.channel[0].ChChecked; + CheckBox_zj02.Checked = SysParam.Instance.channel[1].ChChecked; + CheckBox_zj03.Checked = SysParam.Instance.channel[2].ChChecked; + CheckBox_zj04.Checked = SysParam.Instance.channel[3].ChChecked; + CheckBox_zj05.Checked = SysParam.Instance.channel[4].ChChecked; + CheckBox_zj06.Checked = SysParam.Instance.channel[5].ChChecked; + CheckBox_zj07.Checked = SysParam.Instance.channel[6].ChChecked; + CheckBox_zj08.Checked = SysParam.Instance.channel[7].ChChecked; + } + + private void CheckBox_zj05_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.channel[4].ChChecked = CheckBox_zj05.Checked; + } + + private void CheckBox_zj04_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.channel[3].ChChecked = CheckBox_zj04.Checked; + } + + private void CheckBox_zj03_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.channel[2].ChChecked = CheckBox_zj03.Checked; + } + + private void CheckBox_zj02_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.channel[1].ChChecked = CheckBox_zj02.Checked; + } + + private void CheckBox_zj01_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.channel[0].ChChecked = CheckBox_zj01.Checked; + } + + private void CheckBox_zj06_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.channel[5].ChChecked = CheckBox_zj06.Checked; + } + + private void CheckBox_zj07_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.channel[6].ChChecked = CheckBox_zj07.Checked; + } + + private void CheckBox_zj08_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.channel[7].ChChecked = CheckBox_zj08.Checked; + } + } +} diff --git a/Host/controls/ChannelSelect.designer.cs b/Host/controls/ChannelSelect.designer.cs new file mode 100644 index 0000000..1ce59d9 --- /dev/null +++ b/Host/controls/ChannelSelect.designer.cs @@ -0,0 +1,178 @@ +namespace CRVM +{ + partial class ChannelSelect + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.CheckBox_zj05 = new System.Windows.Forms.CheckBox(); + this.CheckBox_zj04 = new System.Windows.Forms.CheckBox(); + this.CheckBox_zj03 = new System.Windows.Forms.CheckBox(); + this.CheckBox_zj02 = new System.Windows.Forms.CheckBox(); + this.CheckBox_zj01 = new System.Windows.Forms.CheckBox(); + this.CheckBox_zj06 = new System.Windows.Forms.CheckBox(); + this.CheckBox_zj07 = new System.Windows.Forms.CheckBox(); + this.CheckBox_zj08 = new System.Windows.Forms.CheckBox(); + this.SuspendLayout(); + // + // CheckBox_zj05 + // + this.CheckBox_zj05.AutoSize = true; + this.CheckBox_zj05.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_zj05.Location = new System.Drawing.Point(9, 68); + this.CheckBox_zj05.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.CheckBox_zj05.Name = "CheckBox_zj05"; + this.CheckBox_zj05.Size = new System.Drawing.Size(70, 21); + this.CheckBox_zj05.TabIndex = 4; + this.CheckBox_zj05.Text = "5号机架"; + this.CheckBox_zj05.UseVisualStyleBackColor = true; + this.CheckBox_zj05.CheckedChanged += new System.EventHandler(this.CheckBox_zj05_CheckedChanged); + // + // CheckBox_zj04 + // + this.CheckBox_zj04.AutoSize = true; + this.CheckBox_zj04.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_zj04.Location = new System.Drawing.Point(78, 39); + this.CheckBox_zj04.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.CheckBox_zj04.Name = "CheckBox_zj04"; + this.CheckBox_zj04.Size = new System.Drawing.Size(70, 21); + this.CheckBox_zj04.TabIndex = 3; + this.CheckBox_zj04.Text = "4号机架"; + this.CheckBox_zj04.UseVisualStyleBackColor = true; + this.CheckBox_zj04.CheckedChanged += new System.EventHandler(this.CheckBox_zj04_CheckedChanged); + // + // CheckBox_zj03 + // + this.CheckBox_zj03.AutoSize = true; + this.CheckBox_zj03.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_zj03.Location = new System.Drawing.Point(9, 39); + this.CheckBox_zj03.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.CheckBox_zj03.Name = "CheckBox_zj03"; + this.CheckBox_zj03.Size = new System.Drawing.Size(70, 21); + this.CheckBox_zj03.TabIndex = 2; + this.CheckBox_zj03.Text = "3号机架"; + this.CheckBox_zj03.UseVisualStyleBackColor = true; + this.CheckBox_zj03.CheckedChanged += new System.EventHandler(this.CheckBox_zj03_CheckedChanged); + // + // CheckBox_zj02 + // + this.CheckBox_zj02.AutoSize = true; + this.CheckBox_zj02.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_zj02.Location = new System.Drawing.Point(78, 10); + this.CheckBox_zj02.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.CheckBox_zj02.Name = "CheckBox_zj02"; + this.CheckBox_zj02.Size = new System.Drawing.Size(70, 21); + this.CheckBox_zj02.TabIndex = 1; + this.CheckBox_zj02.Text = "2号机架"; + this.CheckBox_zj02.UseVisualStyleBackColor = true; + this.CheckBox_zj02.CheckedChanged += new System.EventHandler(this.CheckBox_zj02_CheckedChanged); + // + // CheckBox_zj01 + // + this.CheckBox_zj01.AutoSize = true; + this.CheckBox_zj01.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_zj01.Location = new System.Drawing.Point(9, 10); + this.CheckBox_zj01.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.CheckBox_zj01.Name = "CheckBox_zj01"; + this.CheckBox_zj01.Size = new System.Drawing.Size(70, 21); + this.CheckBox_zj01.TabIndex = 0; + this.CheckBox_zj01.Text = "1号机架"; + this.CheckBox_zj01.UseVisualStyleBackColor = true; + this.CheckBox_zj01.CheckedChanged += new System.EventHandler(this.CheckBox_zj01_CheckedChanged); + // + // CheckBox_zj06 + // + this.CheckBox_zj06.AutoSize = true; + this.CheckBox_zj06.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_zj06.Location = new System.Drawing.Point(78, 68); + this.CheckBox_zj06.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.CheckBox_zj06.Name = "CheckBox_zj06"; + this.CheckBox_zj06.Size = new System.Drawing.Size(70, 21); + this.CheckBox_zj06.TabIndex = 5; + this.CheckBox_zj06.Text = "6号机架"; + this.CheckBox_zj06.UseVisualStyleBackColor = true; + this.CheckBox_zj06.CheckedChanged += new System.EventHandler(this.CheckBox_zj06_CheckedChanged); + // + // CheckBox_zj07 + // + this.CheckBox_zj07.AutoSize = true; + this.CheckBox_zj07.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_zj07.Location = new System.Drawing.Point(9, 97); + this.CheckBox_zj07.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.CheckBox_zj07.Name = "CheckBox_zj07"; + this.CheckBox_zj07.Size = new System.Drawing.Size(58, 21); + this.CheckBox_zj07.TabIndex = 6; + this.CheckBox_zj07.Text = "备用2"; + this.CheckBox_zj07.UseVisualStyleBackColor = true; + this.CheckBox_zj07.Visible = false; + this.CheckBox_zj07.CheckedChanged += new System.EventHandler(this.CheckBox_zj07_CheckedChanged); + // + // CheckBox_zj08 + // + this.CheckBox_zj08.AutoSize = true; + this.CheckBox_zj08.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_zj08.Location = new System.Drawing.Point(78, 97); + this.CheckBox_zj08.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.CheckBox_zj08.Name = "CheckBox_zj08"; + this.CheckBox_zj08.Size = new System.Drawing.Size(58, 21); + this.CheckBox_zj08.TabIndex = 7; + this.CheckBox_zj08.Text = "备用3"; + this.CheckBox_zj08.UseVisualStyleBackColor = true; + this.CheckBox_zj08.Visible = false; + this.CheckBox_zj08.CheckedChanged += new System.EventHandler(this.CheckBox_zj08_CheckedChanged); + // + // ChannelSelect + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.CheckBox_zj08); + this.Controls.Add(this.CheckBox_zj06); + this.Controls.Add(this.CheckBox_zj02); + this.Controls.Add(this.CheckBox_zj04); + this.Controls.Add(this.CheckBox_zj03); + this.Controls.Add(this.CheckBox_zj01); + this.Controls.Add(this.CheckBox_zj05); + this.Controls.Add(this.CheckBox_zj07); + this.Name = "ChannelSelect"; + this.Size = new System.Drawing.Size(150, 124); + this.Load += new System.EventHandler(this.MultiChannel_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.CheckBox CheckBox_zj05; + private System.Windows.Forms.CheckBox CheckBox_zj04; + private System.Windows.Forms.CheckBox CheckBox_zj03; + private System.Windows.Forms.CheckBox CheckBox_zj02; + private System.Windows.Forms.CheckBox CheckBox_zj01; + private System.Windows.Forms.CheckBox CheckBox_zj06; + private System.Windows.Forms.CheckBox CheckBox_zj07; + private System.Windows.Forms.CheckBox CheckBox_zj08; + } +} diff --git a/Host/controls/ChannelSelect.resx b/Host/controls/ChannelSelect.resx new file mode 100644 index 0000000..2bbb2e7 --- /dev/null +++ b/Host/controls/ChannelSelect.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + \ No newline at end of file diff --git a/Host/controls/GraCheckedEnergy.cs b/Host/controls/GraCheckedEnergy.cs new file mode 100644 index 0000000..832722e --- /dev/null +++ b/Host/controls/GraCheckedEnergy.cs @@ -0,0 +1,253 @@ +using System; +using System.Windows.Forms; +using CRVM.Entity; +namespace CRVM +{ + public partial class GraCheckedEnergy : UserControl////20151102 jxp + { + + //public delegate void ContentHandler(object sender, EventArgs e); + + public GraCheckedEnergy() + { + InitializeComponent(); + } + + private void EnergyGraphSelect_Load(object sender, EventArgs e) + { + checkBox2.Checked = SysParam.Instance.checkBoxEnergy; + CheckBox_energy_all.Checked = SysParam.Instance.checkBoxEnergyAll; + CheckBox_energy_l.Checked = SysParam.Instance.checkBoxEnergyL; + CheckBox_energy_m.Checked = SysParam.Instance.checkBoxEnergyM; + CheckBox_energy_h.Checked = SysParam.Instance.checkBoxEnergyH; + CheckBox_energy_speed.Checked = SysParam.Instance.checkBoxEnergySpeed; + + CheckBox_energy_all.Enabled = SysParam.Instance.checkBoxEnergy; + CheckBox_energy_l.Enabled = SysParam.Instance.checkBoxEnergy; + CheckBox_energy_m.Enabled = SysParam.Instance.checkBoxEnergy; + CheckBox_energy_h.Enabled = SysParam.Instance.checkBoxEnergy; + CheckBox_energy_speed.Enabled = SysParam.Instance.checkBoxEnergy; + + ComboBoxE_energy_all.Text = SysParam.Instance.comboBoxEnergyAll; + ComboBoxE_energy_l.Text = SysParam.Instance.comboBoxEnergyL; + ComboBoxE_energy_m.Text = SysParam.Instance.comboBoxEnergyM; + ComboBoxE_energy_h.Text = SysParam.Instance.comboBoxEnergyH; + ComboBoxE_energy_speed.Text = SysParam.Instance.comboBoxEnergySpeed; + + ComboBoxE_energy_all.Enabled = SysParam.Instance.checkBoxEnergyAll; + ComboBoxE_energy_l.Enabled = SysParam.Instance.checkBoxEnergyL; + ComboBoxE_energy_m.Enabled = SysParam.Instance.checkBoxEnergyM; + ComboBoxE_energy_h.Enabled = SysParam.Instance.checkBoxEnergyH; + ComboBoxE_energy_speed.Enabled = SysParam.Instance.checkBoxEnergySpeed; + + } + + + private void checkBox2_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxEnergy = checkBox2.Checked; + if (SysParam.Instance.checkBoxEnergy) + { + CheckBox_energy_all.Enabled = true; + CheckBox_energy_l.Enabled = true; + CheckBox_energy_m.Enabled = true; + CheckBox_energy_h.Enabled = true; + CheckBox_energy_speed.Enabled = true; + } + else + { + CheckBox_energy_all.Checked = false; + CheckBox_energy_l.Checked = false; + CheckBox_energy_m.Checked = false; + CheckBox_energy_h.Checked = false; + CheckBox_energy_speed.Checked = false; + CheckBox_energy_all.Enabled = false; + CheckBox_energy_l.Enabled = false; + CheckBox_energy_m.Enabled = false; + CheckBox_energy_h.Enabled = false; + CheckBox_energy_speed.Enabled = false; + } + } + + //start 20151029 jxp + private void ComboBoxE_energy_all_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_energy_all.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.comboBoxEnergyAll = ComboBoxE_energy_all.Text; + } + else + { + ComboBoxE_energy_all.Text = SysParam.Instance.comboBoxEnergyAll; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + + } + else + { + ComboBoxE_energy_all.Text = SysParam.Instance.comboBoxEnergyAll; + } + } + } + + private void ComboBoxE_energy_l_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_energy_l.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.comboBoxEnergyL = ComboBoxE_energy_l.Text; + } + else + { + ComboBoxE_energy_l.Text = SysParam.Instance.comboBoxEnergyL; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + + } + else + { + ComboBoxE_energy_l.Text = SysParam.Instance.comboBoxEnergyL; + } + } + } + + private void ComboBoxE_energy_m_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_energy_m.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.comboBoxEnergyM = ComboBoxE_energy_m.Text; + } + else + { + ComboBoxE_energy_m.Text = SysParam.Instance.comboBoxEnergyM; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBoxE_energy_m.Text = SysParam.Instance.comboBoxEnergyM; + } + } + } + + private void ComboBoxE_energy_h_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_energy_h.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.comboBoxEnergyH = ComboBoxE_energy_h.Text; + } + else + { + ComboBoxE_energy_h.Text = SysParam.Instance.comboBoxEnergyH; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBoxE_energy_h.Text = SysParam.Instance.comboBoxEnergyH; + } + } + } + + private void ComboBoxE_energy_speed_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_energy_speed.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.comboBoxEnergySpeed = ComboBoxE_energy_speed.Text; + } + else + { + ComboBoxE_energy_speed.Text = SysParam.Instance.comboBoxEnergySpeed; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + + } + else + { + ComboBoxE_energy_speed.Text = SysParam.Instance.comboBoxEnergySpeed; + } + } + } + + private void CheckBox_energy_all_CheckedChanged(object sender, EventArgs e) + { + ComboBoxE_energy_all.Enabled = CheckBox_energy_all.Checked; + SysParam.Instance.checkBoxEnergyAll = CheckBox_energy_all.Checked; + } + + private void CheckBox_energy_l_CheckedChanged(object sender, EventArgs e) + { + ComboBoxE_energy_l.Enabled = CheckBox_energy_l.Checked; + SysParam.Instance.checkBoxEnergyL = CheckBox_energy_l.Checked; + } + + private void CheckBox_energy_m_CheckedChanged(object sender, EventArgs e) + { + ComboBoxE_energy_m.Enabled = CheckBox_energy_m.Checked; + SysParam.Instance.checkBoxEnergyM = CheckBox_energy_m.Checked; + } + + private void CheckBox_energy_h_CheckedChanged(object sender, EventArgs e) + { + ComboBoxE_energy_h.Enabled = CheckBox_energy_h.Checked; + SysParam.Instance.checkBoxEnergyH = CheckBox_energy_h.Checked; + } + + private void CheckBox_energy_speed_CheckedChanged(object sender, EventArgs e) + { + ComboBoxE_energy_speed.Enabled = CheckBox_energy_speed.Checked; + SysParam.Instance.checkBoxEnergySpeed = CheckBox_energy_speed.Checked; + } + + private void ComboBoxE_energy_all_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxEnergyAll = ComboBoxE_energy_all.Text; + } + + private void ComboBoxE_energy_l_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxEnergyL = ComboBoxE_energy_l.Text; + } + + private void ComboBoxE_energy_m_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxEnergyM = ComboBoxE_energy_m.Text; + } + + private void ComboBoxE_energy_h_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxEnergyH = ComboBoxE_energy_h.Text; + } + + private void ComboBoxE_energy_speed_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxEnergySpeed = ComboBoxE_energy_speed.Text; + } + + + } +} diff --git a/Host/controls/GraCheckedEnergy.designer.cs b/Host/controls/GraCheckedEnergy.designer.cs new file mode 100644 index 0000000..de86fbc --- /dev/null +++ b/Host/controls/GraCheckedEnergy.designer.cs @@ -0,0 +1,312 @@ +namespace CRVM +{ + partial class GraCheckedEnergy + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.CheckBox_energy_speed = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_energy_speed = new System.Windows.Forms.ComboBox(); + this.CheckBox_energy_h = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_energy_h = new System.Windows.Forms.ComboBox(); + this.CheckBox_energy_m = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_energy_m = new System.Windows.Forms.ComboBox(); + this.CheckBox_energy_l = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_energy_l = new System.Windows.Forms.ComboBox(); + this.CheckBox_energy_all = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_energy_all = new System.Windows.Forms.ComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.SuspendLayout(); + // + // label1 + // + this.label1.BackColor = System.Drawing.SystemColors.ControlLight; + this.label1.Location = new System.Drawing.Point(0, 32); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(150, 1); + this.label1.TabIndex = 32; + // + // CheckBox_energy_speed + // + this.CheckBox_energy_speed.AutoSize = true; + this.CheckBox_energy_speed.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_energy_speed.Location = new System.Drawing.Point(19, 151); + this.CheckBox_energy_speed.Name = "CheckBox_energy_speed"; + this.CheckBox_energy_speed.Size = new System.Drawing.Size(51, 21); + this.CheckBox_energy_speed.TabIndex = 9; + this.CheckBox_energy_speed.Text = "速度"; + this.CheckBox_energy_speed.UseVisualStyleBackColor = true; + this.CheckBox_energy_speed.CheckedChanged += new System.EventHandler(this.CheckBox_energy_speed_CheckedChanged); + // + // ComboBoxE_energy_speed + // + this.ComboBoxE_energy_speed.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ComboBoxE_energy_speed.FormattingEnabled = true; + this.ComboBoxE_energy_speed.Items.AddRange(new object[] { + "100", + "300", + "500", + "1000", + "1500", + "2000", + "2500"}); + this.ComboBoxE_energy_speed.Location = new System.Drawing.Point(78, 149); + this.ComboBoxE_energy_speed.Name = "ComboBoxE_energy_speed"; + this.ComboBoxE_energy_speed.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_energy_speed.TabIndex = 10; + this.ComboBoxE_energy_speed.Text = "1500"; + this.ComboBoxE_energy_speed.SelectedIndexChanged += new System.EventHandler(this.ComboBoxE_energy_speed_SelectedIndexChanged); + this.ComboBoxE_energy_speed.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_energy_speed_KeyDown); + // + // CheckBox_energy_h + // + this.CheckBox_energy_h.AutoSize = true; + this.CheckBox_energy_h.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_energy_h.Location = new System.Drawing.Point(19, 124); + this.CheckBox_energy_h.Name = "CheckBox_energy_h"; + this.CheckBox_energy_h.Size = new System.Drawing.Size(51, 21); + this.CheckBox_energy_h.TabIndex = 7; + this.CheckBox_energy_h.Text = "高频"; + this.CheckBox_energy_h.UseVisualStyleBackColor = true; + this.CheckBox_energy_h.CheckedChanged += new System.EventHandler(this.CheckBox_energy_h_CheckedChanged); + // + // ComboBoxE_energy_h + // + this.ComboBoxE_energy_h.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ComboBoxE_energy_h.FormattingEnabled = true; + this.ComboBoxE_energy_h.ItemHeight = 17; + this.ComboBoxE_energy_h.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_energy_h.Location = new System.Drawing.Point(78, 122); + this.ComboBoxE_energy_h.Name = "ComboBoxE_energy_h"; + this.ComboBoxE_energy_h.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_energy_h.TabIndex = 8; + this.ComboBoxE_energy_h.Text = "0.05"; + this.ComboBoxE_energy_h.SelectedIndexChanged += new System.EventHandler(this.ComboBoxE_energy_h_SelectedIndexChanged); + this.ComboBoxE_energy_h.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_energy_h_KeyDown); + // + // CheckBox_energy_m + // + this.CheckBox_energy_m.AutoSize = true; + this.CheckBox_energy_m.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_energy_m.Location = new System.Drawing.Point(19, 97); + this.CheckBox_energy_m.Name = "CheckBox_energy_m"; + this.CheckBox_energy_m.Size = new System.Drawing.Size(51, 21); + this.CheckBox_energy_m.TabIndex = 5; + this.CheckBox_energy_m.Text = "中频"; + this.CheckBox_energy_m.UseVisualStyleBackColor = true; + this.CheckBox_energy_m.CheckedChanged += new System.EventHandler(this.CheckBox_energy_m_CheckedChanged); + // + // ComboBoxE_energy_m + // + this.ComboBoxE_energy_m.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ComboBoxE_energy_m.FormattingEnabled = true; + this.ComboBoxE_energy_m.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_energy_m.Location = new System.Drawing.Point(78, 95); + this.ComboBoxE_energy_m.Name = "ComboBoxE_energy_m"; + this.ComboBoxE_energy_m.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_energy_m.TabIndex = 6; + this.ComboBoxE_energy_m.Text = "0.05"; + this.ComboBoxE_energy_m.SelectedIndexChanged += new System.EventHandler(this.ComboBoxE_energy_m_SelectedIndexChanged); + this.ComboBoxE_energy_m.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_energy_m_KeyDown); + // + // CheckBox_energy_l + // + this.CheckBox_energy_l.AutoSize = true; + this.CheckBox_energy_l.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_energy_l.Location = new System.Drawing.Point(19, 70); + this.CheckBox_energy_l.Name = "CheckBox_energy_l"; + this.CheckBox_energy_l.Size = new System.Drawing.Size(51, 21); + this.CheckBox_energy_l.TabIndex = 3; + this.CheckBox_energy_l.Text = "低频"; + this.CheckBox_energy_l.UseVisualStyleBackColor = true; + this.CheckBox_energy_l.CheckedChanged += new System.EventHandler(this.CheckBox_energy_l_CheckedChanged); + // + // ComboBoxE_energy_l + // + this.ComboBoxE_energy_l.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ComboBoxE_energy_l.FormattingEnabled = true; + this.ComboBoxE_energy_l.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_energy_l.Location = new System.Drawing.Point(78, 68); + this.ComboBoxE_energy_l.Name = "ComboBoxE_energy_l"; + this.ComboBoxE_energy_l.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_energy_l.TabIndex = 4; + this.ComboBoxE_energy_l.Text = "0.05"; + this.ComboBoxE_energy_l.SelectedIndexChanged += new System.EventHandler(this.ComboBoxE_energy_l_SelectedIndexChanged); + this.ComboBoxE_energy_l.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_energy_l_KeyDown); + // + // CheckBox_energy_all + // + this.CheckBox_energy_all.AutoSize = true; + this.CheckBox_energy_all.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CheckBox_energy_all.Location = new System.Drawing.Point(19, 43); + this.CheckBox_energy_all.Name = "CheckBox_energy_all"; + this.CheckBox_energy_all.Size = new System.Drawing.Size(51, 21); + this.CheckBox_energy_all.TabIndex = 1; + this.CheckBox_energy_all.Text = "全局"; + this.CheckBox_energy_all.UseVisualStyleBackColor = true; + this.CheckBox_energy_all.CheckedChanged += new System.EventHandler(this.CheckBox_energy_all_CheckedChanged); + // + // ComboBoxE_energy_all + // + this.ComboBoxE_energy_all.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.ComboBoxE_energy_all.FormattingEnabled = true; + this.ComboBoxE_energy_all.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_energy_all.Location = new System.Drawing.Point(78, 41); + this.ComboBoxE_energy_all.Name = "ComboBoxE_energy_all"; + this.ComboBoxE_energy_all.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_energy_all.TabIndex = 2; + this.ComboBoxE_energy_all.Text = "0.05"; + this.ComboBoxE_energy_all.SelectedIndexChanged += new System.EventHandler(this.ComboBoxE_energy_all_SelectedIndexChanged); + this.ComboBoxE_energy_all.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_energy_all_KeyDown); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(85, 9); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(32, 17); + this.label5.TabIndex = 21; + this.label5.Text = "幅值"; + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.checkBox2.Location = new System.Drawing.Point(19, 8); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(51, 21); + this.checkBox2.TabIndex = 0; + this.checkBox2.Text = "能量"; + this.checkBox2.UseVisualStyleBackColor = true; + this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged); + // + // GraCheckedEnergy + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.label1); + this.Controls.Add(this.CheckBox_energy_speed); + this.Controls.Add(this.ComboBoxE_energy_speed); + this.Controls.Add(this.CheckBox_energy_h); + this.Controls.Add(this.ComboBoxE_energy_h); + this.Controls.Add(this.CheckBox_energy_m); + this.Controls.Add(this.ComboBoxE_energy_m); + this.Controls.Add(this.CheckBox_energy_l); + this.Controls.Add(this.ComboBoxE_energy_l); + this.Controls.Add(this.CheckBox_energy_all); + this.Controls.Add(this.ComboBoxE_energy_all); + this.Controls.Add(this.label5); + this.Controls.Add(this.checkBox2); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "GraCheckedEnergy"; + this.Size = new System.Drawing.Size(150, 182); + this.Load += new System.EventHandler(this.EnergyGraphSelect_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.CheckBox CheckBox_energy_speed; + private System.Windows.Forms.ComboBox ComboBoxE_energy_speed; + private System.Windows.Forms.CheckBox CheckBox_energy_h; + private System.Windows.Forms.ComboBox ComboBoxE_energy_h; + private System.Windows.Forms.CheckBox CheckBox_energy_m; + private System.Windows.Forms.ComboBox ComboBoxE_energy_m; + private System.Windows.Forms.CheckBox CheckBox_energy_l; + private System.Windows.Forms.ComboBox ComboBoxE_energy_l; + private System.Windows.Forms.CheckBox CheckBox_energy_all; + private System.Windows.Forms.ComboBox ComboBoxE_energy_all; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.CheckBox checkBox2; + } +} diff --git a/Host/controls/GraCheckedEnergy.resx b/Host/controls/GraCheckedEnergy.resx new file mode 100644 index 0000000..54bca7d --- /dev/null +++ b/Host/controls/GraCheckedEnergy.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + \ No newline at end of file diff --git a/Host/controls/GraCheckedTime.cs b/Host/controls/GraCheckedTime.cs new file mode 100644 index 0000000..879bdf8 --- /dev/null +++ b/Host/controls/GraCheckedTime.cs @@ -0,0 +1,390 @@ +using System; +using System.Windows.Forms; +using CRVM.Entity; +namespace CRVM +{ + public partial class GraCheckedTime : UserControl//20151102 jxp + { + //public delegate void ContentHandler(object sender, EventArgs e); + //public event ContentHandler ContentChanged; + public GraCheckedTime() + { + InitializeComponent(); + } + + private void ContentSingleDetail_Load(object sender, EventArgs e) + { + checkBox_X10.Checked = SysParam.Instance.checkBoxTime; + + CheckBox_all.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_l.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_m.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_h.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_f.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_Orig_dt.Enabled = SysParam.Instance.checkBoxTime; + + CheckBox_all.Checked = SysParam.Instance.checkBoxTimeAll; + ComboBoxE_all.Enabled = CheckBox_all.Checked; + CheckBox_l.Checked = SysParam.Instance.checkBoxTimeL; + ComboBoxE_l.Enabled = CheckBox_l.Checked; + CheckBox_m.Checked = SysParam.Instance.checkBoxTimeM; + ComboBoxE_m.Enabled = CheckBox_m.Checked; + CheckBox_h.Checked = SysParam.Instance.checkBoxTimeH; + ComboBoxE_h.Enabled = CheckBox_h.Checked; + CheckBox_f.Checked = SysParam.Instance.checkBoxTimeFre; + ComboBoxE_f.Enabled = CheckBox_f.Checked; + CheckBox_Orig_dt.Checked = SysParam.Instance.checkBoxTimeFilt; + ComboBox_Orig_dt.Enabled = CheckBox_Orig_dt.Checked; + textBox1.Enabled = CheckBox_Orig_dt.Checked; + textBox2.Enabled = CheckBox_Orig_dt.Checked; + + ComboBoxE_all.Text = SysParam.Instance.comboBoxTimeAll; + ComboBoxE_l.Text = SysParam.Instance.comboBoxTimeL; + ComboBoxE_m.Text = SysParam.Instance.comboBoxTimeM; + ComboBoxE_h.Text = SysParam.Instance.comboBoxTimeH; + ComboBoxE_f.Text = SysParam.Instance.comboBoxTimeFre; + ComboBox_Orig_dt.Text = SysParam.Instance.ComboBoxTimeFilt; + label3.Text = "0-" + (SysParam.Instance.sampleFre / 2).ToString() + "Hz"; + label2.Enabled = CheckBox_Orig_dt.Checked; + label3.Enabled = CheckBox_Orig_dt.Checked; + + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + } + + private void CheckBox_all_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeAll = CheckBox_all.Checked; + ComboBoxE_all.Enabled = CheckBox_all.Checked; + } + + private void CheckBox_l_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeL = CheckBox_l.Checked; + ComboBoxE_l.Enabled = CheckBox_l.Checked; + } + + private void CheckBox_m_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeM = CheckBox_m.Checked; + ComboBoxE_m.Enabled = CheckBox_m.Checked; + } + + private void CheckBox_h_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeH = CheckBox_h.Checked; + ComboBoxE_h.Enabled = CheckBox_h.Checked; + } + + private void CheckBox_f_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeFre = CheckBox_f.Checked; + ComboBoxE_f.Enabled = CheckBox_f.Checked; + } + + private void CheckBox_r_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeFilt = CheckBox_Orig_dt.Checked; + ComboBox_Orig_dt.Enabled = CheckBox_Orig_dt.Checked; + textBox1.Enabled = CheckBox_Orig_dt.Checked; + textBox2.Enabled = CheckBox_Orig_dt.Checked; + label2.Enabled = CheckBox_Orig_dt.Checked; + label3.Enabled = CheckBox_Orig_dt.Checked; + } + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeAll = ComboBoxE_all.Text; + } + + private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeL = ComboBoxE_l.Text; + } + + private void comboBox3_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeM = ComboBoxE_m.Text; + } + + private void comboBox4_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeH = ComboBoxE_h.Text; + } + + private void comboBox5_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeFre = ComboBoxE_f.Text; + } + + + //start 20151029 jxp + private void ComboBoxE_all_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_all.Text, out txtValue)) + { + if (txtValue >0) + { + SysParam.Instance.comboBoxTimeAll = ComboBoxE_all.Text; + } + else + { + ComboBoxE_all.Text = SysParam.Instance.comboBoxTimeAll; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBoxE_all.Text = SysParam.Instance.comboBoxTimeAll; + } + } + } + + private void ComboBoxE_l_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_l.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.comboBoxTimeL = ComboBoxE_l.Text; + } + else + { + ComboBoxE_l.Text = SysParam.Instance.comboBoxTimeL; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBoxE_l.Text = SysParam.Instance.comboBoxTimeL; + } + } + } + + private void ComboBoxE_m_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_m.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.comboBoxTimeM = ComboBoxE_m.Text; + } + else + { + ComboBoxE_m.Text = SysParam.Instance.comboBoxTimeM; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + + } + else + { + ComboBoxE_m.Text = SysParam.Instance.comboBoxTimeM; + } + } + } + + private void ComboBoxE_h_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_h.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.comboBoxTimeH = ComboBoxE_h.Text; + } + else + { + ComboBoxE_h.Text = SysParam.Instance.comboBoxTimeH; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + + } + else + { + ComboBoxE_h.Text = SysParam.Instance.comboBoxTimeH; + } + } + } + + private void ComboBoxE_f_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_f.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.comboBoxTimeFre = ComboBoxE_f.Text; + } + else + { + ComboBoxE_f.Text = SysParam.Instance.comboBoxTimeFre; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBoxE_f.Text = SysParam.Instance.comboBoxTimeFre; + } + } + } + + + private void ComboBox_Orig_dt_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBox_Orig_dt.Text, out txtValue)) + { + if (txtValue>0) + { + SysParam.Instance.ComboBoxTimeFilt = ComboBox_Orig_dt.Text; + } + else + { + ComboBox_Orig_dt.Text = SysParam.Instance.ComboBoxTimeFilt; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + + } + else + { + ComboBox_Orig_dt.Text = SysParam.Instance.ComboBoxTimeFilt; + } + } + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + int f1 = 0; + int f2 = 0; + if (int.TryParse(textBox1.Text.Trim(), out f1) && int.TryParse(textBox2.Text.Trim(), out f2)) + { + if (f1 >= 0 && f2 >= 0 && f1 <= SysParam.Instance.sampleFre / 2 && f2 <= SysParam.Instance.sampleFre / 2) + { + if (f1 < f2) + { + SysParam.Instance.textBoxf1 = textBox1.Text.Trim(); + SysParam.Instance.textBoxf2 = textBox2.Text.Trim(); + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入的最大值需大于最小值!"); + return; + } + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入值需在提示的带通范围内!"); + return; + } + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入的带通范围最大值最小值必须为正整数!"); + return; + } + textBox1.Focus(); + } + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + int f1 = 0; + int f2 = 0; + if (int.TryParse(textBox1.Text.Trim(), out f1) && int.TryParse(textBox2.Text.Trim(), out f2)) + { + if (f1 >= 0 && f2 >= 0 && f1 <= SysParam.Instance.sampleFre / 2 && f2 <= SysParam.Instance.sampleFre / 2) + { + if (f1 < f2) + { + SysParam.Instance.textBoxf1 = textBox1.Text.Trim(); + SysParam.Instance.textBoxf2 = textBox2.Text.Trim(); + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入的最大值需大于最小值!"); + return; + } + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入值需在提示的带通范围内!"); + return; + } + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入的带通范围最大值最小值必须为正整数!"); + return; + } + textBox2.Focus(); + } + } + + + private void checkBox_X10_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTime = checkBox_X10.Checked; + + if (SysParam.Instance.checkBoxTime) + { + CheckBox_all.Enabled = true; + CheckBox_h.Enabled = true; + CheckBox_l.Enabled = true; + CheckBox_m.Enabled = true; + CheckBox_f.Enabled = true; + CheckBox_Orig_dt.Enabled = true; + } + else + { + CheckBox_all.Checked = false; + CheckBox_h.Checked = false; + CheckBox_l.Checked = false; + CheckBox_m.Checked = false; + CheckBox_f.Checked = false; + CheckBox_Orig_dt.Checked = false; + CheckBox_all.Enabled = false; + CheckBox_h.Enabled = false; + CheckBox_l.Enabled = false; + CheckBox_m.Enabled = false; + CheckBox_f.Enabled = false; + CheckBox_Orig_dt.Enabled = false; + } + } + + private void ComboBox_Orig_dt_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.ComboBoxTimeFilt = ComboBox_Orig_dt.Text; + } + } +} diff --git a/Host/controls/GraCheckedTime.designer.cs b/Host/controls/GraCheckedTime.designer.cs new file mode 100644 index 0000000..70bd3d4 --- /dev/null +++ b/Host/controls/GraCheckedTime.designer.cs @@ -0,0 +1,412 @@ +namespace CRVM +{ + partial class GraCheckedTime + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.ComboBoxE_all = new System.Windows.Forms.ComboBox(); + this.CheckBox_all = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_l = new System.Windows.Forms.ComboBox(); + this.CheckBox_l = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_m = new System.Windows.Forms.ComboBox(); + this.CheckBox_m = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_h = new System.Windows.Forms.ComboBox(); + this.CheckBox_h = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_f = new System.Windows.Forms.ComboBox(); + this.CheckBox_f = new System.Windows.Forms.CheckBox(); + this.CheckBox_Orig_dt = new System.Windows.Forms.CheckBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.ComboBox_Orig_dt = new System.Windows.Forms.ComboBox(); + this.checkBox_X10 = new System.Windows.Forms.CheckBox(); + this.label6 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(86, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(32, 17); + this.label1.TabIndex = 0; + this.label1.Text = "幅值"; + // + // ComboBoxE_all + // + this.ComboBoxE_all.FormattingEnabled = true; + this.ComboBoxE_all.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_all.Location = new System.Drawing.Point(76, 41); + this.ComboBoxE_all.Name = "ComboBoxE_all"; + this.ComboBoxE_all.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_all.TabIndex = 2; + this.ComboBoxE_all.Text = "0.05"; + this.ComboBoxE_all.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + this.ComboBoxE_all.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_all_KeyDown); + // + // CheckBox_all + // + this.CheckBox_all.AutoSize = true; + this.CheckBox_all.Location = new System.Drawing.Point(20, 43); + this.CheckBox_all.Name = "CheckBox_all"; + this.CheckBox_all.Size = new System.Drawing.Size(51, 21); + this.CheckBox_all.TabIndex = 1; + this.CheckBox_all.Text = "原始"; + this.CheckBox_all.UseVisualStyleBackColor = true; + this.CheckBox_all.CheckedChanged += new System.EventHandler(this.CheckBox_all_CheckedChanged); + // + // ComboBoxE_l + // + this.ComboBoxE_l.FormattingEnabled = true; + this.ComboBoxE_l.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_l.Location = new System.Drawing.Point(76, 68); + this.ComboBoxE_l.Name = "ComboBoxE_l"; + this.ComboBoxE_l.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_l.TabIndex = 4; + this.ComboBoxE_l.Text = "0.05"; + this.ComboBoxE_l.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged); + this.ComboBoxE_l.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_l_KeyDown); + // + // CheckBox_l + // + this.CheckBox_l.AutoSize = true; + this.CheckBox_l.Location = new System.Drawing.Point(20, 70); + this.CheckBox_l.Name = "CheckBox_l"; + this.CheckBox_l.Size = new System.Drawing.Size(51, 21); + this.CheckBox_l.TabIndex = 3; + this.CheckBox_l.Text = "低频"; + this.CheckBox_l.UseVisualStyleBackColor = true; + this.CheckBox_l.CheckedChanged += new System.EventHandler(this.CheckBox_l_CheckedChanged); + // + // ComboBoxE_m + // + this.ComboBoxE_m.FormattingEnabled = true; + this.ComboBoxE_m.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_m.Location = new System.Drawing.Point(76, 95); + this.ComboBoxE_m.Name = "ComboBoxE_m"; + this.ComboBoxE_m.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_m.TabIndex = 6; + this.ComboBoxE_m.Text = "0.05"; + this.ComboBoxE_m.SelectedIndexChanged += new System.EventHandler(this.comboBox3_SelectedIndexChanged); + this.ComboBoxE_m.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_m_KeyDown); + // + // CheckBox_m + // + this.CheckBox_m.AutoSize = true; + this.CheckBox_m.Location = new System.Drawing.Point(20, 97); + this.CheckBox_m.Name = "CheckBox_m"; + this.CheckBox_m.Size = new System.Drawing.Size(51, 21); + this.CheckBox_m.TabIndex = 5; + this.CheckBox_m.Text = "中频"; + this.CheckBox_m.UseVisualStyleBackColor = true; + this.CheckBox_m.CheckedChanged += new System.EventHandler(this.CheckBox_m_CheckedChanged); + // + // ComboBoxE_h + // + this.ComboBoxE_h.FormattingEnabled = true; + this.ComboBoxE_h.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_h.Location = new System.Drawing.Point(76, 122); + this.ComboBoxE_h.Name = "ComboBoxE_h"; + this.ComboBoxE_h.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_h.TabIndex = 8; + this.ComboBoxE_h.Text = "0.05"; + this.ComboBoxE_h.SelectedIndexChanged += new System.EventHandler(this.comboBox4_SelectedIndexChanged); + this.ComboBoxE_h.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_h_KeyDown); + // + // CheckBox_h + // + this.CheckBox_h.AutoSize = true; + this.CheckBox_h.Location = new System.Drawing.Point(20, 124); + this.CheckBox_h.Name = "CheckBox_h"; + this.CheckBox_h.Size = new System.Drawing.Size(51, 21); + this.CheckBox_h.TabIndex = 7; + this.CheckBox_h.Text = "高频"; + this.CheckBox_h.UseVisualStyleBackColor = true; + this.CheckBox_h.CheckedChanged += new System.EventHandler(this.CheckBox_h_CheckedChanged); + // + // ComboBoxE_f + // + this.ComboBoxE_f.FormattingEnabled = true; + this.ComboBoxE_f.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_f.Location = new System.Drawing.Point(76, 149); + this.ComboBoxE_f.Name = "ComboBoxE_f"; + this.ComboBoxE_f.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_f.TabIndex = 10; + this.ComboBoxE_f.Text = "0.05"; + this.ComboBoxE_f.SelectedIndexChanged += new System.EventHandler(this.comboBox5_SelectedIndexChanged); + this.ComboBoxE_f.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_f_KeyDown); + // + // CheckBox_f + // + this.CheckBox_f.AutoSize = true; + this.CheckBox_f.Location = new System.Drawing.Point(20, 151); + this.CheckBox_f.Name = "CheckBox_f"; + this.CheckBox_f.Size = new System.Drawing.Size(51, 21); + this.CheckBox_f.TabIndex = 9; + this.CheckBox_f.Text = "频谱"; + this.CheckBox_f.UseVisualStyleBackColor = true; + this.CheckBox_f.CheckedChanged += new System.EventHandler(this.CheckBox_f_CheckedChanged); + // + // CheckBox_Orig_dt + // + this.CheckBox_Orig_dt.AutoSize = true; + this.CheckBox_Orig_dt.Location = new System.Drawing.Point(20, 178); + this.CheckBox_Orig_dt.Name = "CheckBox_Orig_dt"; + this.CheckBox_Orig_dt.Size = new System.Drawing.Size(51, 21); + this.CheckBox_Orig_dt.TabIndex = 11; + this.CheckBox_Orig_dt.Text = "带通"; + this.CheckBox_Orig_dt.UseVisualStyleBackColor = true; + this.CheckBox_Orig_dt.CheckedChanged += new System.EventHandler(this.CheckBox_r_CheckedChanged); + // + // textBox2 + // + this.textBox2.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.textBox2.Location = new System.Drawing.Point(87, 227); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(40, 23); + this.textBox2.TabIndex = 14; + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // textBox1 + // + this.textBox1.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.textBox1.Location = new System.Drawing.Point(22, 227); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(40, 23); + this.textBox1.TabIndex = 13; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label4 + // + this.label4.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(68, 230); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(13, 17); + this.label4.TabIndex = 15; + this.label4.Text = "-"; + // + // label3 + // + this.label3.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(78, 205); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(63, 17); + this.label3.TabIndex = 14; + this.label3.Text = "0-1536Hz"; + // + // label2 + // + this.label2.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(14, 205); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(68, 17); + this.label2.TabIndex = 13; + this.label2.Text = "带通范围:"; + // + // ComboBox_Orig_dt + // + this.ComboBox_Orig_dt.FormattingEnabled = true; + this.ComboBox_Orig_dt.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBox_Orig_dt.Location = new System.Drawing.Point(76, 176); + this.ComboBox_Orig_dt.Name = "ComboBox_Orig_dt"; + this.ComboBox_Orig_dt.Size = new System.Drawing.Size(51, 25); + this.ComboBox_Orig_dt.TabIndex = 12; + this.ComboBox_Orig_dt.Text = "0.05"; + this.ComboBox_Orig_dt.SelectedIndexChanged += new System.EventHandler(this.ComboBox_Orig_dt_SelectedIndexChanged); + this.ComboBox_Orig_dt.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBox_Orig_dt_KeyDown); + // + // checkBox_X10 + // + this.checkBox_X10.AutoSize = true; + this.checkBox_X10.Location = new System.Drawing.Point(20, 8); + this.checkBox_X10.Name = "checkBox_X10"; + this.checkBox_X10.Size = new System.Drawing.Size(51, 21); + this.checkBox_X10.TabIndex = 0; + this.checkBox_X10.Text = "时域"; + this.checkBox_X10.UseVisualStyleBackColor = true; + this.checkBox_X10.CheckedChanged += new System.EventHandler(this.checkBox_X10_CheckedChanged); + // + // label6 + // + this.label6.BackColor = System.Drawing.SystemColors.ControlLight; + this.label6.Location = new System.Drawing.Point(0, 32); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(150, 1); + this.label6.TabIndex = 23; + // + // GraCheckedTime + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.Controls.Add(this.label6); + this.Controls.Add(this.checkBox_X10); + this.Controls.Add(this.ComboBox_Orig_dt); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.CheckBox_Orig_dt); + this.Controls.Add(this.CheckBox_f); + this.Controls.Add(this.ComboBoxE_f); + this.Controls.Add(this.CheckBox_h); + this.Controls.Add(this.ComboBoxE_h); + this.Controls.Add(this.CheckBox_m); + this.Controls.Add(this.ComboBoxE_m); + this.Controls.Add(this.CheckBox_l); + this.Controls.Add(this.ComboBoxE_l); + this.Controls.Add(this.CheckBox_all); + this.Controls.Add(this.ComboBoxE_all); + this.Controls.Add(this.label1); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Name = "GraCheckedTime"; + this.Size = new System.Drawing.Size(150, 256); + this.Load += new System.EventHandler(this.ContentSingleDetail_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox ComboBoxE_all; + private System.Windows.Forms.CheckBox CheckBox_all; + private System.Windows.Forms.ComboBox ComboBoxE_l; + private System.Windows.Forms.CheckBox CheckBox_l; + private System.Windows.Forms.ComboBox ComboBoxE_m; + private System.Windows.Forms.CheckBox CheckBox_m; + private System.Windows.Forms.ComboBox ComboBoxE_h; + private System.Windows.Forms.CheckBox CheckBox_h; + private System.Windows.Forms.ComboBox ComboBoxE_f; + private System.Windows.Forms.CheckBox CheckBox_f; + private System.Windows.Forms.CheckBox CheckBox_Orig_dt; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox ComboBox_Orig_dt; + private System.Windows.Forms.CheckBox checkBox_X10; + private System.Windows.Forms.Label label6; + } +} diff --git a/Host/controls/GraCheckedTime.resx b/Host/controls/GraCheckedTime.resx new file mode 100644 index 0000000..c1e1ddf --- /dev/null +++ b/Host/controls/GraCheckedTime.resx @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + \ No newline at end of file diff --git a/Host/controls/GraCheckedTimeRe.cs b/Host/controls/GraCheckedTimeRe.cs new file mode 100644 index 0000000..55d5af9 --- /dev/null +++ b/Host/controls/GraCheckedTimeRe.cs @@ -0,0 +1,459 @@ +using System; +using System.Windows.Forms; +using CRVM.Entity; +namespace CRVM +{ + public partial class GraCheckedTimeRe : UserControl//20151102 jxp + { + + public delegate void ContentHandler(object sender, EventArgs e); + public event ContentHandler ContentChanged; + public GraCheckedTimeRe() + { + InitializeComponent(); + } + + private void ContentSingleDetail_Load(object sender, EventArgs e) + { + checkBox_X10.Checked = SysParam.Instance.checkBoxTime; + + CheckBox_all.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_l.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_m.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_h.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_f.Enabled = SysParam.Instance.checkBoxTime; + CheckBox_Orig_dt.Enabled = SysParam.Instance.checkBoxTime; + + CheckBox_all.Checked = SysParam.Instance.checkBoxTimeAll; + ComboBoxE_all.Enabled = CheckBox_all.Checked; + CheckBox_l.Checked = SysParam.Instance.checkBoxTimeL; + ComboBoxE_l.Enabled = CheckBox_l.Checked; + CheckBox_m.Checked = SysParam.Instance.checkBoxTimeM; + ComboBoxE_m.Enabled = CheckBox_m.Checked; + CheckBox_h.Checked = SysParam.Instance.checkBoxTimeH; + ComboBoxE_h.Enabled = CheckBox_h.Checked; + CheckBox_f.Checked = SysParam.Instance.checkBoxTimeFre; + ComboBoxE_f.Enabled = CheckBox_f.Checked; + CheckBox_Orig_dt.Checked = SysParam.Instance.checkBoxTimeFilt; + ComboBox_Orig_dt.Enabled = CheckBox_Orig_dt.Checked; + textBox1.Enabled = CheckBox_Orig_dt.Checked; + textBox2.Enabled = CheckBox_Orig_dt.Checked; + label3.Text = "0-" + (SysParam.Instance.sampleFre / 2).ToString() + "Hz"; + label2.Enabled = CheckBox_Orig_dt.Checked; + label3.Enabled = CheckBox_Orig_dt.Checked; + + ComboBoxE_all.Text = SysParam.Instance.comboBoxTimeAll; + ComboBoxE_l.Text = SysParam.Instance.comboBoxTimeL; + ComboBoxE_m.Text = SysParam.Instance.comboBoxTimeM; + ComboBoxE_h.Text = SysParam.Instance.comboBoxTimeH; + ComboBoxE_f.Text = SysParam.Instance.comboBoxTimeFre; + ComboBox_Orig_dt.Text = SysParam.Instance.ComboBoxTimeFilt; + + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + + textBox3.Text = SysParam.Instance.reTimeSpan; + } + + private void CheckBox_all_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeAll = CheckBox_all.Checked; + ComboBoxE_all.Enabled = CheckBox_all.Checked; + Contentchanged(); + } + + private void CheckBox_l_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeL = CheckBox_l.Checked; + ComboBoxE_l.Enabled = CheckBox_l.Checked; + Contentchanged(); + } + + private void CheckBox_m_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeM = CheckBox_m.Checked; + ComboBoxE_m.Enabled = CheckBox_m.Checked; + Contentchanged(); + } + + private void CheckBox_h_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeH = CheckBox_h.Checked; + ComboBoxE_h.Enabled = CheckBox_h.Checked; + Contentchanged(); + } + + private void CheckBox_f_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeFre = CheckBox_f.Checked; + ComboBoxE_f.Enabled = CheckBox_f.Checked; + Contentchanged(); + } + + private void CheckBox_r_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTimeFilt = CheckBox_Orig_dt.Checked; + ComboBox_Orig_dt.Enabled = CheckBox_Orig_dt.Checked; + textBox1.Enabled = CheckBox_Orig_dt.Checked; + textBox2.Enabled = CheckBox_Orig_dt.Checked; + label2.Enabled = CheckBox_Orig_dt.Checked; + label3.Enabled = CheckBox_Orig_dt.Checked; + Contentchanged(); + } + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeAll = ComboBoxE_all.Text; + Contentchanged(); + } + + private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeL = ComboBoxE_l.Text; + Contentchanged(); + } + + private void comboBox3_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeM = ComboBoxE_m.Text; + Contentchanged(); + } + + private void comboBox4_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeH = ComboBoxE_h.Text; + Contentchanged(); + } + + private void comboBox5_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.comboBoxTimeFre = ComboBoxE_f.Text; + Contentchanged(); + } + + + private void Contentchanged() + { + if (ContentChanged != null) + { + ContentChanged(this, new EventArgs()); + } + } + //start 20151029 jxp + private void ComboBoxE_all_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_all.Text, out txtValue)) + { + if (txtValue > 0) + { + SysParam.Instance.comboBoxTimeAll = ComboBoxE_all.Text; + } + else + { + ComboBoxE_all.Text = SysParam.Instance.comboBoxTimeAll; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + + } + else + { + ComboBoxE_all.Text = SysParam.Instance.comboBoxTimeAll; + return; + } + } + Contentchanged(); + } + + private void ComboBoxE_l_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_l.Text, out txtValue)) + { + if (txtValue > 0) + { + SysParam.Instance.comboBoxTimeL = ComboBoxE_l.Text; + } + else + { + ComboBoxE_l.Text = SysParam.Instance.comboBoxTimeL; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBoxE_l.Text = SysParam.Instance.comboBoxTimeL; + return; + } + } + Contentchanged(); + } + + private void ComboBoxE_m_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_m.Text, out txtValue)) + { + if (txtValue > 0) + { + SysParam.Instance.comboBoxTimeM = ComboBoxE_m.Text; + } + else + { + ComboBoxE_m.Text = SysParam.Instance.comboBoxTimeM; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBoxE_m.Text = SysParam.Instance.comboBoxTimeM; + return; + } + } + Contentchanged(); + } + + private void ComboBoxE_h_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_h.Text, out txtValue)) + { + if (txtValue > 0) + { + SysParam.Instance.comboBoxTimeH = ComboBoxE_h.Text; + } + else + { + ComboBoxE_h.Text = SysParam.Instance.comboBoxTimeH; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBoxE_h.Text = SysParam.Instance.comboBoxTimeH; + return; + } + } + Contentchanged(); + } + + private void ComboBoxE_f_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBoxE_f.Text, out txtValue)) + { + if (txtValue > 0) + { + SysParam.Instance.comboBoxTimeFre = ComboBoxE_f.Text; + } + else + { + ComboBoxE_f.Text = SysParam.Instance.comboBoxTimeFre; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBoxE_f.Text = SysParam.Instance.comboBoxTimeFre; + return; + } + } + Contentchanged(); + } + + + private void ComboBox_Orig_dt_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + double txtValue = 0d; + if (double.TryParse(ComboBox_Orig_dt.Text, out txtValue)) + { + if (txtValue > 0) + { + SysParam.Instance.ComboBoxTimeFilt = ComboBox_Orig_dt.Text; + } + else + { + ComboBox_Orig_dt.Text = SysParam.Instance.ComboBoxTimeFilt; + MessageBox.Show("趋势图的Y轴幅值需大于0"); + } + } + else + { + ComboBox_Orig_dt.Text = SysParam.Instance.ComboBoxTimeFilt; + return; + } + } + Contentchanged(); + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + int f1 = 0; + int f2 = 0; + if (int.TryParse(textBox1.Text.Trim(), out f1) && int.TryParse(textBox2.Text.Trim(), out f2)) + { + if (f1 >= 0 && f2 >= 0 && f1 <= SysParam.Instance.sampleFre / 2 && f2 <= SysParam.Instance.sampleFre / 2) + { + if (f1 < f2) + { + SysParam.Instance.textBoxf1 = textBox1.Text.Trim(); + SysParam.Instance.textBoxf2 = textBox2.Text.Trim(); + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入的最大值需大于最小值!"); + return; + } + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入值需在提示的带通范围内!"); + return; + } + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入的带通范围最大值最小值必须为正整数!"); + return; + } + textBox1.Focus(); + } + Contentchanged(); + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + int f1 = 0; + int f2 = 0; + if (int.TryParse(textBox1.Text.Trim(), out f1) && int.TryParse(textBox2.Text.Trim(), out f2)) + { + if (f1 >= 0 && f2 >= 0 && f1 <= SysParam.Instance.sampleFre / 2 && f2 <= SysParam.Instance.sampleFre / 2) + { + if (f1 < f2) + { + SysParam.Instance.textBoxf1 = textBox1.Text.Trim(); + SysParam.Instance.textBoxf2 = textBox2.Text.Trim(); + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入的最大值需大于最小值!"); + return; + } + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入值需在提示的带通范围内!"); + return; + } + } + else + { + textBox1.Text = SysParam.Instance.textBoxf1; + textBox2.Text = SysParam.Instance.textBoxf2; + MessageBox.Show("用户输入的带通范围最大值最小值必须为正整数!"); + return; + } + textBox2.Focus(); + } + Contentchanged(); + } + + + private void checkBox_X10_CheckedChanged(object sender, EventArgs e) + { + SysParam.Instance.checkBoxTime = checkBox_X10.Checked; + + if (SysParam.Instance.checkBoxTime) + { + CheckBox_all.Enabled = true; + CheckBox_h.Enabled = true; + CheckBox_l.Enabled = true; + CheckBox_m.Enabled = true; + CheckBox_f.Enabled = true; + CheckBox_Orig_dt.Enabled = true; + textBox3.Enabled = true; + } + else + { + CheckBox_all.Checked = false; + CheckBox_h.Checked = false; + CheckBox_l.Checked = false; + CheckBox_m.Checked = false; + CheckBox_f.Checked = false; + CheckBox_Orig_dt.Checked = false; + CheckBox_all.Enabled = false; + CheckBox_h.Enabled = false; + CheckBox_l.Enabled = false; + CheckBox_m.Enabled = false; + CheckBox_f.Enabled = false; + CheckBox_Orig_dt.Enabled = false; + textBox3.Enabled = false; + } + Contentchanged(); + } + + private void ComboBox_Orig_dt_SelectedIndexChanged(object sender, EventArgs e) + { + SysParam.Instance.ComboBoxTimeFilt = ComboBox_Orig_dt.Text; + Contentchanged(); + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + int txtValue = 0; + if (int.TryParse(textBox3.Text, out txtValue)) + { + if (txtValue > 0) + { + if (txtValue >6) + { + textBox3.Text = "6"; + } + SysParam.Instance.reTimeSpan = textBox3.Text; + } + else + { + textBox3.Text = SysParam.Instance.reTimeSpan; + MessageBox.Show("用户输入的图表的X轴显示宽度不得小于0!"); + return; + } + } + else + { + textBox3.Text = SysParam.Instance.reTimeSpan; + MessageBox.Show("用户输入的图表的X轴显示宽度需是大于0的正整数!"); + return; + } + } + Contentchanged(); + } + } +} diff --git a/Host/controls/GraCheckedTimeRe.designer.cs b/Host/controls/GraCheckedTimeRe.designer.cs new file mode 100644 index 0000000..d89c8c3 --- /dev/null +++ b/Host/controls/GraCheckedTimeRe.designer.cs @@ -0,0 +1,436 @@ +namespace CRVM +{ + partial class GraCheckedTimeRe + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.ComboBoxE_all = new System.Windows.Forms.ComboBox(); + this.CheckBox_all = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_l = new System.Windows.Forms.ComboBox(); + this.CheckBox_l = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_m = new System.Windows.Forms.ComboBox(); + this.CheckBox_m = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_h = new System.Windows.Forms.ComboBox(); + this.CheckBox_h = new System.Windows.Forms.CheckBox(); + this.ComboBoxE_f = new System.Windows.Forms.ComboBox(); + this.CheckBox_f = new System.Windows.Forms.CheckBox(); + this.CheckBox_Orig_dt = new System.Windows.Forms.CheckBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.ComboBox_Orig_dt = new System.Windows.Forms.ComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.checkBox_X10 = new System.Windows.Forms.CheckBox(); + this.label6 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(86, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(32, 17); + this.label1.TabIndex = 0; + this.label1.Text = "幅值"; + // + // ComboBoxE_all + // + this.ComboBoxE_all.FormattingEnabled = true; + this.ComboBoxE_all.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_all.Location = new System.Drawing.Point(76, 41); + this.ComboBoxE_all.Name = "ComboBoxE_all"; + this.ComboBoxE_all.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_all.TabIndex = 2; + this.ComboBoxE_all.Text = "0.05"; + this.ComboBoxE_all.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + this.ComboBoxE_all.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_all_KeyDown); + // + // CheckBox_all + // + this.CheckBox_all.AutoSize = true; + this.CheckBox_all.Location = new System.Drawing.Point(20, 43); + this.CheckBox_all.Name = "CheckBox_all"; + this.CheckBox_all.Size = new System.Drawing.Size(51, 21); + this.CheckBox_all.TabIndex = 1; + this.CheckBox_all.Text = "原始"; + this.CheckBox_all.UseVisualStyleBackColor = true; + this.CheckBox_all.CheckedChanged += new System.EventHandler(this.CheckBox_all_CheckedChanged); + // + // ComboBoxE_l + // + this.ComboBoxE_l.FormattingEnabled = true; + this.ComboBoxE_l.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_l.Location = new System.Drawing.Point(76, 68); + this.ComboBoxE_l.Name = "ComboBoxE_l"; + this.ComboBoxE_l.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_l.TabIndex = 4; + this.ComboBoxE_l.Text = "0.05"; + this.ComboBoxE_l.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged); + this.ComboBoxE_l.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_l_KeyDown); + // + // CheckBox_l + // + this.CheckBox_l.AutoSize = true; + this.CheckBox_l.Location = new System.Drawing.Point(20, 70); + this.CheckBox_l.Name = "CheckBox_l"; + this.CheckBox_l.Size = new System.Drawing.Size(51, 21); + this.CheckBox_l.TabIndex = 3; + this.CheckBox_l.Text = "低频"; + this.CheckBox_l.UseVisualStyleBackColor = true; + this.CheckBox_l.CheckedChanged += new System.EventHandler(this.CheckBox_l_CheckedChanged); + // + // ComboBoxE_m + // + this.ComboBoxE_m.FormattingEnabled = true; + this.ComboBoxE_m.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_m.Location = new System.Drawing.Point(76, 95); + this.ComboBoxE_m.Name = "ComboBoxE_m"; + this.ComboBoxE_m.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_m.TabIndex = 6; + this.ComboBoxE_m.Text = "0.05"; + this.ComboBoxE_m.SelectedIndexChanged += new System.EventHandler(this.comboBox3_SelectedIndexChanged); + this.ComboBoxE_m.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_m_KeyDown); + // + // CheckBox_m + // + this.CheckBox_m.AutoSize = true; + this.CheckBox_m.Location = new System.Drawing.Point(20, 97); + this.CheckBox_m.Name = "CheckBox_m"; + this.CheckBox_m.Size = new System.Drawing.Size(51, 21); + this.CheckBox_m.TabIndex = 5; + this.CheckBox_m.Text = "中频"; + this.CheckBox_m.UseVisualStyleBackColor = true; + this.CheckBox_m.CheckedChanged += new System.EventHandler(this.CheckBox_m_CheckedChanged); + // + // ComboBoxE_h + // + this.ComboBoxE_h.FormattingEnabled = true; + this.ComboBoxE_h.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_h.Location = new System.Drawing.Point(76, 122); + this.ComboBoxE_h.Name = "ComboBoxE_h"; + this.ComboBoxE_h.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_h.TabIndex = 8; + this.ComboBoxE_h.Text = "0.05"; + this.ComboBoxE_h.SelectedIndexChanged += new System.EventHandler(this.comboBox4_SelectedIndexChanged); + this.ComboBoxE_h.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_h_KeyDown); + // + // CheckBox_h + // + this.CheckBox_h.AutoSize = true; + this.CheckBox_h.Location = new System.Drawing.Point(20, 124); + this.CheckBox_h.Name = "CheckBox_h"; + this.CheckBox_h.Size = new System.Drawing.Size(51, 21); + this.CheckBox_h.TabIndex = 7; + this.CheckBox_h.Text = "高频"; + this.CheckBox_h.UseVisualStyleBackColor = true; + this.CheckBox_h.CheckedChanged += new System.EventHandler(this.CheckBox_h_CheckedChanged); + // + // ComboBoxE_f + // + this.ComboBoxE_f.FormattingEnabled = true; + this.ComboBoxE_f.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBoxE_f.Location = new System.Drawing.Point(76, 149); + this.ComboBoxE_f.Name = "ComboBoxE_f"; + this.ComboBoxE_f.Size = new System.Drawing.Size(51, 25); + this.ComboBoxE_f.TabIndex = 10; + this.ComboBoxE_f.Text = "0.05"; + this.ComboBoxE_f.SelectedIndexChanged += new System.EventHandler(this.comboBox5_SelectedIndexChanged); + this.ComboBoxE_f.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBoxE_f_KeyDown); + // + // CheckBox_f + // + this.CheckBox_f.AutoSize = true; + this.CheckBox_f.Location = new System.Drawing.Point(20, 151); + this.CheckBox_f.Name = "CheckBox_f"; + this.CheckBox_f.Size = new System.Drawing.Size(51, 21); + this.CheckBox_f.TabIndex = 9; + this.CheckBox_f.Text = "频谱"; + this.CheckBox_f.UseVisualStyleBackColor = true; + this.CheckBox_f.CheckedChanged += new System.EventHandler(this.CheckBox_f_CheckedChanged); + // + // CheckBox_Orig_dt + // + this.CheckBox_Orig_dt.AutoSize = true; + this.CheckBox_Orig_dt.Location = new System.Drawing.Point(20, 178); + this.CheckBox_Orig_dt.Name = "CheckBox_Orig_dt"; + this.CheckBox_Orig_dt.Size = new System.Drawing.Size(51, 21); + this.CheckBox_Orig_dt.TabIndex = 11; + this.CheckBox_Orig_dt.Text = "带通"; + this.CheckBox_Orig_dt.UseVisualStyleBackColor = true; + this.CheckBox_Orig_dt.CheckedChanged += new System.EventHandler(this.CheckBox_r_CheckedChanged); + // + // textBox2 + // + this.textBox2.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.textBox2.Location = new System.Drawing.Point(87, 227); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(40, 23); + this.textBox2.TabIndex = 14; + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // textBox1 + // + this.textBox1.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.textBox1.Location = new System.Drawing.Point(22, 227); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(40, 23); + this.textBox1.TabIndex = 13; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // label4 + // + this.label4.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(70, 230); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(13, 17); + this.label4.TabIndex = 15; + this.label4.Text = "-"; + // + // label3 + // + this.label3.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(78, 205); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(63, 17); + this.label3.TabIndex = 14; + this.label3.Text = "0-1536Hz"; + // + // label2 + // + this.label2.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(14, 205); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(68, 17); + this.label2.TabIndex = 13; + this.label2.Text = "带通范围:"; + // + // ComboBox_Orig_dt + // + this.ComboBox_Orig_dt.FormattingEnabled = true; + this.ComboBox_Orig_dt.Items.AddRange(new object[] { + "0.001", + "0.003", + "0.005", + "0.01", + "0.03", + "0.05", + "0.1", + "0.3", + "0.5", + "1", + "3", + "5", + "10", + "30", + "50"}); + this.ComboBox_Orig_dt.Location = new System.Drawing.Point(76, 176); + this.ComboBox_Orig_dt.Name = "ComboBox_Orig_dt"; + this.ComboBox_Orig_dt.Size = new System.Drawing.Size(51, 25); + this.ComboBox_Orig_dt.TabIndex = 12; + this.ComboBox_Orig_dt.Text = "0.05"; + this.ComboBox_Orig_dt.SelectedIndexChanged += new System.EventHandler(this.ComboBox_Orig_dt_SelectedIndexChanged); + this.ComboBox_Orig_dt.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboBox_Orig_dt_KeyDown); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(17, 260); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(68, 17); + this.label5.TabIndex = 19; + this.label5.Text = "横值设置:"; + // + // textBox3 + // + this.textBox3.Location = new System.Drawing.Point(87, 257); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(40, 23); + this.textBox3.TabIndex = 15; + this.textBox3.Text = " "; + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // checkBox_X10 + // + this.checkBox_X10.AutoSize = true; + this.checkBox_X10.Location = new System.Drawing.Point(20, 8); + this.checkBox_X10.Name = "checkBox_X10"; + this.checkBox_X10.Size = new System.Drawing.Size(51, 21); + this.checkBox_X10.TabIndex = 0; + this.checkBox_X10.Text = "时域"; + this.checkBox_X10.UseVisualStyleBackColor = true; + this.checkBox_X10.CheckedChanged += new System.EventHandler(this.checkBox_X10_CheckedChanged); + // + // label6 + // + this.label6.BackColor = System.Drawing.SystemColors.ControlLight; + this.label6.Location = new System.Drawing.Point(0, 32); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(150, 1); + this.label6.TabIndex = 23; + // + // GraCheckedTimeRe + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.Controls.Add(this.label6); + this.Controls.Add(this.checkBox_X10); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.label5); + this.Controls.Add(this.ComboBox_Orig_dt); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.CheckBox_Orig_dt); + this.Controls.Add(this.CheckBox_f); + this.Controls.Add(this.ComboBoxE_f); + this.Controls.Add(this.CheckBox_h); + this.Controls.Add(this.ComboBoxE_h); + this.Controls.Add(this.CheckBox_m); + this.Controls.Add(this.ComboBoxE_m); + this.Controls.Add(this.CheckBox_l); + this.Controls.Add(this.ComboBoxE_l); + this.Controls.Add(this.CheckBox_all); + this.Controls.Add(this.ComboBoxE_all); + this.Controls.Add(this.label1); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Name = "GraCheckedTimeRe"; + this.Size = new System.Drawing.Size(150, 287); + this.Load += new System.EventHandler(this.ContentSingleDetail_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox ComboBoxE_all; + private System.Windows.Forms.CheckBox CheckBox_all; + private System.Windows.Forms.ComboBox ComboBoxE_l; + private System.Windows.Forms.CheckBox CheckBox_l; + private System.Windows.Forms.ComboBox ComboBoxE_m; + private System.Windows.Forms.CheckBox CheckBox_m; + private System.Windows.Forms.ComboBox ComboBoxE_h; + private System.Windows.Forms.CheckBox CheckBox_h; + private System.Windows.Forms.ComboBox ComboBoxE_f; + private System.Windows.Forms.CheckBox CheckBox_f; + private System.Windows.Forms.CheckBox CheckBox_Orig_dt; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox ComboBox_Orig_dt; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.CheckBox checkBox_X10; + private System.Windows.Forms.Label label6; + } +} diff --git a/Host/controls/GraCheckedTimeRe.resx b/Host/controls/GraCheckedTimeRe.resx new file mode 100644 index 0000000..521b221 --- /dev/null +++ b/Host/controls/GraCheckedTimeRe.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + \ No newline at end of file diff --git a/Host/controls/GraOrder.cs b/Host/controls/GraOrder.cs new file mode 100644 index 0000000..65bb5d6 --- /dev/null +++ b/Host/controls/GraOrder.cs @@ -0,0 +1,102 @@ +using System; +using CRVM.Entity; +namespace CRVM +{ + public partial class GraphOrder : WizardBaseChannel + { + public GraphOrder() + { + InitializeComponent(); + } + + private void MultiChannel_Load(object sender, EventArgs e) + { + + if (SysParam.Instance.orderByChannel) + { + radioButton1.Checked = true; + } + else + { + radioButton2.Checked = true; + } + + if (SysParam.Instance.orderBySingleColumn) + { + radioButton3.Checked = true; + } + else + { + radioButton4.Checked = true; + } + + if (SysParam.Instance.orderByStandnoL2R) + { + radioButton5.Checked = true; + } + + if (SysParam.Instance.orderByStandnoR2L) + { + radioButton6.Checked = true; + } + } + + + private void radioButton1_CheckedChanged(object sender, EventArgs e) + { + if (radioButton1.Checked) + SysParam.Instance.orderByChannel = true; + else + SysParam.Instance.orderByChannel = false; + } + + private void radioButton3_CheckedChanged(object sender, EventArgs e) + { + if (radioButton3.Checked) + { + SysParam.Instance.orderBySingleColumn = true; + } + else + { + SysParam.Instance.orderBySingleColumn = false; + } + } + + private void radioButton5_CheckedChanged(object sender, EventArgs e) + { + if (radioButton5.Checked) + { + SysParam.Instance.orderByStandnoL2R = true; + } + else + { + SysParam.Instance.orderByStandnoL2R = false; + } + } + + private void radioButton6_CheckedChanged(object sender, EventArgs e) + { + if (radioButton6.Checked) + { + SysParam.Instance.orderByStandnoR2L = true; + } + else + { + SysParam.Instance.orderByStandnoR2L = false; + } + } + + private void radioButton7_CheckedChanged(object sender, EventArgs e) + { + if (radioButton7.Checked) + { + SysParam.Instance.orderByOther = true; + } + else + { + SysParam.Instance.orderByOther = false; + } + } + + } +} diff --git a/Host/controls/GraOrder.designer.cs b/Host/controls/GraOrder.designer.cs new file mode 100644 index 0000000..bc6d792 --- /dev/null +++ b/Host/controls/GraOrder.designer.cs @@ -0,0 +1,209 @@ +namespace CRVM +{ + partial class GraphOrder + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.radioButton3 = new System.Windows.Forms.RadioButton(); + this.radioButton4 = new System.Windows.Forms.RadioButton(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.radioButton1 = new System.Windows.Forms.RadioButton(); + this.radioButton2 = new System.Windows.Forms.RadioButton(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.radioButton7 = new System.Windows.Forms.RadioButton(); + this.radioButton5 = new System.Windows.Forms.RadioButton(); + this.radioButton6 = new System.Windows.Forms.RadioButton(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.radioButton3); + this.groupBox2.Controls.Add(this.radioButton4); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox2.Location = new System.Drawing.Point(8, 58); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Padding = new System.Windows.Forms.Padding(0); + this.groupBox2.Size = new System.Drawing.Size(134, 50); + this.groupBox2.TabIndex = 17; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "类别二 "; + // + // radioButton3 + // + this.radioButton3.AutoSize = true; + this.radioButton3.Checked = true; + this.radioButton3.Location = new System.Drawing.Point(17, 20); + this.radioButton3.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.radioButton3.Name = "radioButton3"; + this.radioButton3.Size = new System.Drawing.Size(50, 21); + this.radioButton3.TabIndex = 2; + this.radioButton3.TabStop = true; + this.radioButton3.Text = "单列"; + this.radioButton3.UseVisualStyleBackColor = true; + this.radioButton3.CheckedChanged += new System.EventHandler(this.radioButton3_CheckedChanged); + // + // radioButton4 + // + this.radioButton4.AutoSize = true; + this.radioButton4.Location = new System.Drawing.Point(74, 20); + this.radioButton4.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.radioButton4.Name = "radioButton4"; + this.radioButton4.Size = new System.Drawing.Size(50, 21); + this.radioButton4.TabIndex = 3; + this.radioButton4.Text = "复合"; + this.radioButton4.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.radioButton1); + this.groupBox1.Controls.Add(this.radioButton2); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.groupBox1.Location = new System.Drawing.Point(8, 8); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(0); + this.groupBox1.Size = new System.Drawing.Size(134, 50); + this.groupBox1.TabIndex = 16; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "类别一"; + // + // radioButton1 + // + this.radioButton1.AutoSize = true; + this.radioButton1.Checked = true; + this.radioButton1.Location = new System.Drawing.Point(17, 20); + this.radioButton1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.radioButton1.Name = "radioButton1"; + this.radioButton1.Size = new System.Drawing.Size(50, 21); + this.radioButton1.TabIndex = 0; + this.radioButton1.TabStop = true; + this.radioButton1.Text = "通道"; + this.radioButton1.UseVisualStyleBackColor = true; + this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButton1_CheckedChanged); + // + // radioButton2 + // + this.radioButton2.AutoSize = true; + this.radioButton2.Location = new System.Drawing.Point(74, 20); + this.radioButton2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.radioButton2.Name = "radioButton2"; + this.radioButton2.Size = new System.Drawing.Size(50, 21); + this.radioButton2.TabIndex = 1; + this.radioButton2.Text = "类型"; + this.radioButton2.UseVisualStyleBackColor = true; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.radioButton7); + this.groupBox3.Controls.Add(this.radioButton5); + this.groupBox3.Controls.Add(this.radioButton6); + this.groupBox3.Dock = System.Windows.Forms.DockStyle.Top; + this.groupBox3.Location = new System.Drawing.Point(8, 108); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Padding = new System.Windows.Forms.Padding(0); + this.groupBox3.Size = new System.Drawing.Size(134, 115); + this.groupBox3.TabIndex = 18; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "类别三 "; + // + // radioButton7 + // + this.radioButton7.AutoSize = true; + this.radioButton7.Location = new System.Drawing.Point(17, 78); + this.radioButton7.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.radioButton7.Name = "radioButton7"; + this.radioButton7.Size = new System.Drawing.Size(50, 21); + this.radioButton7.TabIndex = 4; + this.radioButton7.Text = "其他"; + this.radioButton7.UseVisualStyleBackColor = true; + this.radioButton7.CheckedChanged += new System.EventHandler(this.radioButton7_CheckedChanged); + // + // radioButton5 + // + this.radioButton5.AutoSize = true; + this.radioButton5.Checked = true; + this.radioButton5.Location = new System.Drawing.Point(17, 20); + this.radioButton5.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.radioButton5.Name = "radioButton5"; + this.radioButton5.Size = new System.Drawing.Size(102, 21); + this.radioButton5.TabIndex = 2; + this.radioButton5.TabStop = true; + this.radioButton5.Text = "机架(1->6)"; + this.radioButton5.UseVisualStyleBackColor = true; + this.radioButton5.CheckedChanged += new System.EventHandler(this.radioButton5_CheckedChanged); + // + // radioButton6 + // + this.radioButton6.AutoSize = true; + this.radioButton6.Location = new System.Drawing.Point(17, 49); + this.radioButton6.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.radioButton6.Name = "radioButton6"; + this.radioButton6.Size = new System.Drawing.Size(102, 21); + this.radioButton6.TabIndex = 3; + this.radioButton6.Text = "机架(6>-1)"; + this.radioButton6.UseVisualStyleBackColor = true; + this.radioButton6.CheckedChanged += new System.EventHandler(this.radioButton6_CheckedChanged); + // + // GraphOrder + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Name = "GraphOrder"; + this.Padding = new System.Windows.Forms.Padding(8); + this.Size = new System.Drawing.Size(150, 234); + this.Load += new System.EventHandler(this.MultiChannel_Load); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.RadioButton radioButton3; + private System.Windows.Forms.RadioButton radioButton4; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.RadioButton radioButton1; + private System.Windows.Forms.RadioButton radioButton2; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.RadioButton radioButton5; + private System.Windows.Forms.RadioButton radioButton6; + private System.Windows.Forms.RadioButton radioButton7; + } +} diff --git a/Host/controls/GraOrder.resx b/Host/controls/GraOrder.resx new file mode 100644 index 0000000..d58980a --- /dev/null +++ b/Host/controls/GraOrder.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Host/controls/WizardBaseChannel.cs b/Host/controls/WizardBaseChannel.cs new file mode 100644 index 0000000..05c64a7 --- /dev/null +++ b/Host/controls/WizardBaseChannel.cs @@ -0,0 +1,19 @@ +using System.Windows.Forms; + +namespace CRVM +{ + public partial class WizardBaseChannel : UserControl + { + protected string stepName = "base"; + public string StepName + { + get { return stepName; } + set { stepName = value; } + } + + public WizardBaseChannel() + { + InitializeComponent(); + } + } +} diff --git a/Host/controls/WizardBaseChannel.designer.cs b/Host/controls/WizardBaseChannel.designer.cs new file mode 100644 index 0000000..824f1fe --- /dev/null +++ b/Host/controls/WizardBaseChannel.designer.cs @@ -0,0 +1,45 @@ +namespace CRVM +{ + partial class WizardBaseChannel + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // WizardBaseChannel + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Name = "WizardBaseChannel"; + this.ResumeLayout(false); + + } + + #endregion + } +} diff --git a/Host/controls/WizardBaseChannel.resx b/Host/controls/WizardBaseChannel.resx new file mode 100644 index 0000000..d58980a --- /dev/null +++ b/Host/controls/WizardBaseChannel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Host/controls/titileSet.cs b/Host/controls/titileSet.cs new file mode 100644 index 0000000..83c141b --- /dev/null +++ b/Host/controls/titileSet.cs @@ -0,0 +1,52 @@ +using System; + +namespace CRVM +{ + public partial class titileSet : WizardBaseChannel + { + public delegate void Change(bool opened); + public event Change change; + + public titileSet() + { + InitializeComponent(); + } + private bool _opened; + + public string labelText + { + set + { + if (value.Contains(">")) + { + _opened = false; + } + if (value.Contains("∨")) + { + _opened = true; + } + button1.Text = value; + } + get { return button1.Text; } + } + private void button1_Click(object sender, EventArgs e) + { + string tempText = this.button1.Text; + if (_opened) + { + button1.Text = tempText.Replace('∨', '>'); + _opened = false; + } + else + { + button1.Text = tempText.Replace('>', '∨'); + _opened = true; + } + if (change != null) + { + change(_opened); + } + } + + } +} diff --git a/Host/controls/titileSet.designer.cs b/Host/controls/titileSet.designer.cs new file mode 100644 index 0000000..0644e3b --- /dev/null +++ b/Host/controls/titileSet.designer.cs @@ -0,0 +1,86 @@ +namespace CRVM +{ + partial class titileSet + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.button1 = new System.Windows.Forms.Button(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.button1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Margin = new System.Windows.Forms.Padding(0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(150, 30); + this.panel1.TabIndex = 0; + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.button1.Dock = System.Windows.Forms.DockStyle.Fill; + this.button1.FlatAppearance.BorderColor = System.Drawing.SystemColors.Control; + this.button1.FlatAppearance.BorderSize = 0; + this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.button1.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; + this.button1.Location = new System.Drawing.Point(0, 0); + this.button1.Margin = new System.Windows.Forms.Padding(0); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(150, 30); + this.button1.TabIndex = 1; + this.button1.Text = "基本测试 ∧"; + this.button1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // titileSet + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.BackColor = System.Drawing.SystemColors.Control; + this.Controls.Add(this.panel1); + this.Margin = new System.Windows.Forms.Padding(0); + this.Name = "titileSet"; + this.Size = new System.Drawing.Size(150, 30); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Panel panel1; + } +} diff --git a/Host/controls/titileSet.resx b/Host/controls/titileSet.resx new file mode 100644 index 0000000..b320d8a --- /dev/null +++ b/Host/controls/titileSet.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + \ No newline at end of file diff --git a/Host/dbaccess.conf b/Host/dbaccess.conf new file mode 100644 index 0000000..ba3c264 --- /dev/null +++ b/Host/dbaccess.conf @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Host/logical/ConfigHelper.cs b/Host/logical/ConfigHelper.cs new file mode 100644 index 0000000..56fbccc --- /dev/null +++ b/Host/logical/ConfigHelper.cs @@ -0,0 +1,484 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using System.Xml; +using System.Drawing; +using CRVM.Entity; + +namespace CRVM +{ + /// + /// 参数读取与存储 + /// + public partial class ConfigHelper + { + private static ConfigHelper _instance = null; + private static Dictionary> config_base = null; + private static XmlDocument xmldoc = null; + private string path; + + public Dictionary> GetAlarmParam() + { + return config_base; + } + private ConfigHelper(string path) + { + //Initial(); + //this.path = path; + //LoadConfigData(path); + } + /// + /// 创建类 + /// + /// 设置类中的文件路径 + /// + public static ConfigHelper GetInstance(string path) + { + if (_instance == null) + { + _instance = new ConfigHelper(path); + _instance.Initial(); + _instance.path = path; + _instance.LoadConfigData(path); + } + return _instance; + } + + private void Initial() + { + config_base = new Dictionary>();//int为机架号 + xmldoc = new XmlDocument(); + } + + private void LoadConfigData(string path) + { + if (File.Exists(path)) + { + try + { + xmldoc.Load(path); + //sourceType = xmldoc.DocumentElement.Attributes[0].InnerText; + XmlNodeList nodes = xmldoc.SelectNodes("configuration/ALARM_PARAM"); + int count = nodes.Count; + if (count > 0) + { + for (int i = 0; i < nodes[0].ChildNodes.Count; i++) + { + SysParam.Instance.channel[i].alarmTimes_l = Convert.ToInt32(nodes[0].ChildNodes[i].Attributes[0].InnerText); + SysParam.Instance.channel[i].alarmTimes_m = Convert.ToInt32(nodes[0].ChildNodes[i].Attributes[1].InnerText); + SysParam.Instance.channel[i].alarmTimes_h = Convert.ToInt32(nodes[0].ChildNodes[i].Attributes[2].InnerText); + IList itemlist = new List(); + int inCount = nodes[0].ChildNodes[i].ChildNodes.Count; + for (int j = 0; j < inCount; j++) + { + EntityAlarmSpeed itemdata = new EntityAlarmSpeed(); + itemdata.alarmSpeed = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[0].InnerText); + itemdata.lowPassL = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[1].InnerText); + itemdata.lowPassU = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[2].InnerText); + itemdata.lowAlarmValue = Convert.ToSingle(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[3].InnerText); + itemdata.midPassL = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[4].InnerText); + itemdata.midPassU = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[5].InnerText); + itemdata.midAlarmValue = Convert.ToSingle(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[6].InnerText); + itemdata.highPassL = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[7].InnerText); + itemdata.highPassU = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[8].InnerText); + itemdata.highAlarmValue = Convert.ToSingle(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[9].InnerText); + if (nodes[0].ChildNodes[i].ChildNodes[j].Attributes.Count > 10) + { + itemdata.lowDefectValue = Convert.ToSingle(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[10].InnerText); + itemdata.midDefectValue = Convert.ToSingle(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[11].InnerText); + itemdata.highDefectValue = Convert.ToSingle(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[12].InnerText); + } + else + { + itemdata.lowDefectValue = 0.3f; + itemdata.midDefectValue = 0.3f; + itemdata.highDefectValue = 0.3f; + } + itemlist.Add(itemdata); + } + if (!config_base.ContainsKey(i)) + { + config_base.Add(i, itemlist); + } + } + } + + nodes = xmldoc.SelectNodes("configuration/SensorConfiguration"); + count = nodes.Count; + if (count > 0) + { + for (int i = 0; i < SysParam.Instance.channelCount; i++) + { + SysParam.Instance.channel[i].vibSens = Convert.ToSingle(nodes[0].Attributes[i].InnerText); + SysParam.Instance.channel[i].speedSens = Convert.ToSingle(nodes[0].Attributes[8 + i].InnerText); + } + SysParam.Instance.distanceSens = Convert.ToSingle(nodes[0].Attributes[16].InnerText); + SysParam.Instance.samplePoint = Convert.ToInt32(nodes[0].Attributes[17].InnerText); + SysParam.Instance.sampleFre = Convert.ToInt32(nodes[0].Attributes[18].InnerText); + } + + nodes = xmldoc.SelectNodes("configuration/LineConfiguration"); + count = nodes.Count; + if (count > 0) + { + SysParam.Instance.colorTime = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[0].InnerText)); + SysParam.Instance.colorFre = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[1].InnerText)); + SysParam.Instance.colorEnergy = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[2].InnerText)); + SysParam.Instance.colorSpeed = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[3].InnerText)); + SysParam.Instance.colorAlarm = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[4].InnerText)); + SysParam.Instance.colorDefect = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[5].InnerText)); + SysParam.Instance.colorCut = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[6].InnerText)); + SysParam.Instance.colorWorkRoll = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[7].InnerText)); + SysParam.Instance.colorMidRoll = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[8].InnerText)); + SysParam.Instance.colorBackupRoll = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[9].InnerText)); + SysParam.Instance.colorFont = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[10].InnerText)); + SysParam.Instance.colorBackgroud = Color.FromArgb(Convert.ToInt32(nodes[0].Attributes[11].InnerText)); + SysParam.Instance.fontSize = Convert.ToInt32(nodes[0].Attributes[12].InnerText); + SysParam.Instance.BackgroundGridOn = change(nodes[0].Attributes[13].InnerText); + SysParam.Instance.rollLineVisible = change(nodes[0].Attributes[14].InnerText); + } + + nodes = xmldoc.SelectNodes("configuration/BaseConfig"); + count = nodes.Count; + if (count > 0) + { + SysParam.Instance.IP = nodes[0].Attributes[0].InnerText; + SysParam.Instance.Port = Convert.ToInt32(nodes[0].Attributes[1].InnerText); + if (nodes[0].Attributes[2].InnerText == "0") + SysParam.Instance.checkTXT = false; + else + SysParam.Instance.checkTXT = true; + if (nodes[0].Attributes[3].InnerText == "0") + SysParam.Instance.checkBIT = false; + else + SysParam.Instance.checkBIT = true; + //SysParamMag.Instance.path = nodes[0].Attributes[4].InnerText; + SysParam.Instance.savePath = nodes[0].Attributes[4].InnerText; + SysParam.Instance.saveDaysAlarm = Convert.ToInt32(nodes[0].Attributes[5].InnerText); + SysParam.Instance.saveDaysNoAlarm = Convert.ToInt32(nodes[0].Attributes[6].InnerText); + } + //获取在线钩选及参数设置 20151030 jxp + nodes = xmldoc.SelectNodes("configuration/ONLINE"); + count = nodes.Count; + if (count > 0) + { + for (int i = 0; i < nodes[0].ChildNodes[0].Attributes.Count; i++) + { + if (nodes[0].ChildNodes[0].Attributes[i].InnerText == "True") + { + SysParam.Instance.channel[i].ChChecked = true; + } + else + { + SysParam.Instance.channel[i].ChChecked = false; + } + } + + + SysParam.Instance.orderByStandnoR2L = false; + SysParam.Instance.orderByStandnoL2R = true; + SysParam.Instance.orderByChannel = change(nodes[0].ChildNodes[3].Attributes[0].InnerText); + SysParam.Instance.orderBySingleColumn = change(nodes[0].ChildNodes[3].Attributes[1].InnerText); + + SysParam.Instance.checkBoxEnergy = change(nodes[0].ChildNodes[2].ChildNodes[0].Attributes[0].InnerText); + SysParam.Instance.checkBoxEnergyAll = change(nodes[0].ChildNodes[2].ChildNodes[0].Attributes[1].InnerText); + SysParam.Instance.checkBoxEnergyL = change(nodes[0].ChildNodes[2].ChildNodes[0].Attributes[2].InnerText); + SysParam.Instance.checkBoxEnergyM = change(nodes[0].ChildNodes[2].ChildNodes[0].Attributes[3].InnerText); + SysParam.Instance.checkBoxEnergyH = change(nodes[0].ChildNodes[2].ChildNodes[0].Attributes[4].InnerText); + SysParam.Instance.checkBoxEnergySpeed = change(nodes[0].ChildNodes[2].ChildNodes[0].Attributes[5].InnerText); + + SysParam.Instance.comboBoxEnergyAll = nodes[0].ChildNodes[2].ChildNodes[1].Attributes[0].InnerText; + SysParam.Instance.comboBoxEnergyL = nodes[0].ChildNodes[2].ChildNodes[1].Attributes[1].InnerText; + SysParam.Instance.comboBoxEnergyM = nodes[0].ChildNodes[2].ChildNodes[1].Attributes[2].InnerText; + SysParam.Instance.comboBoxEnergyH = nodes[0].ChildNodes[2].ChildNodes[1].Attributes[3].InnerText; + SysParam.Instance.comboBoxEnergySpeed = nodes[0].ChildNodes[2].ChildNodes[1].Attributes[4].InnerText; + + SysParam.Instance.checkBoxTime = change(nodes[0].ChildNodes[1].ChildNodes[0].Attributes[0].InnerText); + SysParam.Instance.checkBoxTimeAll = change(nodes[0].ChildNodes[1].ChildNodes[0].Attributes[1].InnerText); + SysParam.Instance.checkBoxTimeL = change(nodes[0].ChildNodes[1].ChildNodes[0].Attributes[2].InnerText); + SysParam.Instance.checkBoxTimeM = change(nodes[0].ChildNodes[1].ChildNodes[0].Attributes[3].InnerText); + SysParam.Instance.checkBoxTimeH = change(nodes[0].ChildNodes[1].ChildNodes[0].Attributes[4].InnerText); + SysParam.Instance.checkBoxTimeFre = change(nodes[0].ChildNodes[1].ChildNodes[0].Attributes[5].InnerText); + SysParam.Instance.checkBoxTimeFilt = change(nodes[0].ChildNodes[1].ChildNodes[0].Attributes[6].InnerText); + + SysParam.Instance.comboBoxTimeAll = nodes[0].ChildNodes[1].ChildNodes[1].Attributes[0].InnerText; + SysParam.Instance.comboBoxTimeL = nodes[0].ChildNodes[1].ChildNodes[1].Attributes[1].InnerText; + SysParam.Instance.comboBoxTimeM = nodes[0].ChildNodes[1].ChildNodes[1].Attributes[2].InnerText; + SysParam.Instance.comboBoxTimeH = nodes[0].ChildNodes[1].ChildNodes[1].Attributes[3].InnerText; + SysParam.Instance.comboBoxTimeFre = nodes[0].ChildNodes[1].ChildNodes[1].Attributes[4].InnerText; + SysParam.Instance.ComboBoxTimeFilt = nodes[0].ChildNodes[1].ChildNodes[1].Attributes[5].InnerText; + SysParam.Instance.textBoxf1 = nodes[0].ChildNodes[1].ChildNodes[1].Attributes[6].InnerText; + SysParam.Instance.textBoxf2 = nodes[0].ChildNodes[1].ChildNodes[1].Attributes[7].InnerText; + SysParam.Instance.reTimeSpan = nodes[0].ChildNodes[1].ChildNodes[1].Attributes[8].InnerText; + } + else + { + for (int i = 0; i < SysParam.Instance.channelCount; i++)//初始加载配置参数(在线状态) 20151031 jxp + { + SysParam.Instance.channel[i].ChChecked = false; + } + SysParam.Instance.channel[0].ChChecked = true; + SysParam.Instance.orderByChannel = true; + SysParam.Instance.orderBySingleColumn = true; + SysParam.Instance.checkBoxEnergy = true; + SysParam.Instance.checkBoxEnergyAll = true; + SysParam.Instance.checkBoxEnergyL = true; + SysParam.Instance.checkBoxEnergyM = true; + SysParam.Instance.checkBoxEnergyH = true; + SysParam.Instance.checkBoxEnergySpeed = true; + + SysParam.Instance.comboBoxEnergyAll = "0.05"; + SysParam.Instance.comboBoxEnergyL = "0.05"; + SysParam.Instance.comboBoxEnergyM = "0.05"; + SysParam.Instance.comboBoxEnergyH = "0.05"; + SysParam.Instance.comboBoxEnergySpeed = "1500"; + + SysParam.Instance.checkBoxTime = false; + SysParam.Instance.checkBoxTimeAll = false; + SysParam.Instance.checkBoxTimeL = false; + SysParam.Instance.checkBoxTimeM = false; + SysParam.Instance.checkBoxTimeH = false; + SysParam.Instance.checkBoxTimeFre = false; + SysParam.Instance.checkBoxTimeFilt = false; + + SysParam.Instance.comboBoxTimeAll = "0.05"; + SysParam.Instance.comboBoxTimeL = "0.05"; + SysParam.Instance.comboBoxTimeM = "0.05"; + SysParam.Instance.comboBoxTimeH = "0.05"; + SysParam.Instance.comboBoxTimeFre = "0.05"; + //SysParam.Instance.ComboBoxE_r = "1500";//end 20151031 jxp + SysParam.Instance.ComboBoxTimeFilt = "0.05"; + } + + + + } + catch (XmlException xmlexp) + { + throw new Exception("打开的项目配置文件错误,请检查配置文件: " + xmlexp.Message); + } + } + } + public bool change(string str) + { + if (str == "True") + { + return true; + } + else + { + return false; + } + } + + + public void InitialData() + { + + SysParam.Instance.filePrepared = false; + SysParam.Instance.fileCreated = false; + //SysParam.Instance.textBox_f1 = "0"; + //SysParam.Instance.textBox_f2 = "2560"; + + for (int i = 0; i < config_base.Keys.Count; i++) + { + //EntityAlarmSpeed[] eass = new EntityAlarmSpeed[config_base[i].Count]; + //int k = 0; + //foreach (EntityAlarmSpeed item in config_base[i]) + //{ + // eass[k] = item; + // k++; + //} + //SysParam.Instance.channel[i].alarmConfig = eass; + SysParam.Instance.channel[i].alarmConfig = config_base[i].ToArray(); + } + + } + + public bool SaveBaseData(int standNo, IList itemdatas) + { + if (config_base.ContainsKey(standNo)) + { + + config_base[standNo] = itemdatas; + } + else + { + + config_base.Add(standNo, itemdatas); + } + return true; + } + + public bool SaveConfig(string path) + { + + return SaveAllConfigData(config_base, path, "AppSetting"); + } + + private bool SaveAllConfigData(Dictionary> datas, string path, string filename) + { + int flag_file = 0; + if (File.Exists(path)) + { + File.SetAttributes(path, FileAttributes.Normal); + flag_file = 1; + } + if (flag_file == 0) + { + if (!Directory.Exists(path)) + Directory.CreateDirectory(path); + } + else + { + int ind = path.LastIndexOf('\\'); + path = path.Substring(0, ind); + } + StreamWriter write = new StreamWriter(path + "\\" + filename + ".config", false, Encoding.GetEncoding("gb2312")); + StringBuilder str = new StringBuilder(); + str = str.AppendLine(" "); + str = str.AppendLine(""); + + //senor config + str = str.Append(" "); + + //display config + str = str.Append(" "); + + //senor config + str = str.Append(" "); + + //alarm config + str = str.AppendLine(" "); + foreach (KeyValuePair> items in datas) + { + string times = " times_l=\"" + SysParam.Instance.channel[items.Key].alarmTimes_l + "\" times_m=\"" + SysParam.Instance.channel[items.Key].alarmTimes_m + "\" times_h=\"" + SysParam.Instance.channel[items.Key].alarmTimes_h + "\""; + str = str.AppendLine(" "); + if (items.Value != null && items.Value.Count > 0) + { + foreach (EntityAlarmSpeed item in items.Value) + { + str = str.AppendLine(" "); + } + str = str.AppendLine(" "); + } + else + { + str = str.AppendLine(" "); + } + } + + str = str.AppendLine(" "); + str = str.AppendLine(" "); + str = str.Append(" "); + str = str.AppendLine(" "); + str = str.AppendLine(" "); + str = str.AppendLine(" "); + str = str.AppendLine(" "); + str = str.AppendLine(" "); + str = str.AppendLine(" "); + str = str.AppendLine(" "); + str = str.AppendLine(""); + write.WriteLine(str.ToString()); + write.Close(); + return true; + + } + public bool SaveAlarmConfig(string path) + { + return SaveAlarmConfigData(config_base, path); + } + + private bool SaveAlarmConfigData(Dictionary> datas, string path) + { + StreamWriter write = new StreamWriter(path, false, Encoding.GetEncoding("gb2312")); + StringBuilder str = new StringBuilder(); + str = str.AppendLine(" "); + str = str.AppendLine(""); + str = str.AppendLine(" "); + foreach (KeyValuePair> items in datas) + { + string times = " times_l=\"" + SysParam.Instance.channel[items.Key].alarmTimes_l + "\" times_m=\"" + SysParam.Instance.channel[items.Key].alarmTimes_m + "\" times_h=\"" + SysParam.Instance.channel[items.Key].alarmTimes_h + "\""; + str = str.AppendLine(" "); + if (items.Value != null && items.Value.Count > 0) + { + foreach (EntityAlarmSpeed item in items.Value) + { + str = str.AppendLine(" "); + } + str = str.AppendLine(" "); + } + else + { + str = str.AppendLine(" "); + } + } + + str = str.AppendLine(" "); + str = str.AppendLine(""); + write.WriteLine(str.ToString()); + write.Close(); + return true; + } + } +} diff --git a/Host/logical/IConfigHelper.cs b/Host/logical/IConfigHelper.cs new file mode 100644 index 0000000..7f7cf74 --- /dev/null +++ b/Host/logical/IConfigHelper.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using System.Xml; +using System.Drawing; +using CRVM.Entity; + +namespace CRVM +{ + public partial class ConfigHelper + { + private static ConfigHelper _orig_instance = null; + private static Dictionary> orig_config_base = null; + private static XmlDocument orig_xmldoc = null; + private float[] orig_senor = new float[SysParam.Instance.channelCount]; + private float[] orig_sp = new float[SysParam.Instance.channelCount]; + + + public static ConfigHelper GetOrigInstance(string path) + { + if (_orig_instance == null) + { + _orig_instance = new ConfigHelper(path); + _orig_instance.Orig_Initial(); + _orig_instance.OrigLoadConfigData(path); + _orig_instance.OrigInitialData(); + } + return _orig_instance; + } + + private void Orig_Initial() + { + orig_config_base = new Dictionary>(); + orig_xmldoc = new XmlDocument(); + } + + private void OrigLoadConfigData(string path) + { + if (File.Exists(path)) + { + try + { + orig_xmldoc.Load(path); + //sourceType = xmldoc.DocumentElement.Attributes[0].InnerText; + XmlNodeList nodes = orig_xmldoc.SelectNodes("configuration/ALARM_PARAM"); + int count = nodes.Count; + if (count > 0) + { + int iccount = nodes[0].ChildNodes.Count; + for (int i = 0; i < iccount; i++) + { + //SysParam.Instance.channel[i].alarmTimes_l = Convert.ToInt32(nodes[0].ChildNodes[i].Attributes[0].InnerText); + //SysParam.Instance.channel[i].alarmTimes_m = Convert.ToInt32(nodes[0].ChildNodes[i].Attributes[1].InnerText); + //SysParam.Instance.channel[i].alarmTimes_h = Convert.ToInt32(nodes[0].ChildNodes[i].Attributes[2].InnerText); + IList itemlist = new List(); + int inCount = nodes[0].ChildNodes[i].ChildNodes.Count; + for (int j = 0; j < inCount; j++) + { + EntityAlarmSpeed itemdata = new EntityAlarmSpeed(); + itemdata.alarmSpeed = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[0].InnerText); + itemdata.lowPassL = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[1].InnerText); + itemdata.lowPassU = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[2].InnerText); + itemdata.lowAlarmValue = Convert.ToSingle(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[3].InnerText); + itemdata.midPassL = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[4].InnerText); + itemdata.midPassU = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[5].InnerText); + itemdata.midAlarmValue = Convert.ToSingle(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[6].InnerText); + itemdata.highPassL = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[7].InnerText); + itemdata.highPassU = Convert.ToInt32(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[8].InnerText); + itemdata.highAlarmValue = Convert.ToSingle(nodes[0].ChildNodes[i].ChildNodes[j].Attributes[9].InnerText); + itemlist.Add(itemdata); + } + if (!orig_config_base.ContainsKey(i)) + { + orig_config_base.Add(i, itemlist); + } + } + } + } + catch (XmlException xmlexp) + { + throw new Exception("打开的项目配置文件错误,请检查配置文件: " + xmlexp.Message); + } + } + } + + public void OrigInitialData() + { + for (int i = 0; i < orig_config_base.Keys.Count; i++) + { + EntityAlarmSpeed[] eass = new EntityAlarmSpeed[orig_config_base[i].Count]; + int k = 0; + foreach (EntityAlarmSpeed item in orig_config_base[i]) + { + EntityAlarmSpeed eas = item; + eass[k] = eas; + k++; + } + SysParam.Instance.channel[i].reAlarmConfig = eass; + } + } + + } +} diff --git a/Host/logical/LogicCon.cs b/Host/logical/LogicCon.cs new file mode 100644 index 0000000..8ef8bf3 --- /dev/null +++ b/Host/logical/LogicCon.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using CRVM.Utility; +using System.Data; +using System.Collections; +using System.Data.OracleClient; +using System.Data.OleDb; + +namespace CRVM +{ + public class LogicCon + { + private IDBAccess projDB = null; + private StringConnectItem connstrItem = null; + public EDBItem dbItem; + //public string sorcStrs = ""; + //private string destStrs = ""; + private string connstr = ""; + private string tablestr; + public LogicCon(EDBItem dbItem, string tablestr) + { + + this.dbItem = dbItem; + this.tablestr = tablestr; + ConnectStrs(dbItem); + } + + public void ConnectStrs(EDBItem dbItem) + { + // dbItem = connstrItem.dbItem; + + if (dbItem != null) + { + connstrItem = new StringConnectItem(); + connstr = StringConnectItem.InitialStrConn(dbItem); + projDB = DBFactory.CreateAccess(dbItem.DataType); + } + else + { + throw new Exception("请配置数据库数据!"); + } + } + + public DataTable SelTableData(string tablename,string sql) + { + DataTable dt = new DataTable(); + dt = projDB.SelTableData(tablename,connstr,sql ); + return dt; + } + + public DataTable DataBase(string sql) + { + DataTable dt = new DataTable(); + dt = projDB.DataBase(connstr, sql); + return dt; + } + } +} + diff --git a/Host/logical/LogicConnect.cs b/Host/logical/LogicConnect.cs new file mode 100644 index 0000000..0272e36 --- /dev/null +++ b/Host/logical/LogicConnect.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using CRVM.Utility; +using System.Data; +using System.Collections; +using System.Data.OracleClient; +using System.Data.OleDb; + +namespace CRVM +{ + public class LogicConnect + { + private IDBAccess projDB = null; + private StringConnectItem connstrItem = null; + public EDBItem dbItem; + private ShowStyle style; + //public string sorcStrs = ""; + //private string destStrs = ""; + private Dictionary tableName; + private DataTable dataTable; + private string connstr = ""; + private string tablestr; + private string sql1; + private string str = ""; + public LogicConnect(EDBItem dbItem, string tablestr) + { + + this.dbItem = dbItem; + this.tablestr = tablestr; + ConnectStrs(dbItem); + } + public LogicConnect(EDBItem dbItem, string sql1, ShowStyle style) + { + this.dbItem = dbItem; + this.sql1 = sql1; + this.style = style; + ConnectStrs(dbItem); + } + public LogicConnect(EDBItem dbItem, string sql1, string tablestr) + { + this.dbItem = dbItem; + this.sql1 = sql1; + this.tablestr = tablestr; + ConnectStrs(dbItem); + } + public void ConnectStrs(EDBItem dbItem) + { + // dbItem = connstrItem.dbItem; + + if (dbItem != null) + { + connstrItem = new StringConnectItem(); + connstr = StringConnectItem.InitialStrConn(dbItem); + projDB = DBFactory.CreateAccess(dbItem.DataType); + } + else + { + throw new Exception("请配置数据库数据!"); + } + } + public Dictionary GetDataTableName() + { + + tableName = projDB.GetTableName(connstr, dbItem.Userid); + return tableName; + } + public DataTable GetTableData(string tablename, ShowStyle style) + { + dataTable = projDB.GetTableData(tablename, connstr, style); + return dataTable; + } + public DataTable SelTableData(string tablename, ShowStyle style) + { + dataTable = projDB.SelTableData(tablename, connstr, style); + return dataTable; + } + public DataTable SelTableData(string tablename) + { + DataTable dt = new DataTable(); + dt = projDB.SelTableData(tablename, connstr); + return dt; + } + public DataTable SelTableData(string tablename,string sql) + { + DataTable dt = new DataTable(); + dt = projDB.SelTableData(tablename,connstr,sql ); + return dt; + } + public DataTable SelStatusTable(string tablename) + { + DataTable dt = new DataTable(); + dt = projDB.SelStatusTable(tablename, connstr); + return dt; + } + public DataTable TableInfo(string tablename) + { + DataTable dt = new DataTable(); + dt = projDB.GetColumnInfo(tablename, connstr); + return dt; + } + public DataTable TableData(string tablename) + { + DataTable dt = new DataTable(); + dt = projDB.GetTableData(tablename, connstr); + return dt; + } + public DataTable DataBase(string sql) + { + DataTable dt = new DataTable(); + dt = projDB.DataBase(connstr, sql); + return dt; + } + /// + /// 获取事件信息 + /// + /// + public DataTable GetEventInfo(ShowStyle style) + { + string sql = "select seq, eventname, field,datavalue,status,tom from T_BPC_TRIGGER order by seq asc"; + DataTable dt = new DataTable(); + dt = projDB.GetData(connstr, sql, style); + return dt; + } + + } +} + diff --git a/Host/login.Designer.cs b/Host/login.Designer.cs new file mode 100644 index 0000000..bb81009 --- /dev/null +++ b/Host/login.Designer.cs @@ -0,0 +1,91 @@ +namespace CRVM +{ + partial class login + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label2 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(8, 27); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 1; + this.label2.Text = "密 码:"; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(59, 24); + this.textBox2.Name = "textBox2"; + this.textBox2.PasswordChar = '*'; + this.textBox2.Size = new System.Drawing.Size(118, 21); + this.textBox2.TabIndex = 3; + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(191, 24); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 23); + this.button2.TabIndex = 5; + this.button2.Text = "确定"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // login + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(280, 69); + this.Controls.Add(this.button2); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label2); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "login"; + this.ShowIcon = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "用户验证"; + this.Load += new System.EventHandler(this.login_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Button button2; + } +} \ No newline at end of file diff --git a/Host/login.cs b/Host/login.cs new file mode 100644 index 0000000..8a1987f --- /dev/null +++ b/Host/login.cs @@ -0,0 +1,42 @@ +using System; +using System.Windows.Forms; +using CRVM.SIDExcuter; + +namespace CRVM +{ + public partial class login : Form + { + public login() + { + InitializeComponent(); + } + + private void button2_Click(object sender, EventArgs e) + { + if (DbHelper.GetInstance("").IsUser(textBox2.Text.Trim())) + { + this.DialogResult = DialogResult.OK; + } + else + { + MessageBox.Show("密码错误!"); + } + //this.DialogResult = DialogResult.OK; + } + + private void login_Load(object sender, EventArgs e) + { + + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + button2_Click(sender, new EventArgs()); + } + } + + + } +} diff --git a/Host/login.resx b/Host/login.resx new file mode 100644 index 0000000..d58980a --- /dev/null +++ b/Host/login.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Host/packages.config b/Host/packages.config new file mode 100644 index 0000000..09c7121 --- /dev/null +++ b/Host/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Host/用户使用手册.pdf b/Host/用户使用手册.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2ca734cca6396221d9073c995e1b7424747dc684 GIT binary patch literal 1888510 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

%Tx&oko_r=W6ZTtNA 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 z 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 z zMonjs!bBo2RT5x2NfSWkz>kh0Qishl^d*?vS*TTgHUDb0dU--j>w5VxkaKI^) zD_~^AUA2#gCj?N^GXL`0P44A^k%`xypWY=PSbTWYsKjO5!Q(AS;yk3(9FKI)qi!$HsHBfSg+4apPnq zB*Zr9^dG3Xe)6r`2?*SrjE&x11LA={`FY%}+$bBoJbjhD<{m6@T1XBr6_oE1OLGcY zS@z+A`qMd-qMvwvY;jJ*+V7;XTzNii=@*<23PWvMTU!HyrawL2cKn3)XR+sCAXs-e zZTZ-gsZl>{hC411L^81fuSHcc5bJ6q{v^u*mDrR8`)UE%`0Y zf94%{igf^0y8z+;d}8`q5!~r$SP^3y*~zo{i0|o3G$m-L9u1E{u}=S7Kj6fryOw-; z4wnJI?>UPOAlJB3)2tI<;Y$s`$7&!>8!SIhvMh0*n_YGh_3LY6U?`ECLL^OVXFX&* zVp@5JuUlMF$gLIR_jKF_i=z9$ymOMvwe)pKc{6~Bh>K4Cmw?EETh zL21cVj?f^uIN$k=mW8$fVDOlWIyT{HVlyf?7g+ndmca0x!=Qbm5} zi8u2nv3kH-Z|X~=q1GRr2nUGfQq}WQ7iA$%5q-;jGdNE)kFc5)>6NphLK)PXxLY2X5XI_)+uV{*7VDrIIvF;P_eJkkko zQts}!kSYi`+9l38gKMLytE%$8XgP=8^LraGhNPrv8dA=O=+{~IACZ5a-A^|bcPT$o zXwzeyPx8i1SPsH!^u09mKaJZwDiki&Dxt$sJHgNx_#2Se^xMVy)4*}3ASL^fpt<3( zuCtW9(S!&}9s7yq?7mHGGe03k?nY^|?CCL;vq&8GW)`zf9%W24;^sO((ES>I$i_;W%( z;6rlqL098uK}$>6G#RVDH0{3=nY$Z|8B+ACn>Qx=mIFFYy?}-xaGi~8ts_5@z`}f>ef_|Hs)TOx5WPu(3I*)WM zlbP3(Q8`QCi&0c0J#$?fTWdWnGgRO=3vFXmIz|QpT7t{pI5}zfjcjdR=~)X{m|0qw z>zUgUuoBP+SeRN^%UWvb=n>Go(6cwv(UTG8C!i5BGPTvS25t$+z0lLK&;_1~=ouLp z+7i&wvJlX`)H64*H6);CWn?Cxk+svdb+QCnh?;2`0RPEdT_{Ou8|&%V63{3b=>knz znYp=9k$wY*bn)$C26R_UNK^;}1qA{@0e?Uj;~)VL!ks(tci<4<;o%Vx5s*+YQBjbQ zQE=|vN5{l_g#QHZ5iTwP5j82nGfF~STr!sDl(ck=jEwlCY+S7LoYV}A^p~ALAtEB8 zAfsTTqGHoO#eGWu-~L?Gf-n$3CLjeEsAnK(3@8{3sEbArJ^&{i)YS*5y?OP4f`);G zy91Aah=dF@D837VhJt~ChJ}HHgM|fJy8_Qauo!Unp3?E%xi75+|I7-L-YqBrfsjAH z4ojx*2N8p|wL2oxgNN8SkBCV~$)1xlGBLBTvat)i5EK#?5fzh_lUGnwQdZH?)zddH zG%~iawX=6{baH<0;pz3k`=d{A$mh_o@Q5#wiAl*RscGpMnFWPK#U+r^vhwktVUWPV_2TlXP7AYz;)-o8Zb z3bX$jV($MV%&rl;!D|eJ0s{pw4+aCo1DZ8VNvxhZdX?xWcQ72H&iyT%bybQ_XwJM5 zQ}Oj|0D|i3*nZBZ#ZGrN0rMS8gr}l2(Z|jTkWbwBMpI8t?&g=5>u{ehgvd>GIKA$_7GUu4D zo)*c>`Msidp-`wO#qfWah0muEH%kLo@-^19BBy9?R_tsA{e*2}6@2`2k&`81l|@0@ z#FcwVFyag6d%S9;9)nujzfinp3bHaYY=AQzlM4WZ4V&CewXf{_)v^-wd zOb|Wk`N96xQOZoZ+;{S|_axRSokg}(iV;8h2C}XN40glps0v-a8|5YiS&3> z^2H2nJf2X>yVlxzz`DtfZ}pmandB&H@NkGVr9JEe;+z!7TRV7H7)73!WB@2-CKnR2 zcYK1h!==!w+DhyPbw5@(Aum0vnNx2zD$C@IkIMGsLlHs8V_^(ET-|`rmM{hZd>RL; z0X9|SJ!Vm-0T1y#Y1A!GkfkKPE1i(`QQ;WCSgn4ztr1ZTdV*j2 zkglSMsiHgIOKumZ+SD9&hBixJW(vH-bpZ+npT+2`Xy6q{!3kz&N)R=ZM2d8^H-13j zt0Vh1qY&r$#=!;`#l7%~O(Ue0f9^X-_ZycLl89Pj!NAqIEc;hAYSGx#_~|=~g2pvkO=ulM4bB z9Qq1%es|HJIG0%;OUVqaISV$1J5zn?Y_Tm=Z6S=-p_IF?#u88oZE>%SZFW5j*yjWMJ=XK1?wosQe+9ZU2w@lTY}W?=~T(BL;? zXNQI;ipeLUq=O`iEGR1og0P9RPC943He2epyGo7%4I!>!nc@tB;0{WV)~k9Zw67;@v5ndu~CkGPgN1F%kIiD+q1Ek|HwFAXb(z zI{%EE?tO1xna$ycWsSr|A8CK@-SsVpEF={pTRe5)c}X}aD9?xLE&AAr;h3@*CSnx@ z`Ga$1gO7%^J}K9g--|d*Z#QT^sy^Vr@cUuh;!9<2o5fK&_E@A5a?nXs?6mRGygm6PF;Dn;3b{+OINisxhaiATO0EU2zv2Rj|THzOm6Hbf40UL^{mz@Yl4 z{T$EWGHGp|U6ag=W*+##MTzGuojT9e9f=q}P}D_Ch#JYcdITj?I3>cwF zJF3P4iJ~o8<{kzMRvbh~nvjJ`p;5Yoo`sGDb!>>R-iJ@KpIZnEz93nUT8F-7mc){a zK3km)dyE;KX7+m3p8Th|QXNB zqHUN{QxUPw`5?jE^~rj3c=dce^$XHu&O{he$((YeGIwj8P<>Z05fT*07H2;zq{(@W z69301W2*ZCumcmTDtdD*OM(az?;7Pp^^o>Pn6sfv|wnT%JO`BQf3+=S1B{j`PCI-uO}F^GDx&%~+dbW!g+1gF~y5cOVQbZDsz#+qPzd!z3c}?p*Bc?O3HIUMI{K zpqKzWoNpj_5E)iBZRrPjvEjjP$4I0HHT*B7B@?T?e|Q0I?5%BS>cjh(-;;ePyd%K` z0u{?FPYlA~vz)*zXS7mtCu~aP_REUw zsMZvybjc@pxsk*^ql-#SRqGI8i_;<(CvTCEpu12i3W@%_XMJXR6+X(FiAJaC zq~b;q%S%V85;>nTz2AG8ZItmcp~TV*>xn!Q8kWJLXB^+p@C`oU8TwlHszS2&T=TKN zgFMNI9bsCEhr({e>`_ka>P9METk+>=gz-R}5)Xu=pYH<^j(QAyA*!)Eu@6p?1k~J~ zMn3l5%h#puiIhPVqi9Wz0 zkbE7E4|IQ*Sp<(w97mGbbkuMtU@r72DJ(c0QRYSO%FX4rt=x)&Da z14~T(+(pI*WQJJ;+z7{%@qx3V6J+<{{Wozu1MN*5FJNJA3xw}B1au5^z+D*v8VNmJ zBQ1UlM*`K$W=w2M)Jz1djP&XRG_SO*FC%^WU+rY{Y%J`ob@XfqfOJ66(N7PJ`+NBUD3beAF~BcWv+5~yvrql;vvFmg^y^|w5&IOa(ZGeN+^+)+-FGa zR7cscjyWlxMx9o!;@tg;_w*#=Y$vkuL(izqu-Hr5e%r+Gn!=j5m>2p4b>1{M9}l;8 zRZrinK5+jzuRbBGmRqC2tuNIDS4_`Wf8zn*>Bk}vb@(J3}Jg6y8`jIOi_A5scBo^49{ z_s)0W)TLQCdhsjC-uEncDKeK$@)gYSg1wkT=q7Zv$tIaTON@^8(kksMdL-#Kz6n8b zw5Yg~owVS?pe~RSCsqWPilau$k!{j3{Hl()9I4S>D`SMv$@{VH`@OqQLUgD%Mlu5* zG_VIPX+Crs+@W&w6hz}+^3(go2>GtO-za{GXfTQ zW^okL#k2+58=s1NAe@7PBjcYMv+thse|u6EmtM>lh&ZwK7~T#7wX%_t-jXq`lwg| zQeEh!I$zQv{6ZBprMgbLzNL0rXwrTUc4U5+H`=SS{3UL!?p40D`8msNdKkN2dXM~;BLeiu zBo`znr2=`F_*itJuos+~j8Q5XlwW8xxW(nJy$8Is?wO-J8!a8NN{O!A{cUzK`6`|k zwDhxmW*Av*KhrMd-q)!bIb$4~@X+hhn2x-?WZW^#6{)h%Hs3aulKLm3v|wZU>O|l9 z`J8S`_K;J2A0<2@O1HE&nmeZ(!+hnVRi@>{gRPPl_IScz;}n=!b}o`;Ndw`z7CL(( zAIdEWkG7Qk{q+b<&U*i-MA!Awwb8>Sw49$tI~zy$Y81An)6ga}iU)8)oUQ%nKax-) zzm;7xF{3d^B?|~75iHw!Ia<)M3m-!#!uhN`YF}gRgN&oh)aTeH1svVdq~x)raccRI z*vjWDdAY8W<^nWjst}8Db-$1YQ>)DpDjZc6$+5U=)E`p^GHt(8%YGIv7f)OnmtRRm zngCDRbc+I~bvtG0SN?!{&r5_X8)?~{C}ej) z;6;OagDjcfCIrQQ2-j8Fr)e9j$?Geg`1rSTFPCQW|LEKc6ENNK+XOPPG1LAR=U(WT zXm1%x5Y1x-J8@|aOcy>AXy);dv9fl% zMB3JCWf)6OOx?vJtS#~!mTk~6A13ub#n_8Si}YDAeX_XqVJv=-YQ8wcq(DuaC-NsO zwA;909qc|{;o8WntD{6NOZEw3!9qk)JMWf%-TjDkYBq7l(zUf`!4TS+9APt9H6vb7 zTdUS#-dv=6T5TSF8;c8cRSvaNohW3YgXjQa#Yfd?o%M`OJDoXh-${=&eWh+KmLmIv zaeCrR5MMv)BrZK3jhw?ye32|Xm8SUPVfkb}NXOliRtirvW1lQ7CKo-#3Q5WeH@|J6 zLX!llHDC#Lo-l3j(OPvE%OQ`n@M!A!@+uk3CnYuYu~u{Q1*IiL^5O6p_>=X9y;I}G zuGFNbrTT7-ihi8mHYQQr_&3JG$nWqj`0ck;*-l@LpR_&zw%Nyo>X;bUP*W@OuV1Bb zQeX^1YHUGh^ka!?c`YFMK}yxPOS~2Gi7>D^C67wEF`|u=4tCeyS{Q4{V3jVoPf;isdz!AGPW;FI_(frxaBKO-nZ!4F|jl+M9^Q-;4XNf6)Ap$~r#@pK% zL6du}PN=IE>6JiG{CGUwT6x^Ez<+^Prhh_Z-22d6TbyJ5am0?)vaDRqUm9Rx(fp!L zJSq}d-t%qvCN7x<^~!?$g2ElM6hj;KLIx~WQZHOxg+1DRijst0AjH6wvEfqj*#*O& z3J%)!+~rGMePG`TL1=zXprD2YyBloHEyG=0W5e|+_oG9G26GyF_90zpeyjrzWe7FM zUjgx5Ckt@?81%7O z=fWHYp(UOdmg5l{G~>8{*a*?!eux%0<@Fd*$*$Cruv2=*ygh$*U{l=w#wU*;kJ`ug z%@u~5tL|?)!(r8?Ry`?1vvomU(F=2ln9wkOSR#gn5+ADVvAk^Y89mSw=MLkz!K)#e z$6O?~efwF3na#R-MT6}}d`Usy^im|iNB=229^+ul|vj_G%j zbU}VP#yZ-ATF;rVDoA9dC8|G&3Obgbs%;~Gl`j|&zyA(a<{o(ac+UdvXRs8eA<2QE z!t6_ z>_|_%i(iDqDhth|@NveX(b>IzWX!BGx#5}m;UHo|UAC)f-kcbidRzRI?ZbUQSHWqE z)oQ1-{ymqU2d@R+D}E@iXw6$UYMF7V!O4n_%VLTlY56nf8dWMm(BaH6+Fkck?@Z z8eD8cH!Qx))}Tu)rOcm*H-Gx_R2liR8j<*7K|0>MHW1Rj7H;^|!@*h4$`xIc)<7q> zf+<~}hs4v^D}H`Dk7XY}v`!aI8W*jxg*3cf->Clb_V7!z7O+lR3r(f2%bavC8 zf^$rDQtxAbixOpYF=E*a`)M&50~w&1+GX(L!CzCwUh!yVCYg9#VNq6~AZpJhh35Fi z=-4A@{F?+czxhJ2u!1y0Wp;k7qyD$#kngf=^Eg&3Dm5P&U0mb~N=rVO%@t4D8Cl@! zVGvR+QErP8Vvx)w$iLdaec!gV@IM4*=nVYY^}}~7?uWgn0-D28V4L(wUUQT|b>2KJF<{_w7q+`Ua3R9NhFMjASmz0rFse$mHU^}fm*m4p-$_k~C*j0h*_%IxD?4_cWfrPaShgGi{!N{$Lw!O5mjs7Imj*NO zDFHt1s@q3G*yz~($v%1T+VLJtd+}@dHHgFA36&16$fGQCcU9HrL>S@3ZWw%?zHF@2 zqdlGR{w@|M){ShSmk_PK@?=-@~@t&Lwy zPO~H4i@6^cAjQZ}TXxo8i_a>Za?DJPq%|xuS4R}5u=;e$hRn6go!Y`y`};Tbz6eM7 zWSh3nwtW+WSG(&tkM+QlxH~Ghg=2LryJQ0;2rEu(D2&Nk(F77l^sz{DVUd>O*ai=VRrjp5XyzEdtj$6!}( zK0UlfZyL&Zmqb|*dXXK6H&F-#v~Q~E{1!jpl-B$l*ut@wNzwL(B{xQ(@qp!?$-zTZ zs$Nt`BUM?;=t1a%HzX)!1pYRy*h>|!@h5tWW?aQgoK&7eCwj@c!-!;p`2~%T%&q-g zzH}#gs8vwJP+{#7J<@ATu54(1M-ZAC_$EQ>rE`co2(NCB^#I@Vq3py@A;CxmE7b9p zC-X5`#c14LNGhz9(6!L)C{F!fGINYe1vO7IlqZ%^*}Se&cabO@AVN07I<^Y*vxe;ovxXvyzRhrzGL^SCz6x)XphAVMNwJF;1JD*d62oApXwS-210Lh z+)m%QRv2m>Of{Dgm3;G_J^LzI;ya|BNrTzkVis?UVmwkA$VcjAC$u9xTnnOt(@bkN zrd2tGJ-Yje;~!)n4L(&S=Kc`n$T8cT5dYJiO7eVj)B|b!9&}e}LFh7pre@@p-D4b@ z89A@>&E^+o9ZdNWlXUKQ$|B39+)1$dxzb`)P9x!rhj@=@lb$GHZ~xR0d-QBYkvVX> z7B9sD@}kfwIG?hgmJsfvwj)d)Hdaug<0DiCMRk5dTgKOmviQcn-vm%yrA@GwvesOSGDsf|ZkPO&pVNnk z+Ye@=AT)(Ba7M|+CZk5&sY0%M`#7Zj7^5K4F4BmYLF5%)eBhls&VFRMK0YfspR!aq zgTE~&y-yKS>zi0Erh#!Zk*o0EoEQ9hA~u2iA=FG~ngXp`EVy<#QUYABz~1P-#KppE z($5?0DlDd&*nS6e((1|)mtrfYNL-XZG`!5BHH&S^$@3)Y@p!VYHMMx1G2thv=z>s@ zx+BF!7#uDrqCw{m9x0W*W<}rkVMVbPT|Op5s7ZF^ht;TOi{j|K7u^0o_TDn8u4P*n zowx>v1Sd#vcb5bY?oM!bCj<)++}+(ZxCD0%?(Q1gCvRk}z0Y3zymQXpKkj|4z1!}O z*{0R3Syf|HRj=N^@9X=PML9m)Eo*R^heS%cI?Jn4v2+2asdn=yE;J0&vfU09vaph* zb+sqlwL39_4XfHc5*L#P-AO*j#P~~x$Nj673L;ZNh`(>JEoa-{6rAW{nNQ@dvBOAM z(OKbAfrMhxD55SZm-Tfpd0>Xw$;166bWdhA<^*W>@MzyL`>A@5t)jDzPY1JcO*i5w zJgxh^4$l1EKvWWq%@*B)v}?iUQ=>6mC=bhlr|N6Lc#rXr+$k-&hFGQ9_Uf&`9pjLr zkzi&LI4G7Mo{ASw=y5+k_sfMYO%HCn^B^|*;sQI2- zUGq*ss&CAEw2o6D#*x9bCt}Z5*;;p}gm|J_1;_8^^e;sB?| z%&K`y=6;7IgVw18v2-XNioV$l@?92`W&MPKjy`I0JmZtZZ&_h?wh~h|?;27OQ`nfE zbKW+5HtO}b8&fup^UdryzxJNHes<=0B)r}WW*dH^s6n(VbTNn#>M2=hFd*R_kCg_A z%GJwq*_%N;m0gqa0#g58D?Nj1dlUS@csk5KuoH@KTsFSrZL=@D_Gb{@b*USBSo{ChR|#|oN1V~&%Lfi(vbYLYbS-IFk_F9w&!S4$rfa;@_Yrq)&k zhTYU0>sgOMx8%OMY8&XJhl@^gv-ai}sbxLyX7|vCzm1THqK6Je*GKp^?8OL?sF|OW zfj0FxwK&{OvmDtWS5m0n|RJ`%`3RCdV1~Z%f7;VIquKaT}P4o3^88%^cF~+C3^&J z2OzIP5p8@ni19SqzvLXpJ2wxfO9y!g<5w#S%x^hv=9w1T+{iq9-&1HqU{2cnp zQTQ$5=R%y8co&XW*r`o?{RVHWS$3Tjm6`B!!z%1LuFtd+vWs-gGpJ|sWDEyqC|Vn| zWEh9SQkNWx1cRlc5EA1^sFCG7%FFINH52vPGHj9dQyNlKek?kv8#B20My~0WB7<^$ z{RjIi!!m*a@o7}8Qr;sSSGkrcv23gwBuCEZWc?Tp4BLg;Tq=E60tf17w@8^(H6Bg= z@kQ5KcaB*2P?}R33fihDh;>ej%U~ziS-!Wg^6E96>(Y2iiX^V)w=C5jg*32L^3zdv zZTxq-qJ+m_pI$SYdwj_(Vu5W4c{o+ka_fTq5Gc<<%>_Cc3fqEqTrKw23%UtME)t<7LuJ;a<|V1h51uL);!QG!ql zqDoa%>8I})?_BIr&7oQi&!R>_t}Wjv!K9XjQC&ZX^^T*TXC-8< z*sBj@9|#LIC_*0B;WT!xVT$)K zO4Cl^tm*-8XV{LU_oEwVbVO=O8b11TtY4~8m5n0)G@oUf?>ELyZ*_^@GD5=mHU~$B z6oyP>o`@%w>S_s7K9*_D-qu3<9xJMp+*k~&hz#UAMM$%Q1sePmVx3_n`K}M8C62I+ z2Yuh`;Ofs5?0-+i{x6@gGjEdH+aC}GrZ{f_u|Xj`ELHDC6ToKNr+WOjw)PAIGE>la z0hy;h0v*piVfFUD!h*;aHGM9yJp=ni){Z{EfF|T&1O7j#Ckyqzfm?F_FLwE}aB=^K z%b%N#mF?el`Lq20%;gX97L@dVUH<=vxcmh<}j6Oxyq?&;l9QjfN`JYilE_Ex5DFrq{oI?yS4KGkue3KxO zhocC(_x`#Y?sM?8Aov3i>i?NL8v6*aSiJCd=-KIomWKo;^W^MuPzAc2)f7u_)$6hB zmI*Ep&J^@4c4^Cn4d=SP)xU{iqoha*)K#Oj-Q}Ht`?Ndw3@mFu!ilUh*SsJ1=LB!& zVl17sx+$uo=xi}dhn<9>Gvi>C^)}D?Z60d@+0*|#h@v3Dzqf+#Z_O%D5JLU?AV>aL z-aHKB;O(d4BLz|B9|B$!ss6W%-&Uekts8cP{4193f>qbBR2mr-i`87%JV#@r`hB zSoLvUpHtY8eC`JZUxr9IbJ_cGdjgKt*w)>ckI~zjOj88c8iR2)NqFFST{~t;LSD@d ziktsXI@SG@?wU3l*|*S1eQVJbTM<^`XmI&UQbp)c>|-Rrmrmg;7HkA=j=?Ns1*jE0 z*@^cQC9DwiQ|IK3V61VPR_Ar+jy-3~si(gc%l-TBc+_DPT2793qJqP(i3D$m)-bDH@t>y*;d5QKRG*hAwY8 zcD|WSI}FVeGw;*V9VXJ2E|`})x*0bk_vDIvuGQPL>fxgFy()73 zZs!YJF#fU>F(D@#KV;U9mOnF`$HV73hQpzETrP#%LHFjwkUA6@GA-a$#9hAEQ&3&& z*lx&1`I8svfrrcrIMEquMeIT<=hcvkd=)L}cQK#n7Z5$J9Rz*t=V|j*-jEBNo}AH8!`!tOjJa4rJ#ler%w|KU{KOXP>+%0?UgJ&b9bRXF-7K z5H-2+jLtmvWmJ@k9Rdv$q+}mU1(B(%sCz}`IppD<%#00XdzDLlAp1A1PW0#FG8F-{ ziUK9Sy!f}W+y@$qg*`f2va_f3eZ__NmSQQmDktSVVM9X@7mL?A5l{};ju}|n)?SJz ziTpMp5m0Xf_-0jO&6ZW9{N}fPBs<2fGK-6;FkFFyv2VOH@!hrD!(Gq|NUR*oLh$@B z^Y>H>2d3H#)*6f8{eEUTk&*Z1PeC5g&`ctyovoxMho7<`fz3QcF4vHsa#XqhiTV$s zsYJ<)&CLtXmf;{IEC+n*nyLyWfiorF%&dy`k;uoR`=7hw&(}`}mux9IqDCu2I90rE zUsfUWDL6_3w9)J8ef z1XW*>fgiw5?!iE9ht};$Ck@d(gB#(xm)$A+p-4v3S|SZNH4-X?CL-nN(eL5s%t>kj zDJgB1VM}<_0@>RbdlKeKKUqz{G5PQD#=(l2#D~SOGSgg?)SoQqOZoIL=KN9f{vZG1 ztTwxTt!h|Qa1UJk@efbHrvODJ_PTGS=Bk#_$SI)Fpw0KGP$6e}xR%!Z{YjXTj^R7Pp$FQeH z0*n=li2RK;?3IF&x0B8ilc(l+5(1NuCobf$OJAxlGrXO|i)_H%yOg(cm$`q`K6RL> zf40lAl76yf8oXhURcoUh&-GYnPDVB#eQKd;n@s#?QLqQ)-g^vHRYFnDk;va~#FL4i zuH?pix0n^Jk5 zZhQJ31!fc9rzQbK$a*M4a{XW31@@CZlsO@Wov(UAzJG|JQWUa-A14e4351N-CU)Nf z;y?A)1=`x0^@AJV`T+7l7)ylmHW6w*UFF7|Ggs|`*2f62@fvpNn^`qoca_JU&*cMz zk@+CKoY+T}Zt!R8_Ors^LD183>{sok)8p8h9;f1gOzDM@bL0T0lfv_bN$&P>^ zmG}mIgL|fZ;NEbX& zmg2SbAtB5Lid7Qt{*wqTOZA0c;9GU7Me0@jX$FStanv$_w{>x;K}*)pg|>W$Wo45H zq|#NZ3w2;1a{(twNg<8UD+V? zH1vzejrHh$1B=+%W4xa^9wDE|#3^I!8RM2vAGHmyi_H!DGx%rPlZrhG;L^<&GZJms z@V}XctBFqTf@hhZMlCoBw&Rei3=U(Qsc>t#Y&Ea3x;%V=#8Ns7X;%B^Cd6<&lE(KatU5V9AoM;36go}D(75&`L z8dgkX0hB4-^=3A$!ltICFmX4-uNN7%AK8qot)S&a!Z6d<-ph!#$){E?D`-4eWyl4U zlP`|f|HL;yPU!OY;Z3<5UPH5pS{QX@C@s^FA;-{h$8j+@AhTspv}6tuDk%x!DWbGL zwXiJ@n%pb?sq0##eQ0m)QvZPH79q_)^nF#kxmPg7_*s697 z)aIMh{OL11R+o}lM{Vt$*Q4t||4McDl@TTccEK18?y`g6qe`)}ziXARM*!tj0zw7TjR%>@CYfn0k zJVd#rNGBLN@8vn|EmdP=^_fY_zXzx(;Hn_2S+b<}26v@J2xn?f+m^M87UuD!od+|J zzPGp;sxQaKC}d^1WN=VX>Eu$Vz35rU){_Qkz_g0Q*93 z0~iXJgRdpGmwP%hv|Qvn^hK0`1o!q}mDo)^!aLWl*Jzy;dTn{J#crWmANSV@2v~}> zBUo6YqwIm?mV}CP8b8agX>p=Y7(`lS&)G!dGVqb1^snIv{NM*jrht7|LE>L7D36bp z$u?Oj(7|0~WN=Z1s$$S+<#wCD5Tl{5*^(hS*&QFpJb&rh_01YLBy6{nkS9%O*JTG)!z|XQZ3^ns(+2P zl7GtZo;n%_M$5n_2K^Hll%E{$Z?oL@ED}eh=z}X{~U+S6Ia7r z^`L$6A%CJ zfFgn14VB-#uPlBF;S>P{MyAhf=#7KlnspeN8k{FmB8PzR6Cc5CrGk$RJGSL?8JiRt z2T32=4Jl8=vx*Dy~4Y-4`$~Wu-K}~!d_=l2y;ChW!Ms#%kbxP zT9-<{8ZgmNl5FV%L1PoC0Z`_H*#bd(;CCBUzp6|$q$m69Gm8){7)T<03H`Z{t% zg5IwO62zP&3(+TF(7(nvYwW~!#%E}bo%R|>HPJPk7cJV|1dhTa0!NWzQN>?^=?%yw zEqeAl-II0Eie>1hccBDK?ETR<2{GHn`aLXxkDLh_E>U97dB5IVmv}S;=6w^^Zw;l;bJJ7t^!F& zz1BXKNo7pKWhY*oM6ZY+Cp9Bjn)u-yeB{k6DPlVI2A5Y0_aQ{zWZv??vt+PP($LeC zG0rpqNRgJocS4uNY}`p3Z&!Ya!n0-BuDR_b&HuqILu+rU;+VvY&<18_ayi+U4*o)& zm8GxIHts|(=@Y~l&*_zqGnT?f$n2&Ukkaq;A-l8@=WG6TdKme&ie^}*I;dhYxF=saSLu2nBJ6%uKdRk&Nwlt}WRHnPKO49||Q6#6vNRDR_{$|J0 z1Nq7!)c)xv63Yd0K>~N99va}PoXPR|T?C|{a?1Fr&PkH5>l8Om9Fv>GkP;C^;Mdb3 z;|U;+vF8pjyB)pH*&tj(j94jpm`5>fB1Dmc-VBhDTuR)c_4C=aR+rVBUQATMRI#{3 z6hc){K}ykZn?%5%(uIU*DC6j7eMiG`T#f+|4wluPn+EQ*;V9hsOL-P}QwcRhC(@@` zFSYP~@8g*uGU-KJGDa5en`Gg2dI2HQa0ZwLtLlh(fZ0s;P;$VIy@DCs!^RrYG@2@5us1EoZmZK)%G)F!^a$)Y=hokmx5DftC;7kZ6=g@S3>QL5{^S+g)yEcYV|--XP{8X)_Zv zOFYOARbJFB??E)qxFS)krrys;t1p7qxG`dd9KXX9JRC&@x?*sNw79i&!&sc9H6qWG zs4lk2gYeB9s;+3o-6%bB3ORaTm1#t4OAsScpd!QsIq>C^??m9hA&R9y18sh!VDl86 z{zQ3s@|D*+B=l{aMSSAAe#VCn(z^p2If}SBA5Y~aP{X#uU!lMPIcfqpB;6PjloOO+ zzebOw$WK>hL*7wkDhW`o9B!#(U(&iWlx%nupx;S6J{||`5sFmH?>H=a*nOQ zIj(*`cCu#unBea8%riDC9k{}})KQ(Rm7!jQA0c^kX!*X4A>p-ZKQL|j>;-tw0~^+_ z>Y8ePwWf@wja9RDI;m{Mry}Mp12p#Zj{9AKY{b5*eQD4O!bdg@47v__G&LBGr zz0T@-rh(*4W;v^A;a+oJG^NedlH{)NJVSEEP1k?XU(S{~FEf9%UxM=*#)(!d_+v!Z zg3dQp7sFc2jzPm?78&=Mz2GM~ce69>(XnLOnxt7T4r%3Y^!4{hl5{L^@0IVI0i0C23Wi`gs`{q5CX>f30NF;28TdJJMt$hSG#A0|hZ8 zNb&q#K<+YqeQ~+@ENe}W`e{YXJ7aE;PY;0+kyp5!t+#pcJpD@e^lQ~grUf<(+T2f7 zc0&?eB#}jI5bRhALfHS4Uq(R)*CP#M*b#~T`|^iRF`UXvPalJzSs8>8yK0;WvCN3g znAHz4*+v@8bum<4pJoY|3WJH_XB1>OVx>)JX_v?S7B|@7t>cm^RA&sKxnR^81a96S z6Wx6}wv6|Nu~7RodnB)Llk>6H*!7X+UK&BY8(HEw8CHXbNaR%y%3+AKxc&0h-mkuL z7Old?vYE}8jr?SE-!zF-@gYh0o-}6YFk~OjPxgH5zW_MI&nMvmJ!$KL_k_jX>{({g z^@heB7ss16WvC3|gb1CL(mCPj6B#9)G8eOIR9iFyok2xhg~|@&ge|m#dv;9+ z6JRXO2j-LNu_ZSpg@zDz@RH1|YNcg?M7^7(T?dsrCo6)6ND%?m;{w4s`*=VF14G5@ zM@iUJcQ)78E`7_%-l5Q@;khM?#P@E%DWd&I{HDC{>1oM(?YeN6 zk&L;P_OaY!68xwbVrhwMlrT$Pd$EH&q=x!#6IbLrGK}_9UTlO1P406!AUP(;v3C1x z2A-`0`~j)9kKo$Ypk3p;(#{m(uoIH{+49dj^>Nae*^5U5%h^G^>c~tFMDU92v+(6s z1`Q1%Tv^{p#qp>RL-IgbD8IM$0&h!A;5;$f0K^bA&D$FqX)(055=@|B;xOzSJD#W@ zJ^tmnkjetje?c09T;a#Isln+G7A?)zjw*Rfcb%$??yi`MmZgJw0B(vriyJ{w@k5@8 z)}s?Bt!octv@VIxZo;cR%ia~$8FvA{FI@0;Lbt5hNUb6QdqYEtG?4^*#RtncvIwlMKB9aNWH=*Umk9rfmL3QjC0^W8nJPb zv02<4lXOlOfhSMc;Y+ZVa!)3s!%kM*W=%lE-%%mhgSJ;HdL%qJS1COx^(KtSvrZ-) z9=7^~sN(vmb)`iZw>#~f7!q>Wrkm+zM(}3(C$=Rd%f?-=dDdZ@-0&4_W4blF=ZR(g zG-}wYy3dPlinFw(qhhp6qbytF(k-Qt?-*I$A=cokml=-Glo(rgJhe2It)aMcfcfi} zHu(j>?^-Xhv!`!^1%H074)E+Z0Q|;?toGeB8=|zFHhvyr&vNEPsCa2IeIGEQyabGj z4}py@D$E-Q=!3t;1&W)OEUn>+mJbb)T9*wDz~QcM!Tl-~_?)@=3}axPi1_d$`1Z5`WZM(3NNN+6p_HM~cs_nJukr1W|y#$n56Y<3&Idd<3ngan+2Yp0)(f)OF%T8@ooa9xtQ-~r#I3tX~7Hd7Mq#~?0)V)fT zFfJSkkSg@Yj43d~W;1W^%^p=UpMWXhy|z=zCJ$p<2L#~9uM3~SnhCUzScK!vE z^v;W^vY;NN`oZ4i?PrHTVn3C(wz?Fmt-xJsf>9i70%k5}O5fvGnt=1Z~TbQyz?Y4?IXU}xMd+2 zyGHbT@L6=Ky`t`lNVn)^&lQUtHd6g)Xo(!+%t4XEY@?u2Q2`GNP@UCN@8Ui;Ld|cV zuf40Kh$o^}-NlK(J{(iC47&lv`tOT#_exoBnD^|y87X0^P&Ps}oNFqSMt1B|G@Jdv zuQJUf=$k)bqCPe2Y2ZuNAf6^kfFXt}gfvkhu8rvnW=GLHurB{eZ}`oEFsLB!Il21TdN^Z*edw-p{zvFH`c@?BG_ zS|0R{og8AqsT7OT?tk{=k+irtQfJ)>Z z&VC0!`=_nZuW2PVQcg@$-VELs#4jLB@fbiZ z_}&p%rGN~WDV>3m{+fEv1tu|`vjMp*7^$2r0Z8dt;aS_r+XNXhPEJmZ&egB~=_lqG z-TaM@A8Tlv#86&8mM!2bd%Ip2A5yo^E_%;-KNnm9er%eI^kU)St_!XFNt*ge25X82 z@~xVI5{bPc!0A!3ZDv&%&)h_2qW$0_Bc>lMspM%Vu^vT+3phf|ol);$0pHmi4uF=C z(ZBOO{j$c>Nzn~oe*0xtRoJFC^6U*HXBec*Q~yq%fYk)-**`UoFA>;qhcll5a}lr( z`7T=3QbKfwbQj&W0?>zY88AtTc(q)%261uU^ifX?GFbv9W$nnMoX13~iHMTPu6(v* zEqX11Z<>GXU~X0A^y*&*?qi%ZyxMEUhOrQpF0}VdNtshu@rn&CW0Rvd7urPKXB_u=bMhZ$%@tR>I8maON*PJM%8PFSezpIqN7(-q?HaxnYY-xo zyxdqPelP=^>%UE`-}}S=^dS9502^@J{Wl;ij(>o#{-Kq@_BSnx|E*dX|E@R&8&D8< z{2|`)TO5NMc>5bV_CJYZ{Lz7bM;wEdiS@7GFSoQ6KpbOR4A~3yO7M;w%~rC6_N&iH zO(OKo+l9c-LJ~MQ9G^H)@1NsZPHLoQoo*XVO_Pn^G>gZn(4>>iMDJ~Y;-v%y!-#ba zulozTyFb+?>03Cmc!4i}J>Jf&!Ku(HJ-c=s>O4GCJb&S%SDvx8onk$)e>l1f>Q3E& zZx%tFIj`(aZ8-BSL4C={6ts4Ez?lrJSIy@6!t+#wwVxS5Oq(U|e`_x39F~jy;i$K+ z-lcP;=B5SgcIPa&uWyFkQs0bwE3{{c$aIojPB|#GVO19k1NoIedi7T}WXIw>0)ZVi zo)VO5(ehoizQ^Sy@5GOg7v)LZ0kxtTw{O;q=!z`MakuLXrXo&|AWBBA?7fx^Cz|pC zrReSfx`~p>oU4h`1zurEYV?EmsR%yQ#S7PQ(_JDF8d;W7NG|0J^tg-h#(vJ+ur3*d z&Tpbl0zxRLjBWdMm*C&N+10oo*z~Pecq*RwUYIrYx}#A7FdpDtr_9eGM>_^`!_L%g z(A?kg9G+#xBGsi@LdsIhWSukA)U3y&klLCA+u~I16*+RO^>hWgjkOx$5JKs0#o{#* zXE%G8R?dKghS8uZXH>?Qn%jJl5Vsg+)1xV!AC45ZM;%Gq7m=-rxeVqVl%u!Gf*s$A z_GC_0xreyF`^H!4zk@wv>rtR`ig(dab&a#FQZ<5Fn{XZxwoy0f9A-R?()!+F%zpov zu+3k7hAS9?z-=0ncTVLtX2ABTRciYuz6o>BSuJbe5ua`Ky!UXlYMqL!o?|Y)_!N8L z^o$QZ2#%DANAOlfLUm@BfVAGEYrcG&)s5Hw?ex3-F!aEa#Q@BF=iT1LZU_8$OUYj? zRVF9GxaORPhAld!*=l}ztgPi#hkb}GqSU-Y?Br=V{!~5sCQL}Eu;pm)gA|cfML$_T z(ASk+& zu}L|K@v$20t&+eS)@orAS)TaC(2&m;Y10y;s$9w__&!y9PJn&a-boiOoH=7=nFVc} zj}g|CT&RBRqs0w1)D4%~ks}xUK@?Yx{L&EV%t5ew8H#70MXB{Gr!$!9n+xnd3rp+r z%g}KABK-R&5wCR^s^z_&_~nU<(9^)j&ssLgayvf=R=SPffnkuwtIWfwGlectF?d@%SvA*pu61h1$+Xi{CDd6s!GnTepMTdvTY zrpFctb2eFtZqUILnmJh+-;;t5-Bj2j{LPhmfE4zOyckG2^#va&4j*VycEl*d9pkMMliz^&oQyZ95 z*od&sNpj2Aiom?5{gfUUDf=xOVRGPg9om@#qWcI{5FVP?4^g_$y_l9U7LsG{PmM&8 z6)u3w;%n=fY`pTMhkD;NK`2E}((X@Fs2MfH*sk{s8+=_u`9-GZf}uUJIaS@EA(8(x zeviinW;>~Y`;G;1hHM#~@%$3^#>yh89U`h4^q6yU+qZ@l$bNRkHS7ReNR=q1V31!> zfJi=5+sC)bbOAxyY!pqRHEswE;@fd=sbd!(K9-&Dd5?Yf8v3skJJ^5g9Q|#H{m0J1 z{)a5m|7Mk?|8D2_Z?%&CXw|>59k8&lasKmmu%o>aLdS{nLvP=8|0qD&>Yi963(Qkh z^}2;O3JzY9Br3p&@#cE#ptxrEf>UYcM zww)FqAj%5Fbs{IZ_EY>gI(-RKv*B2Bzkphj0wFGt_J<^4db+bf0ih6Bq$_hx-l=-B zFBbAl)J}!dD&2880p1GcBRr%*+*RBrKjO%+OgeWz)|)y_x(7>59!ZR%-Y>B5s7i|U zBi_WPtPJdb^z)+V-o9I{Bpbb;SkXYQfW#5e6{Vo2CtXFh;1#Jc*Vy7IA2trxvP$N` z-li#Z*EY)HeXSipu+(IL^O}hVJqv%w#Io6w&r1B(jcQ+nC=cQ5K3-L5SvkduiXqaM zm0sVU=a4RG3I+4MuN>rssT&PH%)Np=J_!#pA&fx2vuk;c=i$pI1j-1A`yfD`PS$re zsU-oykF@@FOOu&1U1kGfa$)(TzZQ~@%2sUKHTtu8l}}JvQ~v9k4ns*k9x_A+yN=-_ zd+1fJ&AU7JSKm#-9pm(_wUqas&8%)ruD#GwP8_q`zn5@KWk!tf@;wc zjp_A!dKXBZq5UF9cT?L_NP@I9KM1}NykA)#UOsi^!1t8HvJ7kbrwa-D>JOy5Xyb5J zm@b!nir&XSnb3DrT+xacX)|(T2s3h%#gvOH8V+cD{f66^zY5D^b|ejXZ z@baToIgfqpIN56?*qeA3ze`qrYKXitt;+EU$ACSziq?{8*!%Rnja!cjt$mZW_FJB) zp9R0ZIq)5Ss=?voNE%PkmX}!69+AoByvz_f)G+Cd$R4RW(~{59@NbizyKIsF;L#uY zCBEE}dwf|83ZL6(;eb!nIl=rx1hGzg+#2RbG*kM|lqVK**{`VcS|@XR^&f|OL=QEb z6)@MP6=iJstz-(O3ck`F)Sqe$)VGwPryCyCie#KfyvE8$lffeMSoAYMEQ~MmpM9J| z$oZaOze(#v?&>H`mEPQ-v)oN3qGB~j-Kb|b ze-{4c8YD(`1FDE4V{1O;D1V7a^ZW2vnBS@waRYgrISsmLFPpXMT6C(Q0<+YFibzrDXHcDTpZ^c|cLa@)wIfmk$ zaf}pG3mrbHbPrYa|iToL{ZB~$PHwk354Y)(T{IZtwY(YS3|JasEFI{hudD%KB zW6^Km^oc&!u+{#&@@YqMF)CFcmLu<`|8vND_O5Yu&XgaO%t1G@ttw{h)P5XUapdjJolLCFpoQj4x;% za@?F?elA=4Lt7{m7362v0LW0bl)8^gbZ_SrI*?*96}~4q zW*@UIL~HA^X3aU5RC89c83bi|^Nl8$qFpkvR!y@0%82o9P>n}LEh;xwpXa((F=VFV za^|t+}`7-FgBDt>we!alveH{X~ zOnrm+7F1{DeLEbmQvocD%$wT&jSn?md1MINhivV=Jrhad6-)b%*L$c5@w#(ULYW#z4Q+LJuD`OoG_SLZVz!qoh#+mMuq~PWC|L1S zsH)HK6M3}}vtgYw4Kv@BQs7p*2*jL%c0{J9W1c9~8vkNmB(ocNxR^%74q~U6dLW-^ zg%~We;;Njh{#5h#UNY^XXlqNylq*7F_n%wj74pZ}6 z5)6Sr0JfeLa`3Jt1zPMKVRmMi4H>V;9#`kVvho!KcK=G~pP-{q(bvQ-jDM0d=&>N^ z9R>^6>TZ`Z5K>;dr<3_U73b0^zgkKbek007S=#*Axv=i8acZgTn%DJObpr=*Pp@}`<;T#~hI#dHvCD5w{~O>YseRD>Q+ z0y)60vAk0B06{b#Ci-#{yf{?CAKB0fr!4rP-6UU_KzhtAX%}!(!Pbnkr_zbFjNquL zugFb?;on#@Kzd2H+xnQjPMIc&fGS+>-)e&x)i7^ZbRKAQk}m2nj(|_KUGT?{DmaEE zh>%nSRDd=MGP-s>dGC?kGIr*yJcEWxfI~!b2mRa+TJL{u5Oa9iTp|WSj+Uj&V+h%+ z%c?C$^q+17MzOvzaKoDMj0^d{mE<1T+5u%ckf^BipQ9l#$_U8J385<}KL63L$UlZk z9$MwqOk;C{*|4=$pg0tTIzj0dXvBtp`U%zveQz0JY6CMx`g!<>tmKoN%?$rP*NScP z9}G3>TX~6MOqPugzix>yf0|{z`op12i=<)-{%Hrm5c+XI$v@TJDM}&^KhJE>@~(co zT?|Mwv95QqCXX$j?#SzvrtwktzX(g4Qn1zm7)|Ba=@q)e1!jp26G^U1U6a&FRl>e$ z^)n_NM?QHO@!eW(4Ly!xQGgo?=_{sGiq6b1e9F7NyD$X->EgHXE)ft1mv1xT0b)_p zrnN5DRjMVo^EXqocL^?@lxohZ@?||5Ls{!Paik}75M(~qZe%?v;inCbhQ-Tk%Lw$F z3G>62?$YVo)iwCJ@g)yywZ-{K za!`lkYJ3@eyYx7^T~bXD;ZLEb1t*=6De68N(NJ3VRrTTPVo_u3bWUCPj!b|dghsk# zy{`}V!X@=y_K~{Bm-bD`I$GXjXL@t1Gh;u9xD8Hjo!*pA1MX#kBjl|!&f$=ic^w8% zYycVk>0bi%I6WRX0Yc#FkMQ4oIZ*G+G2V@3QU3RY&Dl-puzO=3|94+58Q_=mh}^M7 z`o&XaCMu5K*0iN~`o4AFHLE%8D57)C0QFaTYaY5*=6bKa3qRUlyB#cawRFOcKQ(m= zl8sgWb(&i!GEk$V)k>w8MVANZ#^<olH^7G!J3)m$?k^;`J!ERl2apJCP}iGvemMgc*9>y z+TUaP>`il$PfSA$Hr?W?)sV$@YA_uASd1t$q#aPp&;IE5EBv{i?PvZnW@nd_`9TUY zf4f+me~h3~paZa@csAAZ%&ViJs=m<`Y$-?wjN@25}~Y@1&q!zG=

Qi-t2YU0RY5UOuT{3k+EaB-LY9GDM;u>aftuRVZ= zMstVtq49eI2~TnXpI@@*{p4>gcoYJFj!DZV{v}|ReObVzX3G*=eZ$a47S@D#HnVss z$E-nA*{@2%1N{kE5Xkn?HFnUwtSQXuTgw(*ipI|(-ULABYuLsg-~iaiS^$9h1+fcT zJ|{canxHL~;3SBpbzzH>CjvP2LVnsl@Xy@mhDRpd{rA$A97<+CIGeR>wBBskagkf~ zG3#!KQnd9?_NQ8Kz$x4Eb_ZHUo0=ku&3c5D#4O?1qJnafQ0mvbN}(=Cu-H&JeF4o-KDz<|X)${B zlH1XmWnKcBVSMH*i0RmSc~-<5YK?1rbm#)D()a{!Xe%Y#;TZK-Srt>A-0Ozi*e2lP zVH2@Yv1J_R5!Iz(YjS;`Hvu+T;jP|iaQ81aI|ylOhxYMNRz2P_{hLJuz)J%Ej({v}@RL=`A){=0N0_H_*NyN9_q{TP*Z zQywkBw6vHyz4r7i^tFAs;xu;fg4+K5lQ~nlZCX~VW4b2Xi&&tHWoLo*!s67wLTcVl zAA`o1${VlZz59IQuUk~cOR|`t%+bSqKyH}K7l_py$5bYQWs7F1uv}w&dlQ`Jx8nV5*`4C+D z>~aHnWB#^wy0s`tsz?VHc>sx*7sF-!Y&&Agvjw)lLP6KEbZHs?2>OvIv*5rkY3N|; zFx=wTiFDYhI(D>5eA4qt8QG%8y2>w(P-D|_^|klNChm#1Ul$g$R4v`|MohTkqdxDr zoRVC~kk{fpV=)oP_L9IGGgPAEvK$&z=>%=iI!n3?@MwJL>*k&QbQa zh5!cL>;e@4Iq3lRIP(kWoITy?ogBtuX6=Y!0=FZ&KAQE?7-;))O<=xU3S=7Pz4vei zz6S{4!THiAE*(Fb$5@B@0W`!^iI(?u<}W;u={z|QfjOc9MbR<1hPKueN%mQ)m&Zg9;6A-MWFi^PfV<3G6Aa!-EkIm80jN4Vnf&qZfYMSv`^; zP*z3~m`Ig>w_XCG6NyanQ@+TzEC5u&JiVdJe-WNJyYdZ_X^Yc^q9|^JVhYR%l~ay( z8tXUWi(IB7p}tZ#ceQjjnnNG<-(yZsJpsl9tL1x>Zy){{2-5F0jSE1}E?xNt#HL#1 z%*89d;Xc#d<=$=Vq}ztI&(*LTq}n)HZo`;xDlC}x^<=@GG~l``5GoD%eB7f+1-Npb z0F*20Q(`Xo9q~2V3uw>-RIRx50xARO6*G)?N#4@{)|g@+82X^+4}urEKI{kILh+zg z5KEYV+@-2|Pag#j0g6G)RnWV?$E_l@GiVt6qWM&#FWg58XC-9hQ zS&LOQb=xsw?orNTSdTJ>HdbDL>aHwjRcMLuV%U6havBznRN`ySNT=+>t>@Qr2|7d-9ZjxTbYJUi;3 zK4iY=L83;F8>6hA>_S2x z}+r0=|n7_8fKaG~eb49Qga5T z#{YTU_dbjTw{-u82}R+~X}119?7d}FUCp{Cy0AcScbDKKxO;GSx8SmHCj<)`oZuP= z?(XjHwr~&b4lBLBea`;&K7Dqdv+un<`gZp?KWYq^RdddowW{8d_j#Wuc1>QQ$VZw+ zyC7vaux#nMG$sXQG$C#SuwAwRk%Sd71g+69luho-?fC;H^|7)QSr@52@?G-RWCZ71 zQoanj@r|76hw1}Ye>eqY=4C{hT{tPV)pxWszGbe+bnad%ic1x{zWM+x6Ng#^xJ*Up zF4?+>f!vzwBiuAK5^=hyV4>NA&Na)ykG}!#CAwmFcaFW(;~ZfT^a`ty_MgYN(Uov}=j!Tn2z{*3z)4M<7FpGXN-{s#vrjar z|FyvFV#^MzI^LkI9SlRgDdY_!LO7?6=h4vOTe@bb-|OH&_MT$`L*0^qNg5^%(#T(* zd&sP=gtzEsxKB5-8>AWu2G=K6pDhJ1rDDA@NpRwXBVL5z%J7)Wbnt17t7Q`ysaR3` z5#xE6y1Wy~%`W9%uI&3g8|gB;%rGvlrUB1zzaD?GyGP-J zfdlXp#IQ&FKAKlulO29xwkuxXXdDL*=We$V?gzW@!FcK1IxMg^VC% z6UB3C4i*8_=MB4(X3J%$6AKV zziP@2X~j3ot-UTj$5EQ8M0yAolZ_w4P?%oN*Z9G!UWDDTL6SmXi>(jYOBiHw_jygA z%~ar1dySQ87G8vz4y7BzuP*cvNd)rSH$U2|>gIriGj|I}>6Tqq7Lj~hsFE51@UduH zV$-X>OkU&Ty=zChLV28bRcVQf-@{QNl@XSc=w(=$!p26pW5>qpKTjt;dJ3SJ=MR?Y zyhhI|h8!V8v?W~(L@{`=GNO+_rG8xLHr9T#nU(kp<5!Ei@+hKpk}dI68D{QEkyezb zh9v%;2sNAlKtY#ls`_gRjQ*d)@s8+#=n4^?xe>B{H`5_tR9v-x~*xe=68Xf4zx$;mPalBNDM=Z--2rHe~`t z$B$ z6O_58$d{xV2Dumw3v)npTh*bVN#(=0KJ;TkJFchbGF%rTi3ZG4A>b%xNs=?fDOzz) z9(3go!(^m~?R|^0?_GcYZ9F)^`rhN1^6+AHweOfLvw1ZHPNI~ZEi#gU9)B42!rqe% zjOpdDa(eG^p1)EQrFl7VPvf1;uNlVi^qtdMgl?P zRd-7f4!hp~)IVRcYH9z+-+r%&PLtcrE>bh6oO0<~pWT@GZ1WpEHB1{*7+M%`l>0yQ zD{hZDqDt}p;_#|xBtsw1J0grsi%9?2B9kA@VGbNC>!d7VyqCR)qDMHtkqJtR((r@pjWUN(Jv}s zb{P+^%5K#Ag?YNo0QR1cW@Swj=Bt;`B$Ew(PeCOX9bT`lj(z-~06SHt7%#7!;Q;Gc9xMLrTEgXx{p23bl5B1b z#8zdDI&~deNkNx+U7Eyy33hc=YpriV1g#bq>y3I8jssCf^<)@Muj63YVCMW+EeQrh z2~NDVARt<_GhNOI+f2+y^oqf`x?&b;h7t{p^i#y202xq834RhHiifLeLnFx(vEaGC zog$b{OvGSO}d#fNC!yK{SCs z@)*F>pJ$*lm9_-3>!5wHx~9H0dftVEPT(SCyfy~jKvhUYkZzhRSWVqA>6$DFPLFkj70W!>Gip@hr!&_Gwx9tQjl$ zmekHLb-WBOBn_96nq`$jj_|TCe_m5lmBc)t{RSBNQ+<1t^=lDM6iO?t7mN1)l=&Zo z&HWIAhlnAaqPBMpLB z7XHUTWX?aN@%}xWjPqY`zyDhRks*pwtdR5{Bab=%sPR7mHDl#s{Wr9eo*8?35aclz zM3(O_$m2>`4^f0AppT3(8JG1C{8uv*6D;@Z*o~Mc%4NQpruIDd_~j2A>;}>rB{RjU z8Zy_HA}H6w8yS8&!|6ss#6qMK*n8@wEI*YxNxy(w9$&k33(`7K+q`y!g&!uLM@1H1 z9zc_aN{tTL>m-H>wDBm7a~WUw+q_?~!uQv*7a#FVk~=f-iuCr=WuPJzu;6=G zrjB>lgaG5FMG}r9`($ojnM4?R$=-<*y3W;3uj5A_r`Jbs#PuKTZ|XL`XseYZvKkt= zhkJg<$eju7Iscf-ubL=Y{H9uVwaTZ1cAR7F8hQYJDeBd1TBRGmW+?T|jX5uA_fFF> z$`ik{g*$-RnQWEqn>sEQwXWT__jt@k2iDwng!4AH99;84OZw6p7Hy5DXubRPHO_YS z@q1r~cwk0S4(B_g`)s~H{+tS-qTDDtrl_;ueEAiRm;l#*A>BZzJ_ZB3428@zyj9K2 z9=ba?)`iRM0s~80?-s$fW*)=!IjP_=z-P7{7d!qF0~73EuQqF)+#mvT|1=8`hZ&Y- z6C<(58Ed!3Q<_*xVNmHhO%qGLg;0&DPmqB42|g_+ zZzAz4f^@v7$1gi&?%{775+|=RJhh)Sij zFU`mxF&XzHGM>~83bYZFY1A)Z3a@5J0@d-E6R@LnC*4ae+U-0B65H1I*K4H)v9AXP z(5mQqH}%LAaio>DUN{EO4*b~Q<0rkQpLC?lH|_nAp(<`1ab?OD7x^t2>qF~%<>9oR zk`W@p`lzeyDz&CF=*%~2IqqdS!g#)-ztih%q};D1B!LFUf(s*GP3t`_zx7TKdpNTk z`*!t=l=>o->Fw#6lZA!*M&wRCLY%1G{3AkG?Jjrajs)K)NM%c72G8Fp>@6i0nIv02 zZq+m{7;*LgfTxK_oBQ1QJI3HQQ$C;k`qi|@%4P>LZu@!tLSBAMS=~_Pi25p6fPf9 zZ0krvp!UfuvY~WlZG(9*e%^U=EvqmLaz|QZ=Jj_Pw+RkR1~r55N^`i5ybo|To?J;+ zC`yBv9o5U}kx?ic-x**+zZ0@0n6-16351WgtkiaV7av2#DmjKkb!ORzle|%>(Gk`( zzm5Oqk{O%J#(ye}O+VkU>DrWwPWmf&^*zV_DDSEMX|M&3SzmXwHA)d8ftLUtIn{e- zgz;h>uwnCWm^8zXn+(t#cl*Ri4-DQB{te+ZUZy)Vb*(A|4A0V&@g$RiKFSh0XOW2kX844h4bMo}= z)t*hCcvLv&(E>dwbj+pIQp#fAX>F9|O-m{&+68}pS;q9~@}D7#s`YX_OX-p6KDlu( z!Fcghs!cqCZ}{dU`JI_{1cdXXliBch%)hWf@$R!^)90WTZ*2qgo8o%@* zXMIUbEfgi`ug%o~>8`L7rxS%rGNFEO43iRHuLW-EoK=cL{Pl6&u9|q!4_hB{Fs@}$ zot1=Mtzb$DhMAmL4oOs;-)L`|Wk6{!beq>C*}gxO-jhML3)wRJT-*&aW}!4FSju&$ zS6a?xEpVzVg`DRi->@Po^XAL12}!g@Y^eFXpWm7ZbetvCcb&QmHHc6+v}M@K$7UYK zn-k{&YsXhb2NCTeep zS!u|Y-?aFdgLq%v)=-Hliu^pV5N%2K(_@z&tP%7su2g{iBj#K@~D8LBu90`73A7d+IAbOLbN zG?Qu^RBJH%fDCWea!@-88o-0JC16+IXeEu8Uog0~NGSzP=}M`Tw*D}o`X!A@A5ag7 zO@DM9%uj(73UvA%Opw)};!g$o2~w^U#TsOIZ^~n;hmSfl$xIXG{rCU_we_tvvkl|{ zXJ&CfW0NSLEU0%PGb~qx=3%{=1{QpL((gR?*>I(E)zvzw5BOtXF9Z1ye+m749k3LD z8U-u9n1jSBup?C_j0fk@o5rYU<<|56=1r9n+RwyUrH|8hyn*E4F=s^ubl+_|psUn==8Z-X+7sQ$~Xd4Fj_5j?9upaT_DeObamy=mX4^@miU z@ENFQD}u}oJ`bQ`ndV4Nh~ks`o?IyHSZ|2VaS}Q0QI5ZDNHSnJ$q87)@0LIfxN4C!h49R%M@V#?gI`uptgCfdmViulZT64_2R>q|G3Buv>bhLyPm@ z4r}UTvQDm7%I7B5Rh^ela-{dRJ1VdpqU{pBriDwLXMy`Wli zV$EEx`i^lCwusn~QGECt*sJjMivC6wfAZb?$NlX4p}aq@DZ>b)bRMMnZBRm}JN}Ya z2yqc!K|VDL;?MpZ@z>mJ2>|=Q-bDAeTwiP`bWDVOX0!k^xw z#qDR)@EDj8kNtHWVNyOC;kM%1Fy$l2yXFXyx>*AYBwIpd+J*VXq*;&Jn9;Nn7WzXQ z(I)%W^RSzs)<}PSAPl(MWfXW5HbA`no|3(#1v?=UV{{6Q(SR)->My28U{)0v+s8a#erd zx@HhOpp-1-T!hs?Dv}00-8Jzypw=S#>e#fPpxeY4eV=W1g^pTw%>yI;jaH$07Q)lq8Qv4_1YuM~p!vhiC-+ruWOKVFZIF0h0nV1ZWWz z`*l+mSIqmFd#?*ix^8Z;WGNgNLq}2-8+}^vudUlRX?i}VxL4HC($pT`RN^gG(Z3wN ze6uvkaQIYG;u3i!dP9b8wWBxtWyo|k!vQ5qY{)=rzzabK!neV@GqnhD{v+mzHmGnW z)`z$M1|-G!6p9L{dE19Ez(Ka*d8CR+_Wd+YwMaVP^^QxF{=GWY{OYEf&`+L$cd(fJ zFQZkG(D7vfAwq^|)Nuw{LFW}LoPuHt+mH6|8X}pd^QSVz_Pr)%M0tR%Z%|PIu*jcE zY)Ro4+@eOFUhCV;HDKMR);~tz;rGyNDsDhL`$5IOYR2!{HQrOiNsUO1vQ?cC z+J-ywT>vJDFV!2WSxz@*uel2#PH@`i!bi2k1izw$R|w(!O$hdo-<%Zq7g+ttG6C=9 zTIqRL8Rl16`Whro|8Of?sd=d=npRsh>Yhj8M{O^(DEUs%fTI)1LOoo4=Gx?)#!2A% z7IU0HqGV=jqG*hlvX+Y}wZEhEP&YY|x)zs!nklx{yWar$)+z`(@8r5n{t6g5Q8tK1QTV)qw8w6&-kJx}G`Yd^)>v7@pIH|vVQ-RlC zZzBEIOcAu))IV?fGZ%pM*S7hq%`2ROQjsKx!yj7pm+pf6^hv2`Phr0SYh)w-0=E5x za1G^^Hr1eCgod4d)MZ@Vo~1NRLrm0Gr->><_@s9EA*eHoE+iePg}u49xK?S*ZP#L@ zq)F3dweiH*l3(>!#^+cFC5=T_op~$m{?)qUA{8D!ah&38gi2&cN`q$$f*T{Obtfc1 zP;o&WvN6dCSrXoM9kf-ou`8nvr5tfv+WkKbhMMopBa5E`ZJi?u&dy{tWe8gAo2^U6 zF7L*Zs3L93#r<;YH{=&gLy>Z))S z0;5nNd(L}QhB>AkZ<{+v(KF!8FJt4-+mW!QHs7jlLI?1Yyrm{hEZ3eMeiy@ZDd!;2 z5HEWz#e_kCh{vC*qs4q5PVO&>Ru7Paz1P&5T3%PU3p-<@$jH$|ej{5&OzbaBjv5+K zy8WtoEU0*f0` zesc)TwJMT(o0q`gCvknYgHbJGMd)Z4NcR`_k$%)mR{Yg&|jLt~jCDquuDR_{IfJ zr=n&@pjJa6)XsYXo1~UqL(+>I{#$q$pHpN}Dhd$+*WH8xhQiPn)5;~!G(nht#{iC9 zCTF1X$l%%QMq+?~(|Qbnr=MQcrM?iu6eTwnG69vwYIoqtbGvNfPPF&D0g>b-ZN!Ty zu<{{rZn@t|Jr{q>3nZhVA+X~#{I1~sy2C8Ih?ku!y zU`hFK1v|k-b!J_ou}Jqh4GnN@HIzjbDWY8xdxtz1jx&LY*AGjr1^9%HJ!v$x$2-z# zwnSDL-vq032}ddpcJOvx;XY-Rt|&}&>OKS%YOk}z;O77AE4+b7f3h&1uIPje(4sNRC${5!G0MFj)68tL?s0h7$kPe-phwM+0mwqJ@)7MK2Yy<9Y2$kSH-G|+ zZRhX^p#_6D(GUT?*y9i|xS-J$*_P!0tFq94T~y|=;;I&Cb>j;P_x#L(&XbCphfrKg ze)+@4^z*NFDF==6viChRcoRGk<0bQxN=GQ_7dfIjla4Do%G#x`|h{4L3B! z^$xpF*b7>H2URkc_s`K6!yrMz!^ns0xtbI!W1ac!e9Vczov^{li;l_EvD9ta12 zT*sIp9nq7-8^@m9msQMj>QHO6CwUnkYud4<@hx5y!kay-AoXJ5H22_TM6GngM9VD; z5V-?raJxh13vY1tuEDJN++O%Zv86ST+#wEVpXMl4%uHzfY&_q<#99Y)%TxBsEnYWM z;04^DBgu4+b1PcaNA`J3;xDw5HuIA;HTgLlqJBhnk;evMJrX|817knYLH&Qe3eDw( zBZsXIl?_>KEfmxLxqA7#4u1&gG(|BG4|EaK?SN$nyti^o%<($79M|UROma|h zO_2c^*&=T%xh}l?Fg`0ZFP@Zv7P^sYEA766pazM;AH$v&fjd69a~$8SvMeIz9hgBz zERs^R6CzFKK^XyRk@bBWT1x<|L?``UGv^4w`P?s6C7QWN6lmr7%j@XfC+lQbk&T(4(R#&bm(6BA_hQ;`4;us@q zY@$i^nT!P$`H+eXKH}2h==}SmClWy-aGCd)xKa`gd+{X$?Q!7yL~8DLY|9K~2&}Cv zA9~w$T00u6wWE3y*`+C?G?3VI~Ry*F$=!!mvG&X&tc6>KxhE^>4PB2LA=xYP>ifx+teyLEZ ztq=BM(s7H`4u4yRQ=k-7z)|zi&`z8#PUxLi=N3OVsoEpia)7{Eq5U~G&!qfLhU)5y z&4FZ7^pSa6tK}Q4Li$?zp>CR=U!ZnxVa@F9L)7loz>QT;^{;le`m4Q`K$`KfVr&e0 zkGKiwfVl*9lf@I-TD{7fCKGlh!0NIB)aue8s=vPsjEDSX#-d=cbryL-cO`0}^Su_v zYA=6z0jVjXY}p8b3QPkOm7SG0GS+Yz3xCEUE(J>#a`+~nByG{(m&cL~#RdMl#Vh`m5q$G&z<4#d0*9A<1)`{x+rKLlio3L63saahQs z&9roI%tX4_GD?x}VWH7JG3e3({!(Bskl@a1T8cJlYt}ocK2(f->Ur+FG881f2j*|n z(0?{Oqlletv6Pq^vHGovE0LW<=_8xPG*VL?H$2e+JYD5!!&m1V&HG#nMWg8`)`z9lg)XKkj>SVDB_y4DCuqXPL%g=KrcuD z&mCQYQE-m+gNNf13mc9mH*;Jo4*^VELcg^r+&sk4C&#{K@%s+oBZYkGGp@zx+KdIz z7VjtP&2-kCZe1-1*NJneQb|h#n8HqH1!7Zjth#64-!f)?nmN6-Hfv~ZOM5cD zHipO($-9dx=W?h+SkSqBEY+#;olTME8FTQb3~>ZB$yferg?-TgBIv<$W0-(OzpYb) z8#!qpZ6jf5Hb?Dqm@?pcaycy@b!Tt+J<}ZM4MA4li-h!pQ6c!C5oI%PtjJg>U#;6$ z8=C5v!iTCOL+WQXL%nXxyKrD$_=$x@=FTb+a9|6wK|M3YG4+mQ z0zQXx6mZb41y+;AReV`AnxnoD&^?J;shiGIa3Qwp;;AA4gb~T?FSGpx`0z*_0+uDGl!# zh&4HV_vOoN@FfcfblL9+5iV9_>#Yd2jQHE5F zx^|VPSApF;>;@kIbppUni;gob&6V+c6jfX-O}p{95qYk+kq38rp@bUHqQDewySMlNuaoD%EV}qS1~Yb zI_WD&J%DwsgP&;$>$3XPk?u`69G$E&a!clW{-NXi$v;1Yc(1{N{}8vn0(jU>;kI>U8xM9M6W;}0d-Szyoa4D(N7CI>!f;Bt#n?^_0-=Dk=! z>(ZyMfW3tGg$JTeA!jGq*JOY6p49fvg9NbYi`DwZ^)Q4MAIt$cQ2Ad`5cY31mY{;L zY*O0AN~wT3ng1?Q`;Tbtf1LdO2hgfN$P@oPwCXP$ivK?`b&Im^p|B?O^Xw@Gz{wJVSygdIsvPyd;VwDGita>23A=Zvj*J$ak*|c2}A&uwQg%M*z zmrfcMIytXAZJ;Urd3bh-?DbZGT@e0p?o?f7K|KF!hLGQwA929LOS^ZG#YZ25W4Ncs z{HGh;mm)Lf`iDyBOZ%se%#MwuVAao_?1Hmd3%|dtYkBO*!~qKX4sG4;_w&S@exE-+ z_AgzHD!ox)Zs+l>1bv~$crQR;Q-7?d3 zZQy2+0`zy|^sWc_Pjm2=fV#6)YAFZ@H|0J&kbifzHE*k|$H)N+^6s0X*jLP~ZJd9P z%l$3&T}*`5f0tN1%k8_e_)u$OGP{bIiYzlnm?iFFl$<*CV$qb?B>Maab{t28l$}!k zM|1?`SzUipx_r&@OL{T)I^;vi1j?zjr1C>S$HHn8X*8JHibu7n`c?4_Ckv@0DOS%3 z$T6*|n=3^)o|}j=(W@PSJkvtf@l<5lFV)s)bL<*jHy#1;H*ak4LWkl>;MlnMoM0>J zzAS@QeZOmqTWQvJRdnaiGRi))exyUP{o%q}BJe~^Bd#zZH((M#@#~#vkh`jFIx3c5 z5U#^TOGoMRs18Gm}W^W7uvQq&}_k8m=9XT#ysrTKov zSOisVk3dJlTHSB+g}jrj8mbCa{xtHgrY)QX#Me)H5;jb`IAT8<4Jaw=qM?V(5LI?< z<@!0-ttZ;{nS|==G0d1@b)NM%=^twA$JWK|*K~$sv!pOkr=Z@39)#Jod;{CHtn}}B zVRN7ocZW#Xm^FlG9b_EjwNOP`es2@v-UFwc6*fX9otz&|BoRH7)AUEGe@-|jTU(&H1dj-*r*RrDM zxG;x$1^E*W=8~e7D9Ith`=4f-8by|UUHn#ppo6L6llAM=pBSAj)xT}KrWQr1J&D+< zFFV&R?e`Nz)b*uBfUFZ~TBOzXYi}|Id(_}9+sB&ciYki!oig4Hoio(#fm)=jNHoUBC|1`wq!w1g4XA%5A0OJB+ zfI0myjLZKW7?=A$P}YbHaP5sgk9L~!tNoa=he188#)X2sbQ_6ShI*pJ=S;tH*93-} z_wZnMqgP=bm2nsPZq#5SOfYx9GPcHw4$hW;8s2`TKsG^n0h`hDr5kYVJ5>*;$H&F8 z!HbUr?5Fil2V*`nTE%iMv|8F*epMn=1nZsfbTce5X7&R7y`PA+XJ3rA+BNS_bicG0 ztghLEs`{NHC*05YMT9>LI>mM0a6r{dxWs!x4gy%^h*clHDMU!QE5s|7s7JnTe)+W% z=!k|tA!*)r84?3T#uQ~9$h!*zX-lR8X*NXdBW$oO3xPD+zj}o8ug+S!3!gAj05FTlQ@~Y2DAgR&`9S1 zbsGGTXxj%LxhCAFkoJ6#ygE1G_mzMw zerPLbJ_aJ7k7Rpw*3+zJRo2Xgkn5#>o)qpI#eH}fm@FF~60uSBI=yzGtM#+xD_mPI z&5w4(#2={La$s|R;%V+*EPo4&ni-(^a8A^NDFSSFik0*&`X60~=A*AU0@?9p@R_v) zmw8;XJe2F2W42t66gW%4=bYI5BxSfbUC7~h_VtrXx@i`5AlU^{n9Kp;dGQ65;Xw3_ zX$|RxNAi1#kZQ}vD z)GkY;sD3H6$jF@nNHZ|fznK2~InzfupU)~i%`Td^Hj@55(U{;9gQF+`>`gh5@28%l znVutp@Q{}PJ9)eOVbwK+p)HvMl0OdRqe8=P%4PTUe7x*o2BIjePicY))K4w6+z`7k zd12?(FAstX8k1}dY(N(ux4EK+(!<%b>H3^PJ|Uq)!N7AsRZF}}hXjx<$az_rf2d{q za)%cl#E4_8(q$|P>&&31SL6VU-(I`#dju^}@$j7AM65xK4=A#5LP3I;ybji@Rl3!s|Kkzu&)fdhT&I0Bz_wq!Ah-^#e;%Q5ddBKdu~Tv zFGH8aYcuUwI3}GK(SU~xh;&3h7mC=z{?Yydy=c~40EZcl`OpxLpy-JdJgjAq$Xf~H z#=iHcMZ>=G#R%dklqZ2C4L@Kd0`V^pj=VMRGK*Gh8f3hzX7IIZV%TWI12h>#wV(oE zF#_qXQ350C)lWHn*}#y8PpZ^4HPr(fF~s>=dz>YSVG?=aA(Hic5rG?hgv@JS@9#kE zUl-gTuPZ2;GsjThzzfVo`A7k&k9sw$_^ggSS=5G!PoE!G7Ngs(pluk4GJT|K zXMfDu*W2PVSqvt+Fpn@fo0$PWIXXiLXx#pFUpxh8L*J0rk?QB>Vry9h`a`dHCG1D0 z!4@wSD%40u(Be#9{i3T6gt-Xeqoq8k!N%&7K>LT8;&$< zEBnewSwvt7yJJjLJHP`0v1u^=24Eh7+(z`|8?WT2-@5BrFJdLCO2f6)0h`G$96dQr zWf$yjQwriIPho}=M&nqR%>(AEh~UgL>?2W~q9GebhIzGQty$nLo$GQvk@We#!L)AM z2u-ZZ$PZqspec6_z!5zsiI(E@>B5d$XMIgT3VHm#d6XQfQxdsl&|tl|-!=-7Y&`xg ziDA$90YR`miz+)gMA?Rw;1~p<+xn4hIDJ~rb2A#HJHRZa@8w>jPdV~<_?4DcSavE0 zu}-5zk|zgoPJQ!Q=YH`H1gvguOCAZ3Mx%hYLDQr@qlcyK^jL`?GSXRstKo>Ekh zs$upOjrIG(WM!Sk(BE}uwf$1!e^o|hds+Uj$ zs!lWIw0RL2XXZ&S=NZd5<4Cf`#Y?H^bY7(V0z1Zl-|?_}K^vX4X47??rd$iOr>qUQ z#CQw%uje)oUP5A?sakw2FIm3F=V2Q!N(0EDy(aj