From bee92b0ce859cb75731281c810d9bd41dd053329 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 20 Apr 2023 09:38:51 +0800 Subject: [PATCH] 1 --- .../commons/tools/enums/BizTypeEnum.java | 1 + .../LingShanSpecialCrowdController.java | 11 +- ...ngShanSpecialCrowdExcelImportListener.java | 16 ++- ...anSpecialCrowdAzbjExcelImportListener.java | 5 + ...nSpecialCrowdJieduExcelImportListener.java | 5 + ...cialCrowdJingZhangExcelImportListener.java | 5 + ...anSpecialCrowdSqjzExcelImportListener.java | 5 + ...pecialCrowdXinFangExcelImportListener.java | 5 + .../service/LingShanSpecialCrowdService.java | 2 +- .../impl/LingShanSpecialCrowdServiceImpl.java | 106 +++++++++++++++++- .../lingshan_special_crowd_azbj_export.xlsx | Bin 0 -> 9634 bytes .../lingshan_special_crowd_jdry_export.xlsx | Bin 0 -> 9620 bytes .../lingshan_special_crowd_jzhz_export.xlsx | Bin 0 -> 10016 bytes .../lingshan_special_crowd_sqjz_export.xlsx | Bin 0 -> 9933 bytes .../lingshan_special_crowd_xfry_export.xlsx | Bin 0 -> 9439 bytes 15 files changed, 147 insertions(+), 14 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_azbj_export.xlsx create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jdry_export.xlsx create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jzhz_export.xlsx create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_sqjz_export.xlsx create mode 100644 epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_xfry_export.xlsx diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BizTypeEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BizTypeEnum.java index e6318f61b6..517330e427 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BizTypeEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/BizTypeEnum.java @@ -19,6 +19,7 @@ public enum BizTypeEnum { GRID_PROJECT("grid_project", "网格项目"), PROJECT("project", "项目"), ARTICLE("article", "文章(党建声音)"), + SPECIAL_CROWD("special_crowd", "社会维稳(特殊人群)"), ; public static BizTypeEnum getEnum(String code) { diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java index bfd157573f..1d99dbce93 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/LingShanSpecialCrowdController.java @@ -53,12 +53,15 @@ public class LingShanSpecialCrowdController { @PostMapping("import") public Result importSpecialCowd(MultipartFile file, @RequestParam("crowdCategory") String crowdCategory) { + String originalFilename = file.getOriginalFilename(); + String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); + // 1.存文件 - Path fileSavePath = saveSpecialCrowdTempFile(file); + Path fileSavePath = saveSpecialCrowdTempFile(file, suffix); // 2.执行业务导入 try { - lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString()); + lingShanSpecialCrowdService.importSpecialCrowd(crowdCategory, fileSavePath.toString(), originalFilename); } catch (Exception e) { throw e; // ... @@ -77,12 +80,12 @@ public class LingShanSpecialCrowdController { * @author: WangXianZhang * @date: 2023/4/18 9:46 AM */ - public Path saveSpecialCrowdTempFile(@RequestParam("file") MultipartFile file) { + public Path saveSpecialCrowdTempFile(@RequestParam("file") MultipartFile file, String suffix) { Path fileSavePath; FileOutputStream os = null; try { Path fileSaveDir = FileUtils.getAndCreateDirUnderEpmetFilesDir("special_crowd_import"); - String fileName = DateUtils.format(new Date(), "yyyyMMdd_HHmmss_" + System.nanoTime()); + String fileName = DateUtils.format(new Date(), "yyyyMMdd_HHmmss_" + System.nanoTime()) + suffix; fileSavePath = fileSaveDir.resolve(fileName); IOUtils.copy(file.getInputStream(), (os = new FileOutputStream(fileSavePath.toString()))); return fileSavePath; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java index f82271ff08..72bea84f54 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/AbstractLingShanSpecialCrowdExcelImportListener.java @@ -58,6 +58,8 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener getErrorDatas() { + public List getErrorDatas() { return errorDatas; } @@ -370,6 +371,15 @@ public abstract class AbstractLingShanSpecialCrowdExcelImportListener setHeaderZhList(); + /** + * @description: 设置模板名称 + * @param : + * @return + * @author: WangXianZhang + * @date: 2023/4/20 9:07 AM + */ + abstract String setTemplateFileName(); + /** * @description: 获取entity的class,用于数据拷贝 * @param : diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java index 6be9cba8b4..117d5c833b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdAzbjExcelImportListener.java @@ -46,4 +46,9 @@ public class LingShanSpecialCrowdAzbjExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.AZBJ; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_azbj_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java index 98038505a6..6ab49e11a7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJieduExcelImportListener.java @@ -42,4 +42,9 @@ public class LingShanSpecialCrowdJieduExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.JDRY; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_jdry_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java index 6ea1034872..236811340a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdJingZhangExcelImportListener.java @@ -43,4 +43,9 @@ public class LingShanSpecialCrowdJingZhangExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.JZHZ; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_jzhz_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java index d347b131d4..2d25a7652b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdSqjzExcelImportListener.java @@ -42,4 +42,9 @@ public class LingShanSpecialCrowdSqjzExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.SQJZ; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_sqjz_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java index 062c7bff64..ac1557245e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/LingShanSpecialCrowdXinFangExcelImportListener.java @@ -43,4 +43,9 @@ public class LingShanSpecialCrowdXinFangExcelImportListener LingShanSpecialCrowdTypeEnums getSpecialCrowdType() { return LingShanSpecialCrowdTypeEnums.XFRY; } + + @Override + String setTemplateFileName() { + return "lingshan/lingshan_special_crowd_xfry_export.xlsx"; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java index bf26d89d83..5ad0abd666 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/LingShanSpecialCrowdService.java @@ -20,7 +20,7 @@ public interface LingShanSpecialCrowdService { * @author: WangXianZhang * @date: 2023/4/18 5:42 PM */ - void importSpecialCrowd(String crowdCategory, String fileSavePath); + void importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename); /** * @description: 数据校验 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java index 767afa43cc..d9ba64e551 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/LingShanSpecialCrowdServiceImpl.java @@ -1,27 +1,49 @@ package com.epmet.service.impl; import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.converters.ReadConverterContext; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.read.metadata.ReadSheet; +import com.alibaba.excel.write.builder.ExcelWriterBuilder; +import com.epmet.commons.tools.constant.ServiceConstant; +import com.epmet.commons.tools.enums.BizTypeEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.ValidateException; +import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.ExcelUtils; +import com.epmet.commons.tools.utils.FileUtils; +import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.*; +import com.epmet.dto.result.ImportTaskCommonResultDTO; +import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.*; import com.epmet.enums.LingShanSpecialCrowdTypeEnums; import com.epmet.excel.data.*; import com.epmet.excel.handler.*; import com.epmet.exceptions.ReadExcelHeaderOnlyException; +import com.epmet.feign.OssFeignClient; import com.epmet.service.LingShanSpecialCrowdService; +import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.http.entity.ContentType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Date; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; @@ -31,7 +53,7 @@ import java.util.concurrent.ExecutorService; */ @Slf4j @Service -public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdService { +public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdService, ResultDataResolver { @Autowired private LingshanSpecialCrowdPersonDao specialCrowdPersonDao; @@ -60,8 +82,11 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ @Autowired private ExecutorService executorService; + @Autowired + private OssFeignClient ossFeignClient; + @Override - public void importSpecialCrowd(String crowdCategory, String fileSavePath) { + public void importSpecialCrowd(String crowdCategory, String fileSavePath, String originFilename) { Class excelDataClass; AbstractLingShanSpecialCrowdExcelImportListener listener; LingShanSpecialCrowdTypeEnums specialCrowdTypeEnum; @@ -107,14 +132,83 @@ public class LingShanSpecialCrowdServiceImpl implements LingShanSpecialCrowdServ // 正式开始导入。异步导入 listener.setValidateHeaderOnly(false); + CompletableFuture.runAsync(() -> { - EasyExcel.read(fileSavePath, excelDataClass, listener) - .headRowNumber(specialCrowdTypeEnum.getHeaderRowNumber()) - .sheet(0) - .doRead(); + // 创建导入任务 + ImportTaskCommonResultDTO importTaskRst = getResultDataOrThrowsException(ImportTaskUtils.createImportTask(originFilename, + BizTypeEnum.SPECIAL_CROWD.getType()), + ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + null, "【灵山街道-导入特殊人群】创建导入任务失败"); + + try { + EasyExcel.read(fileSavePath, excelDataClass, listener) + .headRowNumber(specialCrowdTypeEnum.getHeaderRowNumber()) + .sheet(0) + .doRead(); + + List errorDatas = listener.getErrorDatas(); + if (CollectionUtils.isNotEmpty(errorDatas)) { + // 有错误数据需要提示 + String resultDescFilePath = uploadResultDescFilePath(errorDatas, listener.getTemplateFileName()); + ImportTaskUtils.finishImportTask(importTaskRst.getTaskId(), + ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, resultDescFilePath, "失败,请导出文件查看详细信息"); + } else { + // 全部成功 + ImportTaskUtils.finishImportTask(importTaskRst.getTaskId(), + ImportTaskConstants.PROCESS_STATUS_FINISHED_SUCCESS, null, "成功"); + } + } catch (Exception e) { + log.error("【灵山街道-导入特殊人群】失败,错误信息:" + ExceptionUtils.getErrorStackTrace(e)); + ImportTaskUtils.finishImportTask(importTaskRst.getTaskId(), + ImportTaskConstants.PROCESS_STATUS_FINISHED_FAIL, null, "未知错误"); + } }, executorService); } + /** + * @description: 上传错误描述文件 + * @param errorDatas: + * @return + * @author: WangXianZhang + * @date: 2023/4/19 10:19 PM + */ + private String uploadResultDescFilePath(List errorDatas, String templateFileName) { + FileItem fileItem = null; + try { + String fileName = + DateUtils.format(new Date(), "yyyyMMdd_HHmmss_") + System.nanoTime() + "社会维稳导入失败数据.xlsx"; + + // 创建临时文件 + fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, FileUtils.getAndCreateDirUnderEpmetFilesDir("temp").toFile()) + .createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName); + + // 写入临时文件 + try (OutputStream os = fileItem.getOutputStream()) { + ExcelWriter excelWriter = EasyExcel.write(os).withTemplate(templateFileName).build(); + excelWriter.finish(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + // 上传文件 + UploadImgResultDTO uploadRst = getResultDataOrThrowsException(ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem)), ServiceConstant.EPMET_COMMON_SERVICE, + EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), + null, "【灵山街道-导入特殊人群】上传错误描述文件失败。"); + + return uploadRst.getUrl(); + + } catch (IOException e) { + throw new RuntimeException("【灵山街道-导入特殊人群】生成错误描述文件-创建临时目录失败"); + } finally { + try { + fileItem.delete(); + } catch (Exception e) { + log.error("【灵山街道-导入特殊人群】删除fileItem临时文件失败"); + } + } + } + @Override public String validate(LingShanSpecialCrowdDetailBaseExcelData row) { String idCard = row.getIdCard(); diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_azbj_export.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_azbj_export.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5fc410a64e3c503c7eebeac27ac1c05f94b5096f GIT binary patch literal 9634 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 literal 0 HcmV?d00001 diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jzhz_export.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_jzhz_export.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d055b68eb1f1e046c015a081b951702056b68282 GIT binary patch literal 10016 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 literal 0 HcmV?d00001 diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_xfry_export.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/lingshan/lingshan_special_crowd_xfry_export.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9eb90e825b93aec9dc83bb01d9f6d6a6cadc3f21 GIT binary patch literal 9439 zcmaKSWmsIx()D122Y1(?gFC??z~D}>paFtA1PBhn-JReNB0wN8xVvj`cXtRMB=??k zlJ|VKf6Sg|rdC(?>h9Y0)M_O#3@j4hu>~tEi#$I6+YleVnAjRCIoR4cvM4>6VL$wU z@YAf0XS#wF3IO1Q1_03iX=Z3=2XeEv%7|%}g<->%yzsk6|7^>_OsT?7?-wEf|H7Gs z!*-@g4l{OR=$aYiL~#jkb84%0i^735R9xfWYOuf7aDtF!o0?j==wD4+7-uhqh;ItE z*5HF^WkyEQA=1gyzkW?#sDt1HI=^sRDu;<8gnoxZyXq9NX%-Gw6(kj8Un%dzutW6D z{*=+IRF;wV({=%rzg4PfFbX$9L4d<*1G0r>de!B^$Vf>fi!SIZ2pZXYSGPQ&%`Lx% z0eAIeX=~+2;Fl!gE~HwhhQWGnKUr@pt34DHOo zoi5*99qpZgKub*5Tjfcun@T${Y+EqOyTCfXHjD_pmi!LF7I$^&sJ8&cpr&WyE%Ll! zT!4ZM@rEDEHCviIH&-@CaKE#w@;$gk`hi`O2X-<3$*!@jgXtr^5wXgOt>oB&3-Y&U zs0YkW88)%i;IZ9q8rlhSPh-2U7&_*F$+HD;UAfCJJX!6=q5S~r*0NGUGii9j3sbsC z1SAoA=JzvZn^jstj@VkA@h|f=qH}PWUaU@P(pS(=0y85%H1i^IA5xprS8!B1ekj1# zY48u7?h=T{UL3Rwk=>a;M+X-}87%;ZGFDE)pi^QAKJcX&p4<55oKxKlRIANY+GnfliyIcjqs zc(Vm@(j8#>EaH-~PxTAkIJYM>*>^O&M~M)Z8~R<968Y&?Jx~kek8J&)pQA?VqWca? zM4=A!=o}wvF)0gC#8Fd^vS#9$NZH!ZQ;^Nw;9b;(cZxd89+55UVGM3MNy)HNWFzo0w4CK?+*Yj%lh`&kaX3K|f`!Xs?(m0*e0hGZcO6sq zGgRZw&sGwQzATQA``L#~l|^9M-M085+q!eUm8=fU*gLg(Ls)K;=-HyE@KkQ0V6hyj zrv%9kAR`anG_3F$E5vAH>v&JTmb!i>VApZN4i#w?Q0}d{&$MHn*m{}UA0N|nal%?5 zvxyg$O&vdR#UE-R*IQp!dN_T8c?!wQF6|Hwye%ENTk+qU9_Yh%6s{Byx;t%!^7RGl z?n=cpUiQOf*g9XCoI^b_`|nW&=7Cu^tDo`Y-wmGpGH|tZc5oKc>q7ioYzfRqKY%;pur#CcL3=DVYZ}pvQ4k@6BT6Pj> z&AQiu5ExS9$WXPo$-cTwk-fF~v7Kbm+@AMcxdh!!dJW|uzK6DfrIkcJfJd>Y5!ZUIG};+Bmy~avRV_UrkE8{L1sNpZ3XCY_PkSs%Zv7Pl(^;8fd^|ZIAw% z{%s67-0F+=Q3QJnuByiDx9A3#!G7QdW&JL!g&>#YwJ9@@h>u8kwQxFge8^TBxxb6%z5VM*eG5lxV376+L)4uo|Z0)`j;mb*f3!pJ2Ba5 z1m0wF`yTkK9m`-j3@3Eh~?IG7S&T~8W zwHfnc2mYwTk5OuWFuHy4Pr zsu>qf3Nu#WXc1XjuTda)02jI$v?|BUd&3bqW)sv|6MHuhMnq`q%Aey4zu~(P+D?Bb zauM(A5Y#V5@oEw0hcf0)UVyS#CX?cX@z7Zi9)6%1V~;vCiBW{_A}X*Uu-yr!;tk;_ zBikV}8>E4U7iK#tTNHKs95T9t0!Hxcb@m&s_4HwkL-S|_{% zeBShqp!y?mpGs}KJOgbxfan`}2Lfz)rsCs-q)&<$;rzhB>;i5d0>m{$O+!{hXkO%; zi3a#8TtnD1D$#FQt_43xL)n;^L1@g-lScOD!_Lf!!MM*RmwR4_q>S00>V=Kxv@;DSFuWaqJfmD)%=7>f`vrn!{;bTyl4e|7dDo$jj-iWXfDpD+ zn)Q@!)g4K)_yDLGIOYhnj%df^r!Wl1OA3DY7Kb?ZPQQOUqBm<}HsWDLc7*c~ip%flk zwYd3Fd#)+dtZu^I(pG*}FXv`Nq%1zjr-SbrHxeR+ z*GLrWx!_vYaP!V!0x=i%7PR~WWol}{%}e#W4NaE{wIKyVi8Y{3t4;PjQe6vqy3H1! zJ16LA`6SWVy8e~{Op$Kqna-VAqxSVE02}t>NP5`Tmro1x2V6*HP(8x@o)<45d#Qmu zx3(4b^RJ8EB3Fpk-d_`Xvu=uEGuH#xE;|St^lh!3cX0Ln9XuUT7fSZewwWKS*l4z# zQ1z@izt)9~Cq^UY!7I4cDU(%JBW-}O)x@>+EJG2&YXvXBLogli040%7YMEzzgNLwi zN{xCF-N{%7(Gs83Mzcx6!#A#!$R~ov!ZQ(gyG=S9GbyGpz!en+x0l!L90zA%g@sX> zSwh!qr$;NJ&xJP{m|9`tr3#ix4;n9TW)&fgnO+y$-I_M_tVfOar_;8L-dn&Hp%?5P zS7)QbnZjOI{Tpw89JWC%te9K1Jg07Mse7kbFTmtmwbeA$ca+?i(oQGU_F07O(xqm< zcM5twooc&f&sf0if>$~O+0FXAX_-I#N)EHLk7v0Jnv_lIg1{BH7?j!@a%i3?wcmZ! z*ET1*ImP9Qm#<-Y^97|cu143z*lM_5UYS8TK$Yp)S-3o#OWD2RaT0i=fIFJ~FqN<>b!Ur9FXZbVf}t(r6_-j@7s z_mc&Wl+1d|6B)v^si<~rS#0;ODNfB%$q?}|*De@Yo`M_FW{q!yxPEon>9qN#zC}+t z_Pf@&`pT|J2DV@g%h}0y6ZM}`KU1wgA(-!V>0DT8t95^((dL1*FHAT5j1z2YJcYBv zybTd+)HJ_;TQQV&empz5mXGZ(TiW{4dwF8xz+~m2}=(MwV7YyECh4k3@);U@TJUsg4Ad+ZB#< zrtM`I9k?TKmjYu0YBD#jR8)+5os>qVQ?r+4R7AC$B2~v48FndyW)i6FKG`KYvPZqr z4GTXaSI3r1nei4baImW7N-fQRxQuBUW#n0SE0(R?tJ^1jn6E1>8GI-(4nqqQpL0+j zYJA52Y=pKk4@^=-6K33qB4>JN60jhy42Yd5sBdtPMD?gM0`n=n0p2RZu5T zO2*}TKg2jrO*s#8tHf|fI8Jjgt1Ih`mK#l=gmHhw>Kb9D$J%+vFOrVjf7d`_q{?x=#lu;;yU$UTEqxVi{nks#? zc`=Y*c&c238ATpYbcyyoYcJ^M344t1BRoZfZHIJGMdJ)hivpZT`T=eXH&|=(Ly?vl9^kP=I8l zHg2SJ3_X`Ht}B?>>7SYUNbK&_pAvqv(v$?;Z$td{S%F1nHElA;PC1FDrF`RwXu|9W z+FK!ef6d05^AKX)gb(!&YqDNd`i;yGhRgF;jMEEPAjZ{&vz_GbC>yW?^GKAs6qq3{ z+FM;Vq>iv8Ev_+jm4%yoROKisJ!M*oL54<*iVdfVRS>+UgPd2_!0nL1+f@RsETuUy zd21l;ib8Z)Nd5{E#^^R72 zAA&&>A>mFk^8+rL`>h5fKhP!FmTfAz9Yb4XGX|?U+}R4#tye8X+lt6ySRAj81fjXw zQv4Ab9PHWBOwuNS(Um97tAgtp13t*yirBU2G^(iBBD)aEAPiS#|WDf&Z?eKA;=AGwZ6k9UErVc@96UN zCg!V`+SjqWh0T=hWps6^2t5LP^mf*Qgt~_YI@q$w?(gZ z9$w?+G_!==DmRDPpUXzIRmu#+ujCS#XuwDeL47Z^VpE)0L6Y90&)_-M7Ta!l)ndYbjI7YbG4wSvcd-Dmh%W79aPf zPQOzx7IcAYEskf98gM14VmY{jCrsqL2*v#S4o^Zu+~Dfm=AyzBZl$$W`{1w(^=f@Y z7Q5iE-K|&W=qi&>GDPBFJ!@wN3xRZ!2vlApxiYg%B>lB#iTbu%s8#Rkt~g#rbmdL+ zeet0*NG8C5-T!eEeYQgBWyU`6wV35mes;GN zqG3mpaCnFD1^bB(aA=0%Meg(9!)$gz>b2DLvI>Igs+DkgcnvFgmXAPlh%2CwR{Q-N zS^k&60#2jS7S7Z)MuInQ&YKl!SFA^OR?2}|$ezwHQO}O9BBcE; za7JQw=d{(RL#S?)C(h{)<= z52dKmCo8fzg1X9TV)If(tMLJ=1Lm|>`sTHFAWJt&9K&WvZluX=7b=@l565kd$)G5D z@kWg$DpuNYrP!JjCl7q1DV;j?YVvgp4P5%_#K$Q_XjQABvZ~bfpcDno>2iMWm8H+} z7zD6trSKy$X2@i{F>NIS;b~hFCE@Br%*V`@UV+YMDr)6DLfvAJSsF)17+B7oqV<ypP0#f&|NCc(8qVqaVR0d6`pD+Z(OzSislx2%14I%gIxnG}d-5%A28-IP8h-ym{!`kvAmRj`7 z4;Tx{RPU3sTe1r?G7^O>LH?`T(JR}=_-rkVb_!3FIN*GK>}qa-y)U7BO*TrTx^H)# z2%ax)JZUHtSaF^$;yf*&V=zlNeO@?}I(La85djOD*F~`Ms;)5lX1x0AFphTF4Xhf+yuwS zRmP)ZEs^ZXq^i}3c#79#6GzpWUzVqTw`!WBAR=}7He?Eo*5+{-;;%^!ccjP#|328` zu*u(=^_8LcQW)90PJQ1yRA}y#72!rfZwZ={A=SWGIMNXH4Q2RVZRnJzu5a&_x3C!E zf=T4AV5y6{N#Ub{vp{W4r<(*gy;Nx2ed&@+T=*=DZ3;pCBGBAl-jWXN|KN#55oTz~ zO{hOgmDo8gHTDpWVo2_NC*f)DdR~~f+ODJiFQ zZk9!o>G|V1y$cK)v0Dv!?8#+VTa7~7nt!9Y~wGk2%k<2cui``Wk1hgZ87&*Pz@=nP{q6_t@lpMPv&8R8l@A*8xQ zB*wi?jqbngHYgygA2f#DH$iMATapPkD^5swqRh(v(aOob`o~TMK-H4ZAal_^s_9tG z$xl#al&e9IE5HgiAz^~Y9ENv1@B=skFb*SUHq99@?S;g;*$vIngaqacQ=`=!N<|cB zU_vp}P)W`XgbD&ql*0-sRwaBx+1oUp+7#o?u|mRl=F9o1oB+ZYE|{)n=#tN%$jD&c z``I@g@6zY}S#b$k1~M3#DAt!dvrP0g8UEom;yjQ1n>T=tAz}h7ff~ui-JYYPsH0LG z^t{6lJY@nlKH5%emzU0`B`Eaw>)wao&<@g?-dZec>s=-35S0(CYZ&NRO!CYyelz3N z;E#ytPY9Zyo%+7(x@`%$VC=#_HMX8S$GICrtBxr5-MHST(;{gi;@vklLG2qAo}MUn z&Ly*kp`G+3+CLUE7GJaNnEb}>C^pu)4_(!45re^%^&|QF^*!MC1k-3vM||j^lxzS5 z03KD7hhl@HxuJupiK>%>h0Uv4P0n(e7PL0S?R%REVdZ+Z6oiL~OTLvPouQErO8hRhxpF=K! z=gua0R=Q@$bpyh$oAgDSC@cFID9W!FkMfrHxLzW@vw(XZj!7o?6uJza$JR|u8a%18 z#{ z(4mFDV3)5R!1rlO)5^6+k*!hhOjAte5Rmn-hso&s@^~y-D1US$$_Zs2`(*Kt0k^RX zi`U7>$3(OH8R7j>G_~wc=vN2=zDTjxtcj*%;PNDSXzz7erQeTglDLlB?0n=E?cc2*M0k&>iT@|z-d%8DjV#{e8fD$_|vgfUlHBV#k zq;tU_|1PU`d$8BBoR?QQ?*sp(Wx;swp3J?SM`bxsGt9x_q<{66eflQn1AhSs;+CcF zNsJbJFUM3epgA_a?X36~ptiI3-B_RV=^jbkx6&?c$6c{z(dsZ=6Drl5ezxH+{mfW~ z;qt2kfyF}wX$VQO`Hd*sWD$;nibrM zHW0;n<^5+pII@F59@i!#Obw(xCXK@gjES?eaZ5YH`>pSp7`_oWr}S5`CsU{966t(V ziTvfrQq+DqE5q>E?B^lf=9#ainR&#tdD-HZgo!^`tNTZN;KQ%nlE737lQ=f6@C@)6 zXNahaqoS>UixcET#>L8P39QFXY-(v1CXO%I_lj9-+A)Zm6?y4Yr^?#~ z_6o34()hLnr#@MTbX>1xvI4s25Kbw8(6bBBdk~?q74AgZi$|%D%1X*ibzQaD>Aw!J zsrHR9B-CX}ymCn8y%)RtALYG=(*!VZFtz$q5_rSwQh)#O-@=1(gZ!5b=+Uw~c2KsB z6}{uY?*M(hLEaSyW7>&@a#!BO%O_dxeux$;R(r1jBC553ix(qT7#u=Z4rQ+4LMsb!3q$$qTm6GlaaU1KRTj)?eA$mh22HK1<0H zALL+MRg1}Rwu;6H_xH@3YD7Pi1OoX69h`-F4_sw~%gW7|Q6+T)lT|~%ujw}0Go^Iu zDv*WJWcOc*jE-)!G{+3k(ryPO2PKgtM?FN^{OWexi|Z4hY1Ms5%QbDeBEx;9o*wxK-@LC z5K)6*cU_#IP6d6(g5=Zk%l_0OCV>_{uUHTMFddZkRFuNx$T9NcK70BYD=nL(a{UXR}Y69^`WNxs21vo+uAsp+Bg}gx!ajK>OCIv^7vi_Xg2Ji3)+U(_c|P^ zc81}GFPBVNNExHr z;I!?dVuOgIzRoqZ>BD2%i7N${nnphXqVyf*=pEje6*@~W?mmZ9UmCUKwhFw_SpV$ z|KfLlf8M}&H2&r9=|5rrxsUNDMStEf_!}Mgu%-WU`rrEof5QJ%%KwJnK7@?F;eYAo z|7+5Zg7B~QIB5;o|H#9S)BX1)`JJVCl79rKKL`3}BzyGpizPVHf584vT>G=1Kl8c2 z`+5E#C;eM?_h%1(mK^`?Vf{hye(d3|0_6W9>-V{TLHG&%uiW+f4*65?`rG5oKVg5% zUw;ny&lKkG4rGXa`u!(u|7*~XivF+mxWcZ#R`@r4|M!vqsqjByf2~^H|H1yP_bY+n TejZkghdVRy4|Xl&kGTH_K^azL literal 0 HcmV?d00001