From 5e3acea558b6730e521f55caa04e1860b6a9e333 Mon Sep 17 00:00:00 2001 From: wangxx1809 Date: Wed, 24 Apr 2024 18:12:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BC=A0=E8=BE=93=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=9B=BE=E5=B1=82=E9=97=AE=E9=A2=98=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PrintC/Communication/BaseClient.cpp | 1 + PrintC/DataManage/DataHandle.cpp | 3 +++ PrintC/DataManage/DataHandle.h | 1 + PrintC/DataManage/RWData.h | 15 +++++++-------- PrintC/DataManage/StreamClient.cpp | 17 +++++++++++++++-- PrintC/DataManage/StreamClient.h | 5 ++++- PrintC/Machine/Machine.h | 3 +++ PrintC/PLC/SysParam.cpp | 3 +-- PrintC/PLC/SysParam.h | 8 ++++++++ PrintC/UI/Controller.cpp | 7 ++++++- PrintC/UI/UIWin.h | 2 +- PrintC/main.cpp | 2 -- PrintC/output/Release/log/2024.hbd | Bin 122880 -> 122880 bytes PrintS/Communication/S7Command.h | 8 +++++--- PrintS/Controller/Controller.cpp | 1 + PrintS/DataManage/ClientInfo.cpp | 3 ++- PrintS/DataManage/ClientInfo.h | 1 + PrintS/DataManage/DataHandle.cpp | 10 ++++++---- PrintS/DataManage/DataHandle.h | 2 +- PrintS/DataManage/RWData.h | 7 ++++++- PrintS/DataManage/StreamServer.cpp | 4 ++-- PrintS/HBDSystem.cpp | 12 +++++------- PrintS/HBDSystem.h | 4 ++++ PrintS/PLC/SysParam.cpp | 6 ++++-- PrintS/job/H3DFileProcessor.h | 5 +++-- PrintS/job/H3DMetaData.cpp | 8 ++++---- PrintS/job/JobController.cpp | 5 +++-- PrintS/job/JobController.h | 5 +++-- PrintS/output/Release/log/2024.hbd | Bin 131072 -> 135168 bytes 29 files changed, 100 insertions(+), 48 deletions(-) diff --git a/PrintC/Communication/BaseClient.cpp b/PrintC/Communication/BaseClient.cpp index cac7a79..fe7872d 100644 --- a/PrintC/Communication/BaseClient.cpp +++ b/PrintC/Communication/BaseClient.cpp @@ -139,6 +139,7 @@ void BaseClient::InsertMp(void* startPtr, size_t count, const string& suff) { void BaseClient::UpdateData(const ReadData& msg) { for (auto start = msg.its.begin(); start != msg.its.end(); ++start) { + if (m_baseMp.find(start->nameKey) == m_baseMp.end()) continue; if (start->valueType == iFLOAT) { float val = (float)atof(start->strValue.data()); m_baseMp[start->nameKey]->SetValue(val); diff --git a/PrintC/DataManage/DataHandle.cpp b/PrintC/DataManage/DataHandle.cpp index 8875ac8..d49aa18 100644 --- a/PrintC/DataManage/DataHandle.cpp +++ b/PrintC/DataManage/DataHandle.cpp @@ -28,6 +28,9 @@ void DataHandle::Init() { m_controller->Init(); SetPushMsg(VERSIONREQ); //获取版本信息 + + stream::ResponseInfo* response = new stream::ResponseInfo(); //获取一层图层的数据 + m_streamClient->GetLayerByIndex(1, response); } diff --git a/PrintC/DataManage/DataHandle.h b/PrintC/DataManage/DataHandle.h index 9dd6722..6351ce9 100644 --- a/PrintC/DataManage/DataHandle.h +++ b/PrintC/DataManage/DataHandle.h @@ -27,6 +27,7 @@ public: if (m_streamClient) { WriteData msg; msg.dataType = dataType; + msg.valueType = DATATYPE::UNKNOW; m_streamClient->SetPushMsg(msg); } } diff --git a/PrintC/DataManage/RWData.h b/PrintC/DataManage/RWData.h index b731989..8a8b1f1 100644 --- a/PrintC/DataManage/RWData.h +++ b/PrintC/DataManage/RWData.h @@ -18,9 +18,13 @@ enum READTYPE { INITERRORINFOSRSP, //返回初始化错误信息 VERSIONRSP, //返回版本信息 IOSIGNALRSP, //io信号返回数据 - SYSPARAMDATA, //系统参数数据 + SYSPARAMDATA, // LASERCHILLER, //冷水机参数 + UPSPARAM, //ups参数 + TEMPCTRLPARAM, //TempCtrl参数 + OXYGENPARAM, //测氧参数 + POWERMETERPARAM, // LASERPARAM1, //激光1参数 LASERPARAM2, //激光2参数 @@ -40,16 +44,11 @@ enum READTYPE { SIMPLESUPPLYPARAM_V22, //供应参数v2.2 PURIFIERPARAM, //冷水机参数 - POWERPARAM, // + POWERPARAM, //电能参数 CHILLERPARAM, //冷却器参数 - TEMPCTRLPARAM, //温控参数 - OXYGENPARAM, //测氧参数 POWDERSUPPLYSIMPLEPARAM, // - UPSPARAM, // - SCANNERPOWERPARAM, // - POWERMETERPARAM, // - + SCANNERPOWERPARAM, //ScannerPower 参数 }; diff --git a/PrintC/DataManage/StreamClient.cpp b/PrintC/DataManage/StreamClient.cpp index 9932ae0..9497b8f 100644 --- a/PrintC/DataManage/StreamClient.cpp +++ b/PrintC/DataManage/StreamClient.cpp @@ -20,13 +20,13 @@ StreamClient::~StreamClient() { if (m_connectTd.joinable()) { m_connectTd.join(); } - } void StreamClient::Init() { m_localIp = LocalAddr().GetSystemIpAddress(); std::string target_str = m_localIp +":"+ std::to_string(m_port); - m_stubTwo = Stream::NewStub(grpc::CreateChannel(target_str, grpc::InsecureChannelCredentials())); + m_channelTwo = grpc::CreateChannel(target_str, grpc::InsecureChannelCredentials()); + m_stubTwo = Stream::NewStub(m_channelTwo); m_connectTd = std::thread([this]() { this->AllStream(); @@ -108,3 +108,16 @@ void StreamClient::AllStream() { } +bool StreamClient::GetLayerByIndex(int index, ::stream::ResponseInfo* response){ + // 初始化 gRPC + std::string targetStr = m_localIp + ":" + std::to_string(m_port); + std::unique_ptr _stub = Stream::NewStub(grpc::CreateChannel(targetStr, grpc::InsecureChannelCredentials())); + + ClientContext context; + ::stream::RequestInfo request; + request.set_datatype(LAYERDATAREQ); + request.set_strvalue(std::to_string(index)); + request.set_valuetype((stream::TYPE)iINT); + Status status = _stub->Simple(&context, request, response); + return status.ok(); +} \ No newline at end of file diff --git a/PrintC/DataManage/StreamClient.h b/PrintC/DataManage/StreamClient.h index 5301511..2ac5549 100644 --- a/PrintC/DataManage/StreamClient.h +++ b/PrintC/DataManage/StreamClient.h @@ -30,11 +30,14 @@ public: } void SetPushMsg(const WriteData& msg); + bool GetLayerByIndex(int index, ::stream::ResponseInfo* response); private: bool GetPushMsg(WriteData& msg); private: - std::unique_ptr m_stubTwo; + std::unique_ptr m_stubTwo; //双端流使用 + std::shared_ptr m_channelTwo; + std::unique_ptr m_stub; //请求 回复使用 std::string m_localIp; int m_port; //服务端口 DataCallBack m_dataCallBack; diff --git a/PrintC/Machine/Machine.h b/PrintC/Machine/Machine.h index 5f0fee9..afe2ec7 100644 --- a/PrintC/Machine/Machine.h +++ b/PrintC/Machine/Machine.h @@ -19,6 +19,9 @@ public: void Init(); + virtual void InitSignal(SignalStateWrapper* ssw, void* cc) = 0; + virtual void InitSysParam(SysParamWrapper* spw, void* cc) = 0; + void SetAxisAndSignal(SysParamWrapper* sysParamWrapper, AxisRecordWrapper* axisRecordWrapper/*, PLCAxis* axis*/) { m_SysParamWrapper = sysParamWrapper; diff --git a/PrintC/PLC/SysParam.cpp b/PrintC/PLC/SysParam.cpp index c4c7c24..d8857f9 100644 --- a/PrintC/PLC/SysParam.cpp +++ b/PrintC/PLC/SysParam.cpp @@ -11,7 +11,7 @@ SysParam::SysParam(int addr, int num, void* cc,const string& context, const std: , m_context(context) , m_code(code) { - InitializeCriticalSection(&m_ValueCS); + } SysParam::~SysParam() @@ -23,7 +23,6 @@ SysParam::~SysParam() } m_sysParamMp.clear(); - DeleteCriticalSection(&m_ValueCS); } SysParam::SysParam(SysParam* sp) /*:PLCCommand(sp->m_Receiver)*/ diff --git a/PrintC/PLC/SysParam.h b/PrintC/PLC/SysParam.h index 0e21b8c..4429517 100644 --- a/PrintC/PLC/SysParam.h +++ b/PrintC/PLC/SysParam.h @@ -20,6 +20,14 @@ public: int GetAddr() { return m_Addr; } string GetCode() { return m_code; } + static void SInit() { + InitializeCriticalSection(&m_ValueCS); + } + + static void SFini() { + DeleteCriticalSection(&m_ValueCS); + } + static void Lck() { EnterCriticalSection(&m_ValueCS); } diff --git a/PrintC/UI/Controller.cpp b/PrintC/UI/Controller.cpp index 5cf92bc..0c27047 100644 --- a/PrintC/UI/Controller.cpp +++ b/PrintC/UI/Controller.cpp @@ -28,17 +28,22 @@ Controller::~Controller() { DELP(m_Machine); DELP(m_MachineCfg); - + SysParam::SFini(); } bool Controller::Init() { + SysParam::SInit(); + m_StateCtrlWrapper = new StateCtrlWrapper(); m_SysParamWrapper = new SysParamWrapper(); m_AxisRecordWrapper = new AxisRecordWrapper(); m_SignalStateWrapper = new SignalStateWrapper(); ConfigManager::Instance()->Init(); m_Machine = ConfigManager::Instance()->GetMachine(); + m_Machine->InitSignal(m_SignalStateWrapper, nullptr); + m_Machine->InitSysParam(m_SysParamWrapper, nullptr); + m_Machine->SetAxisAndSignal(m_SysParamWrapper, m_AxisRecordWrapper); m_MachineCfg = ConfigManager::Instance()->GetMachineCfg(); diff --git a/PrintC/UI/UIWin.h b/PrintC/UI/UIWin.h index 9634e4d..379e4c0 100644 --- a/PrintC/UI/UIWin.h +++ b/PrintC/UI/UIWin.h @@ -91,5 +91,5 @@ private: bool m_IsShowInitError; string m_ProductVersion; - map* m_TextureMap ; + map* m_TextureMap; }; \ No newline at end of file diff --git a/PrintC/main.cpp b/PrintC/main.cpp index 1b4f4c5..2ff78f9 100644 --- a/PrintC/main.cpp +++ b/PrintC/main.cpp @@ -57,8 +57,6 @@ public: ChartletManager::GetInstance()->Init(); g_LngManager->Init(); - - DataHandle::Instance()->Init(); m_win = new UIWin(); diff --git a/PrintC/output/Release/log/2024.hbd b/PrintC/output/Release/log/2024.hbd index e9c05d62f7f82fdec5fdf97a3ea9ebbad6910a6b..605d17c99e02c42bce6ba18e6a3a0c25436fdec8 100644 GIT binary patch delta 16526 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%0DvHzZgt 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 @@ -55,8 +55,10 @@ public: int GetRequestSequence(unsigned char* bseq){return 0;} bool Verify(unsigned char* rseq,int dlength){return true;} - TS7DataItem* getDataItems(){return m_dataItems;}; - unsigned int getItemCount(){return m_itemCount;}; + TS7DataItem* getDataItems(){ + return m_dataItems; + } + unsigned int getItemCount(){return m_itemCount;} public: //boost::function m_s7fun; diff --git a/PrintS/Controller/Controller.cpp b/PrintS/Controller/Controller.cpp index 064ed79..69abd1a 100644 --- a/PrintS/Controller/Controller.cpp +++ b/PrintS/Controller/Controller.cpp @@ -113,6 +113,7 @@ void Controller::Init(){ } m_Purifier->Init(); + m_jobController.StartLoadPrepareJob(); } diff --git a/PrintS/DataManage/ClientInfo.cpp b/PrintS/DataManage/ClientInfo.cpp index c39151a..cc86313 100644 --- a/PrintS/DataManage/ClientInfo.cpp +++ b/PrintS/DataManage/ClientInfo.cpp @@ -18,7 +18,8 @@ void ClientWrapper::OfflineCheck() { auto client = m_clientList.begin(); while (client != m_clientList.end()) { if (!(*client)->IsConnect()) { - printf("%s 下线了...\n", (*client)->m_clientAddr.c_str()); + size_t pos = (*client)->m_clientAddr.find_first_of(':'); + printf("\n%s 下线了...\n", (*client)->m_clientAddr.substr(pos + 1).c_str()); delete (*client); client = m_clientList.erase(client); } diff --git a/PrintS/DataManage/ClientInfo.h b/PrintS/DataManage/ClientInfo.h index 8245010..f283bff 100644 --- a/PrintS/DataManage/ClientInfo.h +++ b/PrintS/DataManage/ClientInfo.h @@ -28,6 +28,7 @@ public: auto lst = m_msgList.begin(); while (lst != m_msgList.end()) { delete (*lst); + ++lst; } m_msgList.clear(); } diff --git a/PrintS/DataManage/DataHandle.cpp b/PrintS/DataManage/DataHandle.cpp index 267b594..722e548 100644 --- a/PrintS/DataManage/DataHandle.cpp +++ b/PrintS/DataManage/DataHandle.cpp @@ -11,14 +11,16 @@ void DataHandle::DataCallBackProc(void* pthis, const ReadData& msg) { void DataHandle::LayersDataCallBackProc(void* pthis,const ReadData& msg, ::stream::LayerData** response) { DataHandle* p = (DataHandle*)pthis; int index = atoi(msg.strValue.data()); - int size = p->m_controller->m_jobController.GetJob()->GetMetaData()->GetLayersVec().size(); + + + int size = (int)p->m_controller->m_jobController.m_PrepareJob->GetMetaData()->GetLayersVec().size(); if (!p || index<1 || index>(int)size) return; - p->m_controller->m_jobController.GetJob()->GetMetaData()->GetLayerByIndex(index-1,response); + p->m_controller->m_jobController.m_PrepareJob->GetMetaData()->GetLayerByIndex(index-1,response); } DataHandle::DataHandle() - : m_dataCallBack(nullptr) - , m_streamServer(nullptr) + : /*m_dataCallBack(nullptr) + ,*/ m_streamServer(nullptr) , m_config(nullptr) , m_controller(nullptr) , m_testFlag(false){ diff --git a/PrintS/DataManage/DataHandle.h b/PrintS/DataManage/DataHandle.h index d544fea..17c1415 100644 --- a/PrintS/DataManage/DataHandle.h +++ b/PrintS/DataManage/DataHandle.h @@ -19,7 +19,7 @@ public: static void DataCallBackProc(void* pthis, const ReadData& msg); static void LayersDataCallBackProc(void* pthis, const ReadData& msg,::stream::LayerData** response); private: - DataCallBack m_dataCallBack; + //DataCallBack m_dataCallBack; std::thread m_testTd; ConfigManager* m_config; diff --git a/PrintS/DataManage/RWData.h b/PrintS/DataManage/RWData.h index eba8c2b..8926fdb 100644 --- a/PrintS/DataManage/RWData.h +++ b/PrintS/DataManage/RWData.h @@ -90,6 +90,7 @@ enum WRITETYPE { INITERRORINFOSRSP, //返回初始化错误信息 VERSIONRSP, //返回版本信息 + IOSIGNALRSP, //io信号返回数据 SYSPARAMDATA, // LASERCHILLER, //冷水机参数 UPSPARAM, //ups参数 @@ -115,8 +116,12 @@ enum WRITETYPE { SIMPLESUPPLYPARAM_V21, //供应参数v2.1 SIMPLESUPPLYPARAM_V22, //供应参数v2.2 - SCANNERPOWERPARAM, PURIFIERPARAM, //冷水机参数 + POWERPARAM, //电能参数 + CHILLERPARAM, //冷却器参数 + + POWDERSUPPLYSIMPLEPARAM, // + SCANNERPOWERPARAM, //ScannerPower 参数 }; diff --git a/PrintS/DataManage/StreamServer.cpp b/PrintS/DataManage/StreamServer.cpp index d9876b7..9faa60e 100644 --- a/PrintS/DataManage/StreamServer.cpp +++ b/PrintS/DataManage/StreamServer.cpp @@ -18,7 +18,7 @@ StreamServer::~StreamServer() { } -//回复后连接中断 +//回复后连接中断 请求打印文件层 ::grpc::Status StreamServer::Simple(::grpc::ServerContext* context, const ::stream::RequestInfo* request, ::stream::LayerData* response) { ReadData readData; @@ -41,7 +41,7 @@ Status StreamServer::AllStream(ServerContext* context, grpc::ServerReaderWriter< string addr = context->peer(); size_t pos = addr.find_first_of(':'); - printf("%s client login...\n", addr.substr(pos+1).c_str()); + printf("\n%s client login...\n", addr.substr(pos+1).c_str()); cinfo->m_clientAddr = context->peer(); cinfo->m_context = context; ClientWrapper::Instance()->AddClient(cinfo); diff --git a/PrintS/HBDSystem.cpp b/PrintS/HBDSystem.cpp index 9b798c9..db18539 100644 --- a/PrintS/HBDSystem.cpp +++ b/PrintS/HBDSystem.cpp @@ -55,7 +55,6 @@ void HBDSystem::GetVersion() string strVersion; ::GetModuleFileName(NULL, cPath, sizeof(cPath)); InfoSize = GetFileVersionInfoSize(cPath, &dwHandle); - printf("version:%d\n", GetLastError()); if (InfoSize == 0L) return; unsigned char* InfoBuf = new unsigned char[InfoSize]; GetFileVersionInfo(cPath, 0, InfoSize, InfoBuf); //获得生成文件使用的代码页及文件版本 @@ -86,10 +85,9 @@ void HBDSystem::GetVersion() void HBDSystem::Usage() { - printf("print service usage:\n"); - printf(" r(run):start run...\n"); - printf(" s(stop):stop run...\n"); - printf(" e(exit):exit program...\n"); - printf(" h(help):print this information...\n"); - + printf(COLOR_GREEN "print service usage:\n" COLOR_RESET); + printf(" r(run): " COLOR_YELLOW "start run...\n" COLOR_RESET); + printf(" s(stop): " COLOR_YELLOW "stop run...\n" COLOR_RESET); + printf(" e(exit): " COLOR_YELLOW "exit program...\n" COLOR_RESET); + printf(" h(help): " COLOR_YELLOW "print help information...\n" COLOR_RESET); } \ No newline at end of file diff --git a/PrintS/HBDSystem.h b/PrintS/HBDSystem.h index 0db10bd..c688b96 100644 --- a/PrintS/HBDSystem.h +++ b/PrintS/HBDSystem.h @@ -8,6 +8,10 @@ #include #include +// 假设你的系统支持ANSI颜色代码 +#define COLOR_RESET "\033[0m" +#define COLOR_GREEN "\033[32m" +#define COLOR_YELLOW "\033[33m" class HBDSystem { public: diff --git a/PrintS/PLC/SysParam.cpp b/PrintS/PLC/SysParam.cpp index aed1d74..5b1851b 100644 --- a/PrintS/PLC/SysParam.cpp +++ b/PrintS/PLC/SysParam.cpp @@ -129,7 +129,8 @@ void SysParamWord::SetValue(short value) { S7WordData sword; sword.wValue = value; - unsigned char* pv = (unsigned char*)m_CtrlCommand->getDataItems()[0].pdata; + TS7DataItem* gg = m_CtrlCommand->getDataItems(); + unsigned char* pv = (unsigned char*)gg[0].pdata; pv[0] = sword.data[1]; pv[1] = sword.data[0]; //short* pv =(short*) m_CtrlCommand->getDataItems()[0].pdata; @@ -215,7 +216,8 @@ void SysParamInt::SetValue(int value) { S7DWordData sdw; sdw.iValue = value; - unsigned char* pv = (unsigned char*)m_CtrlCommand->getDataItems()[0].pdata; + TS7DataItem* gg = m_CtrlCommand->getDataItems(); + unsigned char* pv = (unsigned char*)gg[0].pdata; pv[0] = sdw.data[3]; pv[1] = sdw.data[2]; pv[2] = sdw.data[1]; diff --git a/PrintS/job/H3DFileProcessor.h b/PrintS/job/H3DFileProcessor.h index 2b7a1f8..0b5c4ae 100644 --- a/PrintS/job/H3DFileProcessor.h +++ b/PrintS/job/H3DFileProcessor.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include "FileProcessor.h" #include "H3DMetaData.h" @@ -11,7 +11,8 @@ public: int Process(string jobfile); int GetCurrentLayerIndex(void) { return GetLayerIndex(m_MetaData.GetCurrentLayer()); } int GetPreviewLayerIndex(void) { return GetLayerIndex(m_MetaData.GetPreviewLayer()); } - MetaData* GetMetaData() { return &m_MetaData; } + MetaData* GetMetaData() { + return &m_MetaData; } string GetJobTitle() { return m_MetaData.GetJobTitle(); } string GetMaterialName() { return m_MetaData.GetMaterial(); } double GetLayerThickness() { return *m_MetaData.GetLayerThickness(); } diff --git a/PrintS/job/H3DMetaData.cpp b/PrintS/job/H3DMetaData.cpp index 449d744..7da07ff 100644 --- a/PrintS/job/H3DMetaData.cpp +++ b/PrintS/job/H3DMetaData.cpp @@ -162,13 +162,13 @@ bool H3DMetaData::GetLayerByIndex(unsigned int lindex, ::stream::LayerData** res stream::LayerDataBlock* p = (*response)->add_layerdatablock(); p->set_order(datablocks[i]->order); - p->set_blocktype(m_block_map[datablocks[i]]->type); - size_t count = m_block_map[datablocks[i]]->point_indexs.size(); + p->set_blocktype(pbindb->type); + size_t count = pbindb->point_indexs.size(); for (size_t i = 0; i < count; ++i) { if (p->blocktype() == BIN_VECTOR) { stream::VectorDataBlock* pvec = p->add_vecblocks(); - BPBinary::VectorPoint* vecp = (BPBinary::VectorPoint*)(m_block_map[datablocks[i]]->point_indexs[i]); + BPBinary::VectorPoint* vecp = (BPBinary::VectorPoint*)(pbindb->point_indexs[i]); pvec->set_startx(vecp->x1); pvec->set_endx(vecp->y1); pvec->set_starty(vecp->x2); @@ -176,7 +176,7 @@ bool H3DMetaData::GetLayerByIndex(unsigned int lindex, ::stream::LayerData** res } else if (p->blocktype() == BIN_CHAIN) { stream::ChainDataBlock* pChain = p->add_chainblocks(); - BPBinary::ChainPoint* chainp = (BPBinary::ChainPoint*)(m_block_map[datablocks[i]]->point_indexs[i]); + BPBinary::ChainPoint* chainp = (BPBinary::ChainPoint*)(pbindb->point_indexs[i]); pChain->set_dotnum(chainp->num_of_point); for (unsigned int chainPointIndex = 0; chainPointIndex < chainp->num_of_point; ++chainPointIndex) { diff --git a/PrintS/job/JobController.cpp b/PrintS/job/JobController.cpp index be8bdcf..dfed2ef 100644 --- a/PrintS/job/JobController.cpp +++ b/PrintS/job/JobController.cpp @@ -40,8 +40,9 @@ void JobController::StartLoadPrepareJob() DWORD WINAPI JobController::LoadPrepareJobProc(JobController* _this) { if (!_this)return 0; char buffer[512]; - MachineCfg* mcfg = ConfigManager::GetInstance()->GetMachineCfg(); - sprintf_s(buffer, sizeof(buffer), "%sPrepareJob/%d.h3d", g_AppPath.c_str(), mcfg->m_MachineType); + //MachineCfg* mcfg = ConfigManager::GetInstance()->GetMachineCfg(); + //sprintf_s(buffer, sizeof(buffer), "%sPrepareJob/%d.h3d", g_AppPath.c_str(), mcfg->m_MachineType); + sprintf_s(buffer, sizeof(buffer), "D://jobfile//bigmodel_name.h3d"); H3DFileProcessor* fp = new H3DFileProcessor(); if (fp->Process(buffer) != BP_SUCCESS) { diff --git a/PrintS/job/JobController.h b/PrintS/job/JobController.h index ff8ef60..7e98288 100644 --- a/PrintS/job/JobController.h +++ b/PrintS/job/JobController.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include "../stdafx.h" #include #include "JobFileProcessor.h" @@ -27,7 +27,8 @@ public: void RemoveJob(string job_title); void RemoveAllJob(); - FileProcessor* GetJob(void) { return m_CurrentJob; } + FileProcessor* GetJob(void) { + return m_CurrentJob; } FileProcessor* GetUnFinishedJob(); float GetLoadProgress(); string GetLoadInfo(); diff --git a/PrintS/output/Release/log/2024.hbd b/PrintS/output/Release/log/2024.hbd index 3474a9b6d4ae9ff240631e256af4a1bd3335a24a..85fec115f550a32a185110b7087e6ccf3bc6ae8c 100644 GIT binary patch delta 24783 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 u=-SdGcYpuXCL;O( delta 20655 zcmV(vKswSxxR>72E|GKq~QvN6@SLTf|8DpE^VIJ!GTexcpX`{u!k!shdQwYiaxA{|>E(!!{mlE+eJCov| z$=;iTet9E4wKEN!W>VzE)~mK6fVUhk#ViXk)mU9uafb)McYm&L3Z-9Dl$YGRU&N0^ zb92h_no?=IB}XYMsTe2!;+GZ^f&g5x)4bTcPa?cimzE<=Y-;vZN9N5pAATM%EJEw{ z>`DSYr?u3Zljl=}_JKNa( za7FGY4a`_N7JsJG%`44>N-JIiy||Wz``Y-$t{6G4H+mKAW!?TN5==vR8-dWX^B~Na z4P>Zy0xC3_%klSgjoZ&8O3r z(g7d*gCcosiVTVedcKHxeFg+##u3bT^D6g+YPz$({eQg(Czj?)`k|dWP&+yl{?5cU zUE&&KQVokc@l`^!2(;p$%Vp=1`T6P$6wB-P>?TQ+c(owPyK9DrU^JJn&fFEszW%>$ zxv|+lWyxXbPVizGrnjViUXpo?$o^NctozL$qP1DEh#70?p)csxp+f^iANr8I<-G`p z)xOexk$>f|;|*-~NEt>L6?!r09idB7da@L0qZD?XOXi+)v3w#YXlUk+ADy@>RGL%Dr|6 z$)oC^!dCRJw|(7pH>8X>X)F++D*V=83xBqZ&aj=m^m~tIr*jOaQd))6ezzB017256 zyZgC^o@mQ|%Te8txJHlN+(jb|=BWe|4{t_S!H!BhcFDnw$w0HIW49;%FHaLiWsq@=ayVhH`f|&Sr%bT+9|Tee797=dFAq~sTJ~1{NBd;P^0J`iF8~FKEmB= zI>AX!N>onb73td_@M4EZI^Rw{YB<234^tUbn1&q-3(_K%Ii1ql&4XIZJSH zGlAnP+I!!^iBPCtZ(=Q_fgXkQ2H(nI=}=Uc26L-=)}Ldqj9dd6=WHhb7h4Me7ERRu zqn~<54)lHOH&#w{Ag`NLoqs*djFWdJKw!LmP{$g=mXCzC?v~0oPvt=6_5wL&2$A8| z1Qen3cAMHjoyxY>nG_h`#z1%mM44j@J*X7FfN^b5Ywistf2ZQnQ2Rf@#<{%QNVA}d zeF1@e2?MwHcsX){sb}*|N9@INOQWr%3oow4<<;S4-i9cP$CE(LTYrm)xLEBmq1bIv1FhX2m)d844h{v*c4vR9I2ux-iws`aDHvO5 zk@WW(r29<{zJBYEjYmQ5tQIyVnz1v++pD1LyL`w%S1cnbm&T|EV=FD}%j08V zKs*Bq)2xQY%k~3J>5B`RPeAlwu3_-W_K}DXpZN*#I%2nb3oc`01PJ19j0y(6g&{W& zaEXPNl(<=qOM9E1cQGCH^Go|4QAd^v;OwxJ%?+}+VJuMw-QS@-u5DEpci%iV11xxU zE|1JwpV^H%=N&C|9a43>*69Z25B@WmFt^;lEze0Agqb1xiN-$kE^=Nkm|-}}2(aya zC*`ninJCM0amfI{-WI(54s7$fjQmFr8tT=8yN#(+On>)V*;H?fBm?`q_@&0!4_jV2 zKppFRmlmJ!*~*kU5si`^?7v9@Qv%o#BcF+1~FUTRbgn!w*Suoq*-cMT?{Q2f58 z5c&FZg1^J?uHBR#Mf}Mtn4gIBv6-4wrY`GjN9PJoxUHX%QW}+CsY5?kZT?AuaM>k zBW!VHKQ{FoZ7orBgT{)N1iiJj6;IN59#?g}Wq(Zmzj?RJaHz@gX4%G~2r8BtSRg&X zLiODMt@{+TMy&MBnP}vB93vf1H{h@VPbARQ^Dc&c+R^<82@zE|gH%4)K)V`=fZ3NF zm5NaKdDxD)HgHJc5kM(80<$p@o;(ZIh!UQCSX&l)Z}FQbY#J817R4x7q3PZT{#F)H z7=L;}U1(%b3?~Q$%2K}Tq)ilKzMCOU5?qN`VIYs$fZ)BY)r5$G#j9GL2Ton%0uIsS z@}ZNy59DS~{iS&=vFDrZVZ6HQ5C-R(E_F}-{AP*Kb-69j6@Lyb zL8-&QflAvez@+e5uM{EV1*v-m*)$?L|B|qcjcSb}* z)lR1{u+ieRq`WXw69N5+p-8O}3x5_^kVdXd-scg{UrNwJPL~dbBiTmQ#!B~*Y_*{N z#P`hEmVZWyr%jLHRjvL3D7}`4*Sxk2^^&j%jOn%)Z8F2LALXc}RB++huFfLd; z$z=E2R|B+8VX+Wl-(9n+iL>HlqRiWYUj&2%0I-a6ecL*>hLZ-4uLi@=B7Y~T;m^^K zdXbn%mUX<;To9=!K^9om_#P9XW}2`WPD`d5p3V*t(L-(}+kKS;t}mH;geCy(UB(g&VO+!DS}>iWdg04jL;fg$7UsCT?LD5OwnH|`UCSe!`xgV zs{Do9|78|puqw#;Y9`L!L(KsVZfTV171>mUXAv{3B&GHI9!Z6JGJIWsoz*V9()^_S z?^QlD_*3}KoB)}O1$3f=nx7Cve;zf${rEJ2g1SP&m-oQN&WUwgAb&{!JZ~OUq?y!H zZr0Z%j`g1x(%KvaV7zVfufO~hCet6(QGzTnxVig76YL9$K3lvx?QXwg+VUUifRK2A)Do} zn(6A?wlBd>%9ordV}Ak@i%ysdc#%&zv=VWA3uEBpJnWC`!bDa{ESHry>rx(SV5ky> zp@zBIH+RKm)hZVwI`Fm^sbaey4H&2fLy1q4A01jKD4aa!3f$E946 zzqsSvY?)hQZ&krFxAXs}pGdnPlr7$^R-IkP3>U2OQ%0c_xPQN!V#(rQ&YU(~S@DQU zWO9QWns)Hyx`Psw=GCll!5d)fwZ-(vS+7Sq)KGr%r3IbPsIuq-ucTWe0kFEB%*W(7 zevsR~tWX9NWzs4TE35MF>^;={r4}vj5yK0mJ`cThMJGNKe2Yn9{&6!}fv?`SP=>$LNK8ZHa0G z%;)pTLp~d*=Y~1)S=~lhEmCXMhpe{D^dgkXJAWVZ1Xi^ZwF`g7wv~^Zyt@Ox1Q%eA zmz-2e_CoRpiULyq5wpO&eq5&{przJ_5Xu4-ReZmE`Nh^wz8oOP(3n2>m&wKhajZ?Y zXkXBS@eyrp<1`^)cT`-TTc!a0ZA&&G-uSOA!dogOnCE|Mf5xo{U~d^?STYTl_g!G; zu78+=MjX|YRJ*$Lonn8lse>Jkpd~##+?Zt$s5dUi*VDWbosndk*`2%d@^t)d=?J#> zUW9yoSnx3zWGwBaoAZ}?UK4!c&>Y8UQX+FM_n}74IBA9HJA-PimZ9jZFuYaMDnM~i$Osx*Rl2ZPu_7P_tI2D9uYsE4~ zn6~e3+U~KHQoi3Ap}nQ|D-?x7P$UB01AYQ3B-7o6(0Hbq_cKkG&a(%owX}@HOW+a) zcTX>&Y+zD^@R6nA#=<%5V1Rs{{p=(gsHOBca?#O*c!gaSpI$Ww!2j(u)-XdsM}N2Q zDi`77j%IXE1+@2?201dZQfX$OxR#n3$?*2lVkzAUsCH{Q1Sq3Ub3z4dAAMo_p9`iR z;?E@!5u|oly36cJ+)`fNwebT_vrp;Sb%8{hPAyp7x!vbgO!D_x{gvWG+GM#B~Y zEgc{x%V42o={LOeuAm^%4$4AHA4p`k!$rh=NR3VxfdZfrKT!#IML*nHtbff_0EQ4e zZ+KB)g4+_kAH+__4WeqN3$`*>#@I8obdGM-I8KZX9mv#r-83iJ!SmUIgMpE;DeV1M zS`llPCK_&n^3O$oK%7A?oTg-R*ez9-gEGY)ZIOVs2yPek7IfB*^5}D;Uq2Z?7J!JW zvNGlgI#e+>qXs50eFA!qR)4a`KSNM9pv+C(KiOhTVQ*(qq6_98$w3uw{g3Up5gGcR zM+Bv#*qfY%ZT;4@I(!CZ*zPdN^l6fzTYSY^9KE!+-J<a-`d`H&X(B45^d{z_p?_we18N!zszh?4B0wI~b_G{`WI7HI_yX8>KoxWZt zJvn${zv0!!$6e;boqq_$*ePjq5QLy6tft%lUIuX!pPk0=X%i)IP;sspQ@0#(#iIsh z?@+Ax@4+_M;&BC+k4r`GC4N1{kBk1$h!eCR?XG-yN{WDyz>}S0YKxnKNyXM!qJY;@ z*`vNjG!mT_Z^ zXEmhJZqM|hPyoT?mPlmU+l01w8U+unUrM}zau)yV1OGE2e2eH9j-oL=3ZgEdSSI6l zQ6?$;5+qG6#iDPauBDbZ0sbjRi|-+o9?%E)3DLJ-b|R$Y8w8 zFSeN>KJ`_ApMT`yICLolQ02G*ZY~=}S;UoZDN5JPXO~wIeNL;ON1UG8k$|KFjFmH? zQCaP^UgC%LnssLlF7Ym%jbZ4d@pK`oxz$Z9DqRQ~fPqu}d1oPfjiCh_-rn0!wr%|J zUnk)U>I@6pn?n8#ZaJ>Y#7&b z>Te6NH2!rE__Le|tP{|U00%B*sMJz=$G&~u5P`SSbRvPo?%TiUe$*jj95`6dicf#) zQv~W@Bt3M7qz$KRs=-Zr)T3kXW85F(8te*8=uflyjvs{M?^4O(Lw zga&loJjtl*W(q+L8qBQX7)Y`wApRt1n&S2`NT%jjHH&r6{7qPP%W3u#CE4LUb=SMj|txcs#xM!!|t zZM3H~_e-faDcYh9y6eyfG1u2X=b-vHH_@V@3is!_NTlh9&o|XyL3@wp>z@v^S5^?P zq$3RKkXA+L$@{xup5jPf8_h(x>5K4|;>+$5&)7g(Q`QmYryD2iKM)_w7{26ty}XXu zjDKL>_rUe<903cVbDnSkVDlK81rGDFBbGb7GiN^TVw{{9hbz2NX2mzTer1T`)I!_t zi{Z{Ggns(V$E$-R5;XMg#kW1V(|IZopPq(ri~@Qz2oj*OfA>T|u^ z#y8YeQw6*zM%=@fW1v4$_gXy2&FV$!#yxv=MgS9!4js8h+hmIq2Jbc7r9bw^&7fZ@ z<$=-BiX9YV-~cz+rr2}y9AnqfX8pn}5tI##o8_@sU9k1W{xf{O3k>0H$KsF*M}Gk| zF#qPyoyg|X%_HELCb?L3(%+TQ#D+aCPTgU6k8x{|-V~@7>D5jfG}!57>6MczM}AE0RGzGA!Tnu_nMC)!)=$92>BRacy8^Cdz zLJP5<&jk4K?i=z+F(0-hsdonW0(}|Mj|h%(pMMh?6F>)3_9b}E6th`+Rz`&%W z=AoY;pMP>CF+{dVPJOelZGV#Zaq2Ye#e<$m5y#UtHm&~IPIu2iAl-w0Pm9o?OT=%d zR2#&oid{=S`#%eu&RQJRID1oyT^f8Ew){3E^rF7k!hZi;MOLo`0NXOZNyoMKJ2G zvWdAkOqz8nQQ(yjd`s4I#UYS+#CK}%j2bm1QTq;41sbh>IFE~UduN5#M0pXPx-DhR zX_p^KhE-ZQ|M9dRE({U%)MS3xwqk4$ys@)(^h(&oTc-BdVhaD6+1cW)( zvb(KC&-AmXl9*cUC4a;X&w!M{4T-_fPF7FplKrxTTrO+j;R9qGZbgNuFS9Rt9>%hd zQvRS<#B^~;$~1T7R+6$5upGMUr!N8<+;`>bEKJ5@+%3EmyD(;!GC_NC`L*OuneZy# z4i~vZUUoBH-$O@Jm@_BLsPL?PCJ5)pE@&@Aq0cJOEwu`IK7Yr>Pun)b!1 znHv6=5Y)%M|J4R~eRnzG2XPwqU&(Q*V-!p%&rwv=9JRc3XW?tt$ca^A43iZyY}=kS zoCx-!#{PycllhKKl^!^70vx(Y=L0Ekz|uHJPTwO1aNiw|`W+$uk3gcs67su{)A=oP9&~R@Y|l?->NUxTGSq{ADFlN_UP<6c;$3 z3p8CJhnCA(n&|P_j&)WTHaVF(8*DY!?L)YaKjiY8_$Ur)aJq}vh}pszI?Q(7&E~DTI z2oeVP`lVfffUk#Q7&ISPj1~;i_(9whbP`A^Z;9Javy?W#~dCz zMF5$S)^a4xdqVcaD}fWlUh<6RqI|P-7~4bKOFu6{!)|aR+jY zM;`smLgqd?WX#}_os{jyaW^?mrId=(Kfdr@oTS`$-DCssom97r_H4vWsP(GtGLcEH zD2&j5E@~o&44yie_;NgGrHq-X{ve4@*a@Ay|%x{DlD(|12B4fw@6*OBk&aM4})(f3GheQ~Hfte_Lq z(|>)VGoqs7+#8b?Taf{7dKfUE?pllGEq^<9c^wiYAt;I$!v^D^3w51b$3a(m2s5*0vQSQ-R z24$Dh&RQGpEjk|dF8<789SFiz{DO7H6*&j4#zvJp-s8Unu^^5aTZlju+F`YeU~4{_ z051=&MvLKGZAuO63jQ= z97*Qx2iiHtq$99;h2t^M_}&SI3EMa*5{UgiLYy@w6h1zz=fBCV{O}Pib$_u&JopTQ zkc9EmYj2^CFm@Uqa_o{+>$hL4^m22#Kz}Fn`Sj3wr7-{2!A#7__ufZXAK(NWZvH#8 z*W|MGERm+q8y7Ki?J}q{QOoih@P+C90l&kqt;189Is$Qh&7c=Xto2~Sa#I)hgn!v! zG(^E#Itu3Bt{aSrYUdf>rGNL07^K{C-nTOMjMD_x>Ipdeso7&Ai&0`3$O9~Oq znR2Jw|PpxdfgvSyLuH8*4be5bAMK4@a|4&Gl z2Br^uS%%KCXFn?B-U13#@sbEilYS%1e@kxl zN>}4`oGdf#8kfprS|(UDtp49H{=7DTwME=^p;v3v z*ppFof;;^Ss1{t*-0S2$NZxP15Fo0)bvU2YF<1b`Tx_wzNH*ZVcF zICq{Ay{ES~G6KuPKn$W+D3L{OF;PaBAF$O9W*7t= zNGkb#9LSQ{rBm~_9Ih*g35`*}o4zdJ33O?%`D{7BmdUegsyC!}l?y(v!%FJrKm?e+ z@!49v7iAx7PT<-sb(SW-8vhBHjRTUcK;)6HO6Fax5r1}otZUd3{JHNW(oS8#yfd6k zWH4cB7}BYrJl5L*V+|zI;J`^e#*?2a`47LTzN;Uhh%rN|KJMX6-hY&L;&a3~^na~T zF#%NZ;_p%@QT^iFjBS0!QPjgzlW3v^_LxoaMr_lf-+bn!kwLOeLVNp}_|3@kqEbov zatJ!k5r5RLf~EU?(!oIPh5*Y6WoqBBsk*)v7h6AcZ$D}AI3&sYHm6@+F^R$aJXLeap~ z{FR^%40|JCOD^^zC!i68sA4B>Gfb_QiYz<|9zCAHpL)o7XS4=%MCbD z5d7pdMq2IqAy>B8;xlxcIOY)>?(c#x&_VQ^$jA10@}FA6$UoxBLG+;Z(n(QP;UrdxYF!k ze-*eqKSLaHCYK^k@*njtW<}(OMmz^)lA11 zaP|O7#VRLw-!Q;v(EHp_-O7u;ecw{zBx{Xs(3j{*U=&Y*_m`e~A{tWM4esjU1kI}g zUtAxbio0dYM;@;IJ!m(>QU4p)BjeDiRN`jpK2$n|cZ z6N>*dLbsH4?g>2&*t_#MPJc^-0vu^*%#-0JSxb#JA6*Wit8BpBZ57+OJ$#yjN-cwq z(R;T5Yf5x*=Itf*qsE?hf0GoNBDA`s5UPbavW-vP#nzzwsgqC&^ejwxnwCyr3wBo_s`*B!l`)7VE`Op}2WZmA0u*B) zQy8BLPX_})bM+udH{%8k(CDwRD+{(ee3+ciU;rbI)8St>KJMtDeZvUpvG2=(*2AG$ zBhNYT8|S_wYr9~dFWa>d1qD04OzpzL4VX*8oIx7VINc=Ksg-j@dF+S#asACZS_0_S zyNZp#z(J|BQwkkmf`4<3jcIV?aAl!@jq8}^`PNnq!Qs6`ht|#YNSF32=Gh%Xfag33 z^x_iYL_~m%@kfYX^tFF@l7&OmP{29By92oS2VGe;=4&6RDw6TrR<;ldUw#yc4M23HNEy28rpbNL z&m)nxj|bLa%K%CejX*vEdm%kPK(av=*Bw{V|E7ah$x))ME{LnP#^t@q3NcxD7e=yt zOY8-&sK~NVkbif}k`THWaR6Vh#`2nEMh1xk$s}|DrV>t3VE{Q#w6Drz)hyBJrW~d#dXHp8I*q1H#7OsDr-uq0K@v<{upODT?b5X$ zG&e@?5bZL~Z$1h?vpPnhVBnXXUmpG^cf|2Q1BMA|j<5q;kS_E+9?co;h6KQ8)>cw^ zA%$^+384wgtF3I^$e_2v)CeAP-BnBEyk6CpM91d769>tllmDjniYE}zrPA!YHR2l4 zs~kc3^?xw?TDHEaGa`&OTvEe3aK}0}k+@@3BIF6Oh&J0LF2%T`$_vG|l-X!*9?K1f z;k#j<`m&1^5Qe1(uv39WY2Uv$F-x>T_ z&3#FJ4CNE>W}11#KQ(4>XH3yCKeW}qEYM;fE`I=C6eRNrR6f&L$E=>T_C~!odo_oz z0Yd!-ZYO_Wsro{SCec~gF|ExkMluyz1rrQxWzm#F27prozGnYBDivtIjPnjUjVrej zNK5IY<@UI$|BZ)2NEAmGbY!B4iv7HPJ0Sr9a^c#2C-t+z&&Up&$dZkGFhe(t>;->|d0LC*W95r4z)gCQDgl!z! z{ZTOI3dw;Yp)!&s25ChJ$+{Lx7Yfwh`jxGBHs#`N7-0{7A*R{z|BpeDdi@RzR41lG z_jPeGTqXdad53w7Ykbb)<)I-55F|!T2$UxbV#u7TD!O zNDsBauo`LGl(EFKEC5hhmJUB`6mDTihsC<4`}ko)vDlS$-a+XWAt+*VWG)BMQGa;7 zKc7dx4O9>FxAkVpwx(jm%NM-lcPZux<9ydaS>p_DZQ9sCYUo=8e)Vf)aLdhwx{KE$ z8TG?m1gTRSvPzb_euM}*r@*k3@tBIi;v>2FAwRYz9=viHvWV>0Itwo2H%_+`2j}O) z!qmlCl)QDk;tD5cIQOvyqaq5JJGg%mHlfyi|NW`uy{xhV6(Z9X96h%or`VjNJV<$fw_ZCP zKO$g1pt0d~^{uARQeZF?icvjr;$G0orcKiu2JKZ1Vr=&@e;Y6XWU3^zM}K`K9qE3Z zN6#Otv`*aDR}Mc&5L}tk4<&L8%dEh9jMsoHKxV=$Yt|`e^!L9f{tc zLluyxeRC>FXB(Z(GZUIMgUS>}5bYM^1>`z{y{}JkainlWeIJLqT;qpg3jt7QC1o-6 zM#VdYRpwG_wK&<74Svb%_y|-&#si%{XMYwECnc~ZxM4dhX@@)N4}a6Bj*@)Z1*2U` zdas4ho$o7KH8Yq5bqb+noHT(pVkM zS<>Iw6FH~!{VTxC^nZLeQ7m2*6}j&b5AN<<;kV>LdJ;tDY4Yq6`gny<3?LqLO+m$i zq4QzS{$hi(8PKli|9xQ;G6Li52&S0?(gt!&FHvUJj%{Ci0A(NUHVgV}zuS}`(nceK`T5adZ2Ri{6jh0BjFh0Tmo4y zHS#s+bYAqGJ%0|^-~P%%b?`*Ap*Zk3hyd@H9WYDG%GzO=C)9-YxU2MG225}{fJaE}yvIR%mB`%T z_82AUZVkA^-GVUF6}T2^U5;Cx|0cO}7&V;mE(0--N_J}Y#&&|#O(Zj#yEIEb#rh^(;5gcJ% zz^b-oyxU|$6uNi*FdnNb%fWGZ`&je#?0TE@YjwkWhq62AGW3VOCJj|AUQGZ{bwg8|AjOi*&V~Yw%omLx?TMOw1 zOT?QxF%stpGwp2CXLwvUD*%$v z41c6(l`{0EIa66JNh-XG<3Adf8evVB7C?D--3845~Hd z#_5ibI!aOU&)wqBW$(x0{d}e-7N-W{%4}EVxfGxffs#Ge0mq&@rsQ*+Lryta+JBu3 z-XG@uB&diQh0er;x4b_Kt;pUDO@KWh^z0{yl{q)_0jVEAUF(Duy_!S=blW?Q+4V{SB}hc4jQT$> zFtNZDI6>IJ{o%4v%-&*h#1+Igi+`->1uFwAEKaGO@=WNyalR5%753mB%tG3F&~&Y${=8PIxwAE_bHaiR{*yvV^T(Nf28Syv10cI)FZxWQ@dK?P)G zhG9FqtJOmHrL0O9qwsD1#(x*){j`#^Mo`Yk8sYZ5%HkL-#BXHSRE-Uusu`hj;9CG9 zGtJpD0PNRq*|X-P>Ep7)KOz3&ArX`m_J-1z8}O*jiF>1ZY5fKdWcqyvd!>bv*%Xl@ z;*1+Y!_&dQ7~O^C>BNtzi<~ycK2x;>!;sP{)%I#GmRNA5Q7uM$&VMoyMMfh=H7FY; zx)?0Cl?zBsC7wayax4vlX8}OkFRa&S9oA^3@gr0m@6fHKCuP=d&F`aUG-XuTGiwy? z>!1j0)P3OYRQbA-rX`LxOKHBHnPnBQEBswsXp!cQwcGPiHE}dz9{oD68g=r9=D%8F z3*Z_REhvj!qij?AP=8m}T&$T`uei6#m0y>x!vr@}JO6uHBY5BXA2RCiVtf&tmV|{nSheB(mmesb5%XZ=h_jNno0l0Edycg7@pC z>GMfo|INByq<>uC;$~7B9f;lACf?KEl0+eJuFB_8I7?H@EB#Ejw|xy_g6+8z*#wRk;~`rwf&Y#< zm0mq&m>NVn3%{|CNlbb3SrmE6jwW(gLoL`27>e5y6MqfyFneSqD+6dGI96oW@|DXU zHs^=sJOj(F5p(60)yab4S5XK43iqqZt4`N{a9jjUh&EMWBebO%7*E=PK@&rM{0X5u zaz>R55lYXu02fC2lcN_Bv3oPMzd9rm=ME{as1e|OrQt4n{?qeV(ewmN2c8Q)b8eEgB;7zDT7Zn^M5iWPF;n|TJzc26_qoJlbl)E8OJ@x zo`~05=_7{1?3d!Y0X^9WV9=aayKfF0HCKSCa1tRX*=eL|^Gw^HpkZhePniCcWS@uu z^-F2Eqwq2S&8*UpJ$fhJZ8WUoyu>BOOla19>MMKLFX3N*a?3F23gRCjDL_Mc^}2+m ztACSH<6EdNFo6#Z7?8z|Penh$&@ss!^uyRr$Dl6$0!5Ib&xFoy^@Ksu_a&d{0AOHf zKC_O!_t9f2My)^g@@1#b0mUS3=BlkE)VoQGj%F8IZJ6zel{aaWz}abLAl7^IDP&XF zcL$Y)7b&;Is_|vSUW&Gr0YHB0^Bjp*F_i&j|c z=E#V=JEa@z%-0sO?7BC(Ls+mYgXZJ9zlV0)SVh6^g{dhvBaff`u-4ctKnQmV->Khn zWWc!EZrmP+c;9ZPxqFe&F5Ui9f(Q!YYVg8oQL*?=ZmdpbSqe3e9dWB9zA7lWvNQ4$9dolH-8_mM*;W0-#sfH!7pBhvwSd(uA+kFYY{z`SZ5ee z7U6&H&_<2%Z_Ghdn7b<}sd{W3-)+K4v;qgPLtk}$-+G$YM@ir@^YDE4cw_@1viOd_ zmqgMy2JE0PeBuxj?>Er?YOsfR!kiw&kCoOvTDe5~q%Fcqo)94M*`-u%E$QA|(O_<#j?pT`BYd}(PA4<+RcU2JP zgvhkY)P42Sa=|zTO<_xA_X_LJJg!`g;%z3p2?Nss(^>sElle9w)PDv)LihJTvcIxz zXAbAfwKelR`Q=mPZ4oga&J z@xjrXYXwq#Gu=_rORa=x%Z3->Qq8j;RO)tI-<+JM;L+e#AE>@wuX2RBx!&yiM;P;P7 z`NYnpywVM0=H!zDN}inZG_D07WqX>m_98_#euLHQPLYCs#(!nI@l(&vhV$DSL#FCC z>BFOOu z*%DI&)VSqymVX^QkDlIarP~|PjE~%a|07$uwFVbRNkW^9nM?IA1U3XX6GJguuHV3BP9hODx z^Y>r_icfIaF!X;efKy0|h*6O%PH_WL(&f~104z&XH-8oF%FeYtj79&w6!*gUx_ctW z{f=l&Njh>J!8T)5yrfK7$!Q0Vk?nuyzBUUiV3%Wg{acFn$S7)AA1{oDQ`yHWXf%+FppR#D{XcEz z*|795+NeEhWCZ3;O4uWpYIv=2$&4mrrxDhGZC;V^q;}$tJ1BCt)+bo5<8qP>11v91 z6oNL`eg(-(RqabBASDBRFhj|}0KJ3wr+?A=-;hsJ{%p|iLBvGqtltzK6}|M0z9Jr< zSK==kQA*F&tld3M`@uH@#y--WdZwJX%LdR~E;KQjM#U#N7-Hd2(M$!~f#sbzwTiBY z5G8BDKCqT>7wFG;F3u*>z*@s)_SFgtL~#?pluglLK5KEqH8?)u*xWoTh5Cy>oqwDf zq-2i;96q^fSn@xtBIaPQ!^8wpr_scx$A>d2k2qOU9xLOga9Y~Vt>3;K4&?Qu!ldNs zP_4{?e}xJPthj(X?fKz=?-6(#1Ctas*el`iGGoQdS7HZX;p6`u)0aW4>i9Tzs+FC3YhjlYbB2Apfn;(yvfxI?%j4q-445EhvX0h$nH??qVHyybZjoJ$Mzkp6Aj z)*1fiBt(cBl(AIMmgMl7HxhB{fkZ{tzVSVHy{>|7AJgI%A{P;H{AVx6@t1BfAc0p2 zy|;W<_`c<_rjF2-Fmv;?;38B5@d+5DMxx|aW<7p`g#IRSe(Zunzq%T($9MtVf0>>+?0oe6mJYg zYKrlR1D%AGZs+o&aCZaxIfBWdv2s1aU|*tXgTj0aGqugNlPyWNg1gZQQkUZ(W5TB0 zh`j6T&lD-bNRN4*dSRntGjyyR%?&dRnn0Lh1%9dtG&IcQxr3G)Jve?t?`h(&SV1SJ-#G`qI8~(ECoV|0%H3(d8cMP(t){D1;*PTmhxPB+Y|{jQO&N%Az(z`>8JJ!VLqp=ZFby~=;` zmv&;;lc7LrQ4Zmb?=ZOZ1EWa`Cedn)x5Uoq%y~q`S=5LG^kCRW1~8OI=x^mC=mF z2vxLCPu6Z>hhBGK=lFj|ZV=M>>QD*Kl?$OtLp+VZL2<}WpEdW|a-sp|mtm<>t7RNEj80x0-zM1gKmY>AmZQo63W$&j7n-XsFQzWPH} z3TEcK&4vL75sH5Y99vmD$`}S=ha$YiPxNFU7rStGQ}-k)&3q8CH&jHU=Mvz8QV~5b zZ5xP7-azZjeuzT+Bp6^dn}!7ABQ4=7YBc$n;Tt`I65BOCWSo_joC;B z5#k4~VU2krN=>CC3m9^R2%DuXFNfFw+INoyHfGm_9WCQu@}}0S9#P9hfdT}jIs|SU zdw-h}92y{@9F|rq?w#NJ&E`;`mdx$gl{~b9w38UDnFpCIgxA)_dR+;t$BKr%_7H=a zg^^H!Uk87)UycPi0IBaJZb|V~mG4aK$7-DY02$%X6={$=R|Zuz6nM*_bcV4Q&B}}> zJMmV>*eF&AvOQF5N``m6XmO*0N44n1qijrFpJi-WY{`U8=8HEm`fPZ)bDPS7n236( zo-z6g=TUG(wI0EW&Mk2Q1uhPm11#~hz-D4l%rt-da`#)K2;7X+nYnF%IbX^6v%Oor z4_3M$KE=^h^kM_7xeKct0@kay#>li_TIpX3YB3wT8%{Hvso0thH`i&z z*I$34Ma_T_krAHn&fq8BxEnP87MdG)M;G4qW%Hz$v1Nj$+H-uB z`)!GiIz8Hbpouixe^jNzOZ?L(cP2SlW-gv#05|_}#iHJ!7FtZF(5v`9^f+Cv6Y|rh zv47g66kp20Y!*L|s+<2ci()b0+1GM2WIV34B9~jG)cprUQIZmFF=*>)3TkLm{8fM4 zy&yXozkg?W55#RphdC4lFT|ggff2$tS(@~(uGE!GE}wp5F)-@9_jcg>1ZI#WH+n02FILB)T{V@0LlJ@+$Z$X*OOi&|^N_qf~1)XG#3@;{Q@ z;yI(qPE{n+D-lnRpSOWsHprqIssjBd-m}xbxzM-<2=-9132HV`K-*{$n%eAIYw{xR z-{>;UTNs14wKlRE>X^BXKCj7N@TxKJ33n)}as$RZg|W};Z)%hPpX|%cQ`LWq7C2g) zHEyT`C%(uZXzmykk-29*_EJlab zJ1cR8#Z0z{vB}F&VYn$m3Du`AWn?g*IPUz>}~wRVZ0 zrtg#z#GIahlwGF~$JM||s%OmoXO?4uFtp5DZN5t&t$}{FGYt!jsQiBm+$>%0HXe`A zq>>X$V>p)VhHXAonn`SmPoeLhQcF#jp^0H)=x^ckxCcH-$Z*i6cenPe^*Ax@!VjhI z26%^8UZgDxEDSbhj+Ot?@{zRl0FJr2&UH8CEXTS1+jq+}W(C&zCluD?_TQO=;D9|p zrDxuvihqI~8}-s_#ZG_G``Cz}J)oxRBXKbn?}FN~BR6of>5=m_d-N8(=0DhWMCTJN zXHLTS)(?}41I`A}qCuEJtd3RND`}0$=$dssv{Wy+UuIi#HaEp_^3+&3k znux;-UAnf6fc|Dm%K{D8`ZTZWlOyS{}Ei;X>9fFK%%Fxg7ySgCKnyt z%*2O#)u$jSM;AEG2I5urj7{d&l)N0vXC-?eezzj;rV zGXO5YbB>o58l8bDQ^-p93trf4U8@r?{Cgg=lM<0$g93a9E;hU=WOff1tA-TcXA`fp z$E&wwNvvTuR=ehOr}sSxotKMra~i^i>`cOkdjjT>$!veO8jfOZqZdNmM$Jf%W3rdX zJ^GyXI!b4k+&b7TE0)XVmx7C%Dwa_YQo4rL5z0+;S4sX&3u<09c z%z0CH|-hh>}bC^>{R^TRLqa>uk?CLVK6*t>(U_{5LSso)H0m05Z3w9*@y6; zL;8PQc?_*HFLIby!gf8%GR4UC#AisXgE!TYN4DrmkoW2t1Sjf1TH=`^M_kx?IDZ@3 z=Q+>27$6?N3VK%kylUl=o=Z)ko|C!sNRF&we$HwuSEs6*R+|YTHtHN?AQs_3hY~&` zyKq={K4-THmV;!EZSO^HILRy?02wi9z9D~}=1xOVN=a{43MO{t)Gb3jazb5q0yooc zzFNw`o?&q*Ry@I@B~DA@`;!i`7LXkjhMv9G{XjlGoW#LW(3ZOBq>YutVY+@~DKlvpD&XmW0l4%h-Iv}QdFTv1NPEwNqlUq@ z#lsDHeT&f%qz-%8EBGyX@~-jyS)+fhLN4Xo`4F<%pdF6KFofU^%qkM^Gkiy3+G`wb8Su+XA%K7y=z=JvB21>kS&AAZheJWFUMchyMzD_%6#I6DWE+1)!kNB3 z3}AVrfDn8LDI{<$0!;orAPLL#&h-z7lXT@Ts*?ynVQ{ltv19&Y&~&(d_3fl<96~tk z3u|sN1kqqAQsu68Ml-IOC#j~`hlm(XOdvrHP7KW)BA?&v2J*kbaGu0lepLGwxOyDx z!|WnK-5iY<6Ld0#Y2wLDjn{wMqSraEO?pIjEX|ghJgo#Y5MK9qu`=D2L;w?g5-|0p zSV9spco1Or_}mBc5F79NNXt!MXn>Oc%YoX@G0!6!xQA_58k+p+Mv}JD))m?glbOi^UBI3?8EZ