From 87b4ae1944f3484bc6bbe265b40d33556078006d Mon Sep 17 00:00:00 2001 From: weiweiw <14335254+weiweiw22@user.noreply.gitee.com> Date: Thu, 22 Aug 2024 17:11:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=85=A5=E5=92=8C?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E7=BB=84=E4=BB=B6=E5=BC=80=E5=8F=91=E5=92=8C?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bonus-common/bonus-common-core/pom.xml | 12 ++ .../bonus/common/core/annotation/Excel.java | 7 + .../common/core/utils/poi/DocumentUtil.java | 80 ++++++++ .../common/core/utils/poi/ExcelUtil.java | 86 +++++---- .../bonus/common/core/utils/poi/PdfUtil.java | 163 ++++++++++++++++ .../bonus/common/core/utils/poi/WordUtil.java | 178 +++++++++++++----- .../common/core/utils/poi/ExcelUtilTests.java | 36 ++-- .../common/core/utils/poi/PdfUtilTests.java | 24 +++ .../bonus/common/core/utils/poi/Person.java | 33 +++- .../common/core/utils/poi/WordUtilTests.java | 55 ++++++ .../bonus/common/core/utils/poi/register.jpg | Bin 0 -> 99001 bytes .../com/bonus/common/core/utils/poi/test.xlsx | Bin 9766 -> 9837 bytes 12 files changed, 581 insertions(+), 93 deletions(-) create mode 100644 bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/DocumentUtil.java create mode 100644 bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/PdfUtil.java create mode 100644 bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/PdfUtilTests.java create mode 100644 bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/WordUtilTests.java create mode 100644 bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/register.jpg diff --git a/bonus-common/bonus-common-core/pom.xml b/bonus-common/bonus-common-core/pom.xml index 9b44183..5aa6a30 100644 --- a/bonus-common/bonus-common-core/pom.xml +++ b/bonus-common/bonus-common-core/pom.xml @@ -136,6 +136,18 @@ test + + + org.jfree + jfreechart + 1.5.3 + + + + com.itextpdf + itextpdf + 5.5.9 + diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/annotation/Excel.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/annotation/Excel.java index bfd08f8..d52f231 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/annotation/Excel.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/annotation/Excel.java @@ -24,6 +24,13 @@ public @interface Excel */ public boolean isSequence() default false; + /** + * 是否是导入错误原因 + * @return + */ + public boolean isErrorMessage() default false; + + /** /** * 导出时在excel中排序 */ diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/DocumentUtil.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/DocumentUtil.java new file mode 100644 index 0000000..b835d6f --- /dev/null +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/DocumentUtil.java @@ -0,0 +1,80 @@ +package com.bonus.common.core.utils.poi; + +import com.itextpdf.text.DocumentException; +import org.jfree.chart.ChartFactory; +import org.jfree.chart.ChartUtils; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.labels.StandardPieSectionLabelGenerator; +import org.jfree.chart.plot.PiePlot; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.data.category.DefaultCategoryDataset; +import org.jfree.data.general.DefaultPieDataset; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.text.DecimalFormat; + +public interface DocumentUtil { + + /** + * 创建柱状图,并插入到文档中 + * + * @param title 图表标题 + * @param categoryAxisLabel 目录轴的标签 + * @param valueAxisLabel 数据轴的标签 + * @param rowKeys 目录轴每行的key + * @param columnKeys 数据轴每列的key + * @param data 数据 + * @return JFreeChart Jfreechart对象 + */ + public default JFreeChart createBarChart(String title, String categoryAxisLabel, String valueAxisLabel, + String[] rowKeys, String[] columnKeys, double[][] data) throws IOException, DocumentException { + // 使用 JFreeChart 创建一个柱状图 + DefaultCategoryDataset dataset = new DefaultCategoryDataset(); + for (int i = 0; i < rowKeys.length; i++) { + for (int j = 0; j < columnKeys.length; j++) { + dataset.addValue(data[i][j], rowKeys[i], columnKeys[j]); + } + } + + JFreeChart barChart = ChartFactory.createBarChart( + title, + categoryAxisLabel, + valueAxisLabel, + dataset, + PlotOrientation.VERTICAL, + true, true, false); + + //将图表保存到字节数组输出流中 + ByteArrayOutputStream chartOut = new ByteArrayOutputStream(); + ChartUtils.writeChartAsPNG(chartOut, barChart, 400, 400); + return barChart; + } + + /** + * 创建饼状图,并插入到文档中 + * + * @param title 图表标题 + * @param categories 目录轴的标签 + * @param values 数据轴的标签、 + * @return JFreeChart Jfreechart对象 + */ + public default JFreeChart createPieChart(String title, String[] categories, double[] values) throws IOException, DocumentException { + // 使用 JFreeChart 创建一个饼状图 + DefaultPieDataset dataset = new DefaultPieDataset(); + for (int i = 0; i < categories.length; i++) { + dataset.setValue(categories[i], values[i]); + } + + JFreeChart pieChart = ChartFactory.createPieChart(title, dataset, true, true, false); + // 获取饼状图的 Plot 对象 + PiePlot plot = (PiePlot) pieChart.getPlot(); + // 设置标签格式 + plot.setLabelGenerator(new StandardPieSectionLabelGenerator( + "{2}", new DecimalFormat("0"), new DecimalFormat("0%"))); + + plot.setSimpleLabels(true); + return pieChart; + } + +} diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/ExcelUtil.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/ExcelUtil.java index c8d6610..170a374 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/ExcelUtil.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/ExcelUtil.java @@ -84,6 +84,7 @@ public class ExcelUtil private static final int MAX_COMBO_STRING_LENGTH = 255; private static final String TARGET_WITH_SEPARATOR = "."; private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class); + private static final String IMPORT_ERROR_MESSAGE = "导入错误原因"; public static final String FORMULA_REGEX_STR = "=|-|\\+|@"; @@ -183,6 +184,7 @@ public class ExcelUtil * 需要排除列属性 */ public String[] excludeFields; + private String filedName; public ExcelUtil(Class clazz) { @@ -448,7 +450,7 @@ public class ExcelUtil { val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator()); } - else if (!attr.handler().equals(ExcelHandlerAdapter.class)) + else if (!attr.handler().equals(com.bonus.common.core.utils.poi.ExcelHandlerAdapter.class)) { val = dataFormatHandlerAdapter(val, attr, null); } @@ -568,6 +570,7 @@ public class ExcelUtil { fillExcelData(index, row); addStatisticsRow(); + hideErrorMessageColumnIfEmpty(); } } } @@ -965,7 +968,9 @@ public class ExcelUtil if(attr.isSequence()){ cell.setCellValue(sequence); } - + else if(attr.isErrorMessage() && StringUtils.isNotNull(value)){ + cell.setCellValue(value.toString()); + } else if (StringUtils.isNotEmpty(dateFormat) && StringUtils.isNotNull(value)) { cell.setCellValue(parseDateToStr(dateFormat, value)); @@ -1219,7 +1224,6 @@ public class ExcelUtil Cell cell = row.createCell(0); cell.setCellStyle(styles.get("total")); cell.setCellValue("合计"); - for (Integer key : keys) { cell = row.createCell(key); @@ -1579,35 +1583,6 @@ public class ExcelUtil return exportExcelToLocalFile(sheetName); } - - /** - * 对list数据源将其里面的数据导出到excel表单 - doNothing().when(excelUtil).init(null, sheetName, title, Type.EXPORT); - doNothing().when(excelUtil).exportExcelToLocalFile(filePath); - - // Act - excelUtil.exportExcelToLocalFile(filePath, null, sheetName, title); - - // Assert - File file = new File(filePath); - assertTrue(file.exists()); - - // Clean up - file.delete(); - } - - @Excel - public static class User { - private Long id; - private String name; - private String sex; - private Integer age; - private Date birthday; - - // Getters and Setters - } - } - */ private AjaxResult exportExcelToLocalFile(String filePath) { OutputStream out = null; @@ -1631,4 +1606,51 @@ public class ExcelUtil } return AjaxResult.error("导出Excel失败,请联系网站管理员!"); } + + public void hideErrorMessageColumnIfEmpty() { + int columnIndex = getColumnIndexByFieldName(IMPORT_ERROR_MESSAGE); + if (columnIndex != -1) { + boolean isEmpty = isColumnEmptyExceptHeader(columnIndex); + if (isEmpty) { + sheet.setColumnHidden(columnIndex, true); + } + } + } + + private int getColumnIndexByFieldName(String fieldName) { + + for (int columnIndex = 0; columnIndex <= sheet.getRow(0).getLastCellNum(); columnIndex++) { + if (fieldName.equals(sheet.getRow(0).getCell(columnIndex).getStringCellValue())) { + return columnIndex; + } + } + // 如果没有找到,返回-1 + return -1; + } + private boolean isColumnEmptyExceptHeader( int columnIndex) { + // 假设列头在第一行 + int headerRowIndex = 0; + Row headerRow = sheet.getRow(headerRowIndex); + if (headerRow == null) { + // 如果列头所在行不存在,则认为整列都为空 + return true; + } + // 获取最后一行的索引 + int lastRowNum = sheet.getLastRowNum(); + for (int rowIndex = headerRowIndex + 1; rowIndex <= lastRowNum; rowIndex++) { + Row currentRow = sheet.getRow(rowIndex); + if (currentRow == null) { + continue; // 如果当前行不存在,则检查下一行 + } + Cell cell = currentRow.getCell(columnIndex); + if (cell != null) { + String errorMessage = cell.getStringCellValue(); + if (StringUtils.isNotBlank(errorMessage)) { + return false; + } + } + } + // 如果遍历完所有行都没有找到非空单元格,则返回true + return true; + } } diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/PdfUtil.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/PdfUtil.java new file mode 100644 index 0000000..2ee8887 --- /dev/null +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/PdfUtil.java @@ -0,0 +1,163 @@ +package com.bonus.common.core.utils.poi; +import com.itextpdf.text.*; +import com.itextpdf.text.pdf.*; +import org.jfree.chart.ChartUtils; +import org.jfree.chart.JFreeChart; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; + +public class PdfUtil implements DocumentUtil { + + private final Document document; + private final PdfWriter writer; + /** + * 初始化 PDF 文档 + * @param pdfPath PDF 本地文件路径 + * @throws DocumentException 文档异常处理 + * @throws IOException IO 异常处理 + */ + public PdfUtil(String pdfPath) throws DocumentException, IOException { + document = new Document(); + writer = PdfWriter.getInstance(document, new FileOutputStream(pdfPath)); + document.open(); + } + + + /** + * 初始化 PDF 文档 + * @param response http响应 + * @throws DocumentException 文档异常处理 + * @throws IOException IO 异常处理 + */ + public PdfUtil (HttpServletResponse response) throws DocumentException, IOException { + response.setContentType("application/pdf"); + response.setHeader("Content-Disposition", "attachment; filename=\"generated.pdf\""); + document = new Document(); + writer = PdfWriter.getInstance(document, response.getOutputStream()); + document.open(); + } + /** + * 添加段落 + * @param text 段落文本 + * @param font 字体样式 + * @throws DocumentException 文档异常处理 + */ + public Paragraph addParagraph(String text, Font font) throws DocumentException { + Paragraph paragraph = new Paragraph(text, font); + document.add(paragraph); + return paragraph; + } + + /** + * 添加表格 + * @param headers 表头数组 + * @param content 表格内容 + * @param numCols 表格列数 + * @throws DocumentException 文档异常处理 + */ + public void addTable(String[] headers, String[][] content, int numCols) throws DocumentException { + PdfPTable table = new PdfPTable(numCols); + + for (String header : headers) { + PdfPCell cell = new PdfPCell(new Phrase(header)); +// cell.setBackgroundColor(BaseColor.LIGHT_GRAY); + table.addCell(cell); + } + + for (String[] row : content) { + for (String cellData : row) { + table.addCell(cellData); + } + } + + document.add(table); + } + + /** + * 添加图片 + * @param imagePath 图片文件路径 + * @throws IOException IO 异常处理 + * @throws DocumentException 文档异常处理 + */ + public void addImage(String imagePath) throws IOException, DocumentException { + Image image = Image.getInstance(imagePath); + image.scaleToFit(500, 500); // 根据需求调整图片大小 + document.add(image); + } + + /** + * 添加段落并设置样式 + * + * @param text 段落文本 + * @param bold 是否加粗 + * @param italic 是否斜体 + * @param fontSize 字体大小 + * @throws DocumentException 文档异常处理 + */ + public void addStyledParagraph(String text, boolean bold, boolean italic, int fontSize) throws DocumentException { + Font font = new Font(Font.FontFamily.TIMES_ROMAN, fontSize); + if (bold) { + font.setStyle(Font.BOLD); + } + if (italic) { + font.setStyle(Font.ITALIC); + } + addParagraph(text, font); + } + + /** + * 创建饼状图,并插入到文档中 + * + * @param title 图表标题 + * @param categories 目录轴的标签 + * @param values 数据轴的标签 + */ + public void addPieChart( String title, String[] categories, double[] values) throws IOException, DocumentException { + // 使用 JFreeChart 创建一个饼状图 + JFreeChart pieChart = createPieChart(title, categories, values); + addChartToDocument(pieChart); + } + + /** + * 创建柱状图,并插入到文档中 + * @param title 图表标题 + * @param categoryAxisLabel 目录轴的标签 + * @param valueAxisLabel 数据轴的标签 + * @param rowKeys 目录轴每行的key + * @param columnKeys 数据轴每列的key + * @param data 数据 + */ + public void addBarChart(String title, String categoryAxisLabel, String valueAxisLabel, + String[] rowKeys, String[] columnKeys, double[][] data) throws IOException, DocumentException { + + JFreeChart barChart = createBarChart(title, categoryAxisLabel, valueAxisLabel, rowKeys, columnKeys, data); + addChartToDocument(barChart); + } + + /** + * 将 JFreeChart 图表添加到 PDF 文档中 + * + * @param chart JFreeChart 对象 + * @throws IOException IO 异常处理 + * @throws DocumentException 文档异常处理 + */ + private void addChartToDocument(JFreeChart chart) throws IOException, DocumentException { + int width = 500; + int height = 400; + + ByteArrayOutputStream chartOutput = new ByteArrayOutputStream(); + ChartUtils.writeChartAsPNG(chartOutput, chart, width, height); + Image chartImage = Image.getInstance(chartOutput.toByteArray()); + chartImage.scaleToFit(width, height); + document.add(chartImage); + } + + + /** + * 关闭文档 + */ + public void close() { + document.close(); + } +} diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/WordUtil.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/WordUtil.java index 98554bc..155ec12 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/WordUtil.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/poi/WordUtil.java @@ -1,74 +1,168 @@ +package com.bonus.common.core.utils.poi; + +import com.itextpdf.text.DocumentException; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.wp.usermodel.HeaderFooterType; +import org.apache.poi.xwpf.usermodel.XWPFDocument; + import org.apache.poi.util.Units; import org.apache.poi.xwpf.usermodel.*; +import org.jfree.chart.ChartUtils; +import org.jfree.chart.JFreeChart; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.math.BigInteger; -public class WordUtil { +public class WordUtil implements DocumentUtil { - private XWPFDocument document; + private final XWPFDocument document; + /** + * 创建一个Word文档,并添加文字、图片、表格等元素 + */ public WordUtil() { this.document = new XWPFDocument(); } - // 创建段落 - public void addParagraph(String text, int fontSize) { + /** + * 获取文档对象 + */ + public XWPFDocument getDocument() { + return document; + } + + /** + * 添加一个文字段落,设置字体和大小 + * + * @param text 文本内容 + * @param fontSize 字体大小 + * @param font 默认字体为宋体 + * @return XWPFParagraph 段落对象,可以用于更改段落其他属性 + */ + public XWPFParagraph addParagraph(String text, int fontSize, String font) { XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); run.setText(text); run.setFontSize(fontSize); + run.setFontFamily(font); + return paragraph; } - // 插入图片 - public void insertImage(String imgFilePath, int width, int height) { + /** + * 创建一个表格,并插入到文档中 + * + * @param rows 行数 + * @param cols 列数 + * @param content rows*cols的数组 + * @param columnWidths 每列的宽度,(单位是 twips,1 twip = 1/20 point) + */ + public XWPFTable addTable(int rows, int cols, String[][] content, int[] columnWidths) { + XWPFTable table = document.createTable(rows, cols); + + for (int i = 0; i < rows; i++) { + XWPFTableRow row = table.getRow(i); + for (int j = 0; j < cols; j++) { + XWPFTableCell cell = row.getCell(j); + if (content != null && content.length > i && content[i].length > j) { + cell.setText(content[i][j]); + } else { + cell.setText("Row " + (i + 1) + ", Column " + (j + 1)); + } + // 设置每个单元格的宽度 + cell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(columnWidths[j])); + } + } + return table; + } + + /** + * 创建图片,并插入到文档中 + * + * @param imgFilePath 图片本地路径 + * @param width 图片宽 + * @param height 图片高 + */ + public void insertImage(String imgFilePath, int width, int height) throws RuntimeException { try (InputStream is = new FileInputStream(imgFilePath)) { XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); run.addPicture(is, XWPFDocument.PICTURE_TYPE_PNG, imgFilePath, Units.toEMU(width), Units.toEMU(height)); } catch (Exception e) { - e.printStackTrace(); + throw new RuntimeException("insertImage exception", e); } } - // 创建表格 - public void createTable(int rows, int cols) { - XWPFTable table = document.createTable(rows, cols); - for (int row = 0; row < rows; row++) { - XWPFTableRow tableRow = table.getRow(row); - for (int cell = 0; cell < cols; cell++) { - XWPFTableCell tableCell = tableRow.getCell(cell); - tableCell.setText("Row " + row + ", Cell " + cell); - } - } + /** + * 创建柱状图,并插入到文档中 + * + * @param title 图表标题 + * @param categoryAxisLabel 目录轴的标签 + * @param valueAxisLabel 数据轴的标签 + * @param rowKeys 目录轴每行的key + * @param columnKeys 数据轴每列的key + * @param data 数据 + */ + public void addBarChart(String title, String categoryAxisLabel, String valueAxisLabel, + String[] rowKeys, String[] columnKeys, double[][] data) throws IOException, DocumentException, InvalidFormatException { + JFreeChart barChart = createBarChart(title, categoryAxisLabel, valueAxisLabel, rowKeys, columnKeys, data); + ByteArrayOutputStream chartOut = new ByteArrayOutputStream(); + ChartUtils.writeChartAsPNG(chartOut, barChart, 400, 400); + // 将图表字节数组转为输入流并插入到文档中 + ByteArrayInputStream chartIn = new ByteArrayInputStream(chartOut.toByteArray()); + + // Add chart to document + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.addPicture(chartIn, XWPFDocument.PICTURE_TYPE_PNG, "bar_chart.png", Units.toEMU(400), Units.toEMU(400)); } - // 保存文档 - public void saveDocument(String filePath) { - try (FileOutputStream out = new FileOutputStream(filePath)) { - document.write(out); - } catch (IOException e) { - e.printStackTrace(); - } + /** + * 创建饼状图,并插入到文档中 + * + * @param title 图表标题 + * @param categories 目录轴的标签 + * @param values 数据轴的标签 + */ + public void addPieChart( String title, String[] categories, double[] values) throws IOException, DocumentException, InvalidFormatException { + JFreeChart pieChart = createPieChart(title, categories, values); + + //将图表保存到字节数组输出流中 + ByteArrayOutputStream chartOut = new ByteArrayOutputStream(); + ChartUtils.writeChartAsPNG(chartOut, pieChart, 400, 400); + ByteArrayInputStream chartIn = new ByteArrayInputStream(chartOut.toByteArray()); + + //将图表字节数组转为输入流并插入到文档中 + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.addPicture(chartIn, XWPFDocument.PICTURE_TYPE_PNG, "pie_chart.png", Units.toEMU(400), Units.toEMU(400)); } - // 关闭文档 - public void closeDocument() { - try { - document.close(); - } catch (IOException e) { - e.printStackTrace(); - } + /** + * 保存文档 + * @param filePath 文档本地路径 + */ + public void saveDocumentToLocal(String filePath) throws IOException { + FileOutputStream out = new FileOutputStream(filePath); + document.write(out); } - public static void main(String[] args) { - WordUtil wordUtil = new WordUtil(); - wordUtil.addParagraph("这是一个段落。", 16); - wordUtil.insertImage("path/to/image.png", 200, 200); - wordUtil.createTable(3, 3); - wordUtil.saveDocument("example.docx"); - wordUtil.closeDocument(); + /** + * 保存文档到HttpServletResponse对象中 + * @param response 返回数据 + */ + public void saveDocumentToResponse(HttpServletResponse response) throws IOException{ + response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + response.setCharacterEncoding("utf-8"); + OutputStream out = response.getOutputStream(); + document.write(out); } + /** + * 关闭文档 + * 完成保存结束后,一定调用此方法,否则会产生内容泄露的风险 + */ + public void closeDocument() throws IOException { + document.close(); + } + } diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/ExcelUtilTests.java b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/ExcelUtilTests.java index 55c03c0..383225d 100644 --- a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/ExcelUtilTests.java +++ b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/ExcelUtilTests.java @@ -1,27 +1,26 @@ package com.bonus.common.core.utils.poi; -import com.bonus.common.core.utils.poi.ExcelUtil; import org.junit.Test; -import com.bonus.common.core.annotation.Excel; + import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class ExcelUtilTests { @Test public void testImportExcel() { String currentPath = System.getProperty("user.dir"); System.out.println("当前执行路径: " + currentPath); - ExcelUtil excelUtil = new ExcelUtil(Person.class); + ExcelUtil excelUtil = new ExcelUtil(Person.class); currentPath +="/src/test/java/com/bonus/common/core/utils/poi/test.xlsx"; try (FileInputStream fileInputStream = new FileInputStream(currentPath)) { List persionList = excelUtil.importExcel(fileInputStream); - assertTrue(persionList.size() == 4); - - } catch (FileNotFoundException e) { - throw new RuntimeException(e); + assertEquals(4, persionList.size()); + String sex = persionList.get(0).getSex(); + assertEquals("1", sex); } catch (IOException e) { throw new RuntimeException(e); } @@ -30,17 +29,30 @@ public class ExcelUtilTests { @Test public void testExportExcel() { String currentPath = System.getProperty("user.dir"); - System.out.println("当前执行路径: " + currentPath); - ExcelUtil excelUtil = new ExcelUtil(Person.class); - Person p1 = new Person("admin",10); - Person p2 = new Person("admin2",20); - + ExcelUtil excelUtil = new ExcelUtil(Person.class); + Person p1 = new Person("admin",10,"0"); + Person p2 = new Person("admin2",20,"1"); List personList = new ArrayList<>(); personList.add(p1); personList.add(p2); currentPath +="/src/test/java/com/bonus/common/core/utils/poi/testExport.xlsx"; excelUtil.exportExcelToLocalFile(currentPath,personList, "sheet1", null); + } + @Test + public void testExportExcelWithImportErrorMessage() { + String currentPath = System.getProperty("user.dir"); + System.out.println("当前执行路径: " + currentPath); + ExcelUtil excelUtil = new ExcelUtil(Person.class); + Person p1 = new Person("admin",10,"男"); + p1.setImportErrorMessage("用户名存在"); + Person p2 = new Person("admin2",20,"女"); + p2.setImportErrorMessage("数据格式不正确"); + List personList = new ArrayList<>(); + personList.add(p1); + personList.add(p2); + currentPath +="/src/test/java/com/bonus/common/core/utils/poi/testExportWithImportErrorMsg.xlsx"; + excelUtil.exportExcelToLocalFile(currentPath,personList, "sheet1", null); } diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/PdfUtilTests.java b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/PdfUtilTests.java new file mode 100644 index 0000000..f224e28 --- /dev/null +++ b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/PdfUtilTests.java @@ -0,0 +1,24 @@ +package com.bonus.common.core.utils.poi; + +import com.itextpdf.text.DocumentException; +import org.junit.Test; + +import java.io.IOException; + +public class PdfUtilTests { + @Test + public void testPdf() throws IOException, DocumentException, InterruptedException { + String currentPath = System.getProperty("user.dir"); + String fileName = currentPath+ "/src/test/java/com/bonus/common/core/utils/poi/testExport1.pdf"; + PdfUtil pdfUtil = new PdfUtil(fileName); + pdfUtil.addStyledParagraph("测试文字", true, false, 12); + pdfUtil.addTable(new String[] { "姓名", "年龄" }, new String[][] { { "张三", "18" }, { "李四", "19" } }, 2); + pdfUtil.addBarChart("柱状图", "月份", "数量", new String[] { "1", "2", "3" }, new String[] { "1", "2", "3" }, new double[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }); + pdfUtil.addPieChart("饼状图", new String[] { "1月份", "2月份", "3月份" }, new double[] { 1, 2, 3 }); + pdfUtil.addParagraph("测试文字", null); + pdfUtil.addStyledParagraph("测试文字样式", true, true, 12); + String imagePath = currentPath + "/src/test/java/com/bonus/common/core/utils/poi/register.jpg"; + pdfUtil.addImage(imagePath); + pdfUtil.close(); + } +} diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/Person.java b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/Person.java index 0cb7d13..3040cfd 100644 --- a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/Person.java +++ b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/Person.java @@ -3,33 +3,52 @@ package com.bonus.common.core.utils.poi; import com.bonus.common.core.annotation.Excel; public class Person { - @Excel(name = "序号", isSequence = true, cellType = Excel.ColumnType.NUMERIC, type = Excel.Type.EXPORT) - int sequence; + @Excel(name = "序号", isSequence = true, type = Excel.Type.EXPORT) + int sequence; @Excel(name = "姓名", cellType = Excel.ColumnType.STRING) String name; - @Excel(name = "年龄", isStatistics = true, cellType = Excel.ColumnType.NUMERIC) + @Excel(name = "年龄", cellType = Excel.ColumnType.NUMERIC) int age; + @Excel(name = "性别", readConverterExp="0=男,1=女,2=未知") + String sex; + @Excel(name = "导入错误原因", isErrorMessage=true, cellType = Excel.ColumnType.STRING,type = Excel.Type.EXPORT ) + String importErrorMessage; + @Excel(name = "头像", cellType = Excel.ColumnType.IMAGE, type = Excel.Type.EXPORT, width = 14,height = 14) + String imagePath = "http://192.168.0.56:18083/file/2024/08/15/hao_20240815100236A002.jpg"; // 公共无参构造函数 public Person() { } // 带参数的构造函数 - public Person(String name, int age) { + public Person(String name, int age, String sex) { this.name = name; this.age = age; + this.sex = sex; } public String getName() { return name; } - public void setName(String name) { - this.name = name; - } + public void setName(String name) {this.name = name;} public int getAge() {return age;} public void setAge(int age) { this.age = age; } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public void setImportErrorMessage(String importErrorMessage) { + this.importErrorMessage = importErrorMessage; + } + + public String getImportErrorMessage() {return importErrorMessage;} } diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/WordUtilTests.java b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/WordUtilTests.java new file mode 100644 index 0000000..67a4f5b --- /dev/null +++ b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/WordUtilTests.java @@ -0,0 +1,55 @@ +package com.bonus.common.core.utils.poi; +import com.itextpdf.text.DocumentException; +import org.apache.poi.wp.usermodel.HeaderFooterType; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.junit.Test; + +import java.io.File; +import java.io.IOException; + +import static org.junit.Assert.assertTrue; + + +public class WordUtilTests { + + @Test + public void testWord() { + String currentPath = System.getProperty("user.dir"); + String fileName = currentPath+"/src/test/java/com/bonus/common/core/utils/poi/testExport.docx"; + WordUtil wordUtil = new WordUtil(); + wordUtil.addParagraph("hello world,这是一个正文", 14, "宋体"); + wordUtil.addTable(2, 3, new String[][] { { "1", "2", "3" }, { "4", "5", "6" } }, new int []{3000,3000,3000}); + XWPFDocument document = wordUtil.getDocument(); + try { + wordUtil.addBarChart("柱状图", "", "数量", new String[]{"计划", "实际"}, new String[]{"第一季度", "第二季度", "第三季度"}, new double[][]{{1, 2,3}, {4, 5,6}}); + wordUtil.addPieChart("饼状图", new String[]{"1月份", "2月份", "3月份"}, new double[]{1, 2, 3}); + wordUtil.saveDocumentToLocal(fileName); + wordUtil. closeDocument(); + } catch (Exception ignored){ + System.out.print("异常发生" + ignored.getMessage()); + } + File file = new File(fileName); + assertTrue(file.exists()); + } + + @Test + public void testWordWithImage() { + String currentPath = System.getProperty("user.dir"); + String fileName = currentPath+"/src/test/java/com/bonus/common/core/utils/poi/testExport1.docx"; + WordUtil wordUtil = new WordUtil(); + wordUtil.addParagraph("hello world,这是一个正文", 14, "宋体"); + wordUtil.addTable(2, 3, new String[][] { { "1", "2", "3" }, { "4", "5", "6" } }, new int []{3000,3000,3000}); + XWPFDocument document = wordUtil.getDocument(); + try { + String imagePath = currentPath + "/src/test/java/com/bonus/common/core/utils/poi/register.jpg"; + wordUtil.insertImage(imagePath, 400, 400); + wordUtil.saveDocumentToLocal(fileName); + wordUtil. closeDocument(); + + } catch (Exception ignored){ + System.out.print("异常发生" + ignored.getMessage()); + } + File file = new File(fileName); + assertTrue(file.exists()); + } +} diff --git a/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/register.jpg b/bonus-common/bonus-common-core/src/test/java/com/bonus/common/core/utils/poi/register.jpg new file mode 100644 index 0000000000000000000000000000000000000000..678d65454117dc0e43c4fb94273cf82f8bfc3bbc GIT binary patch literal 99001 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

O}wsFS93Pp4X>+g*B zpAisj|9-!A)x|8?W4CqtrY_6;Vw6>rvH!A2L3G;`wq|NV?;6PvQ0rK-$YDOD+#m9E zIBcm3xm|T1$NN;^ak}N(S&)4?W(;k}yP-#eg!c(a==9d_Vr<<@4T*=wT@JYcY+3Z7 zw}lFx>SOkT);Mc8<*zoh99&9tk={v=-0f70R7maubcpp<8ge@cY4dfhEysyC!{Vwf zM^|k0?@L`716W}n;x)TsVc6NZAZzm=NB0PO_KIj@EjsPexUJhFn z&IyTJ5)s(EDHzfCJ8pZTP^ zFo5oiJ=;U}BrD4fdL`AuCXNCcYWz~i-T=KEe2-?O`)<7w^)7(9z9eJopL9e}Zo!Bl zvq@*G5c)8UFd-u7tOcUSVyM0aiF>ld9ApSEcqddDj$@Ero&tp%^?PQSL z88+|`dzzH8r#UI~bH-!v?ytt zAiG_w8P1hm@G>73ceS%#<;82T7H|}YzNcl}3W99}Iiv83_CR`Q8e*@8R+pkxnMy1$ zb4QGOrbG3@mSDUFm)}BwL!e2JZETx0fGd+|6cyDK)Dv)dS>G<+hE9391$M<;O$P5x zPMj-M%e5Wf-VaD3oY5Vd{1Y%Pn%kqDZpgO?sMIZ1m?(c4(mU)Q3{$=i1Fwh$+Z3)t zdnCtj;_ZWlQ3ccX^uLqW-wX5Eejcq=z{r52_<%C1UJTdd>%??Qf^Esgxq+p^D_IRJ zLi$yQO}lUKY8JeTn?C{)4%wL5!!z;HA6?qLu?+Kp%{o0*gc%|pyrAe?6I#WwCE*as z=yW7dJ3$5iOcuNK?`gNYvP^+xkYsU^k;&GFL_;8fM}wBB&0%;FC;0YU1Iu;H|XalEy~fDneS?^i8Su6Df8o z|F4DQLe)uC*QHgN{I59+>IEe|xrC=bx7%=$AQZ^v)vRK*uFt8nvJB^yx5p$>05;;q zAf0{p{hDlkT}zf8Hwju|Ga6rd4-NpmbuS@1@*na(*?gyrYw01I~F;okJw z$`qX^9JY{b2zMxp*oYI^M-cc!_h#LF@0Q=(Jw7`XLJX-?#bjH0IZdI(5;of{DoWR5 zP~;oYDDyg-(eZd!2lhdAzBXYi=h(pBfeQ;BJab#^6JXK!jqI_EmOR-FpQ!$t5At^W zwAS2=p0|5Dg2ud0c4f$`e?wfRXaljC2yG6#Jz}!PSx(MpUHT)XVgM!a_?=kkWdbeA zJtM+KwH|;E1{XfnW9TNY-s=}mG}8!W?zH?R({2$wW%YOr(VlX30j|6YCut#}%WqVJ z7;z~bjYG1=|7dcwj}%)RG+FWD$=UiGi#hd#zfOY3n87?*`!%x*YvcyreXdVed@ZS@ zUryr~@3UN&AWK}Lb@s4ny<8nCggoxVyQLwNL{p718zLpg+Dv%7*O+!g%X9}D4uLS! zt}V+_AAH*Az{oap94Rd#L{f>;4S4`s1UernX2v%F&_ z;N)i4%Kjq4vSRP`yHwwu6_GgD9dAvQa08slFsUk@9^5TyT;KqphbW-$bK$i$|ZbLQ=ym;k$5+y{}NogcB z;0SBtLgDEXvPnFK$_MxTiQ+`&EG6X0o@p0BRu*r9AXU_>sd{5QcbKvlhlE5*X(yKI zg=Hz$9KrD*1hyJZkxR44{=&t9Wkomj%<98i5JVKOt&h}gaU`(13XP5cWmzv(!6~Ch z>3)1?^BRMrHU(^MPC2!`Z@jY?Hr7FG>cOK&T9e^dn*4A|isruAZ&*#wk+x|Y7wQ&0p!VASeeVWW<)mlpWVV(m zer-Eu)9;ddTsfyp`EF|Y%5rqtg5&2-Cy5=M8ASXQUO-V+Z}pujGlBL3hn7r5?kbqP z^0OYd6CO3<+=%!Ds7saj#UpM3a(;+ip}3shbfA7(Qo?Nk@Va0~5&}bzb;j`xuS?nK zEs=sZ73)Jw(hVYlyL$2}jlr~^If1+clkHPHJ~!uk%gShg#|@?-(9sQ1XCA(Y>TII5 zjUIBSJ8?F!STsb(`64b$OL2YqZ-#QAFp4EZa4nfrtQ1D$)^19u*}zjrS^mca18Len zI%Q`vdLBugbdm=1L*9*U%()gb?2o3*9OCJc@k1XPmjp%>b@puOe%P4@U(7FiAY$5I zzIwGK0(|zLG)(o=f{mgFZ`fNCf)WnC84Mk}FSJVVA6US?o=C1=%K9l z3UO7W&_ALNqWXQRe*O57uU3d$S)}&g$&A(a z7P)_bbT16GEM<)HaU?Po;RjuB71znNZNu1G7L{J#es$8s@^7P%m-+0ib@n2d{SUg6>qi@bjycYYahz=S%<`zd<&kgMW?_lh^74Y zhpz9XRwSj4y%mYc`-smY370<6IQNhXCJ%abzCWMk`;sBAsG)=X&TP|&(NypX zw>FUIv<~&|<^OsygA%%~g@ZUIS}TN9+5Z@_QM?g75T+r^C303F%`(8v6qZR8Zp`T;Dd``k1L{k3#!v)cx7MLc(L;Nu0Qc{ z&C`H+PeNIY8^y(;*|N+;%cln-rmlcaXDn zy&!ndg6`nRZzUd}%OcF;JOYq3aEO>Ylq$&DE(XEpb8vmY^<1=dX zO$s{U1nk2i$V^Ji$g3g`kL1smjbK=4M_r(T&q0H!yvFU{-q;LqB;fR3?K(GDBjCE) zGAZ{mlde5$pj?`wbS$YIyj0gkDOA_t0x5E35e)uH9of#yAbQ+N{R{1m`Pl2#IOV*A z1HV*ARmz6G;7G-;2ixS66_p|=oVx;pUrjfzy8KdkvHetLsm&fN+Kw1(mmWMWEMGZ5 zj2yiE)_%J;EpWVXyQK}0bScdZQ&_MWAjXU0qz(pIEv1939^L4Dz@{i%ljTCoV4la) za%$MHx0&-NJJ#Gg%{9F2tZ$%p*37Uq$UM7?_;krVg1q4E;$UY5wrCAGCJ znEEg$le$4QrL7CJo;h!vq8UCbXnqoG=6jOu?tU^%R6;te3p{$SZQH^ohqy&2;+t>3 z(}oIK_+9Hfc!p-T>pKCbo4*i)FFd{v6LJqN5##A*xQ_h*)%Ra(ta)cF8V1UybUKX6 zN*<{g?7nBuB>+uq0@DC7b^fi^-fnn3Eb(XyRc}KfZw41e*z(~QzioPwW!Mf~>JN?A zgmPsIUMa%>8pNHoRjBK#DpQNh`t^2(o|RfaQRVWD0&3k_iGPu?p&V}K1%(-)eQ7gV z8LG1?BYj@xY2y;SKGp?lq=dRE3~*HQxnHtT&=v)3_c?yP^|Ddb{RzFDhF0h&IdRd? z6OeyyAg3jtTF0JO68l|3KKJGIn3__2mnTX%jobbyf#p_spBy8l`*Hs>a(_{-tD@jJ zGMXD-(V2-0cOp--6N>spki%;@L0=~BSNgI7@Vviuqf1!-YsjvMbyLU zT7b1;arZ$1^eO||A3SIEeI!uVF?lasKL3&>3J^`pA34MvvHS4m$swC!XUc zDBrL?;r3udA>o@~xl#jsUoI&?+Fgxlj1wI;a%LW?qnTn%M;%<2A^3;}B7hi!Tx-|K zeUMjNKp`(2;8OFSg>n5Xy;dv^BI_Tnrh)p?#<3LLkLfs~SWcoNf-_H>)WmAzWX_GK zpN+cKm$x2v5!Zhs2xG8&=gfV*N{tzY1Y9Kmn(VG@X~+)w^MigXbR_c$LwAc5B6It< z##-M4k0^i%_o#IXo%l5+2#IusoRrwvI-W47%1yfF%4J3!vyu(JxyrW-$}XsW`BSqa zYoQo+1uHQ9=I-`B1!8g88L~nH8FF$`t}MSpweo0lCh~VjC#&}!Fk|cQR(0q0+r}?* z#Uc%*xx{R7UYC$9@qcpSvTHvszKD+F3|F8IK}O)%-&Khgb=E&M!b__pXq12&5wa;~ zY`oeB8-RZMTG>wgHFVB=2+O#ZhNQIf*`m0R@r@z)w_yb2!~?0>@Njs8;8FYSY`aX5 z83I0C=g^(6808#&Lh)&m`ua0BZlgOW(gJdO#-rk#T=Cfhut+6n8&jmpg0a&3Rgc)>|DF6f3cIi{@#9Xyi9Fb3UviVU4@qD>Lk6${BC`CZ}IS6iV{}kg`ygA z3Xvt}n}X>|P}{x{1Y-}%Ixv9=Une|iHxC@qqq*Bm&aD*+-699o^tk$RCz~uZ;{W(%T_`&Vw#yXu9Txy;zTY?El42 z@n+5&t|{)DQdB`9diY#3q+CyCWrm0<*K_!Ix1om6a>EjsjkMdQ=0Nt zvM106r}MrhFuH=_H$f_nn~7s;%i6wX3M;hwnRTvdHrkr^m01OQ=JUlE>zRZ5cSMNv z)z<6Lz~P4{-pmGWEI(bLu)8|;S2R4FDox+vMl%E4bcIlc7PLY^;qD{i%$i+|0oOBC zw=)ge3%MR_8CtQD{62W026e|fXx4r&t0e_Dx93(CUAdtUWFtw}ok)wbcb#jUXnFs6 zzb6r(@wS|*6GI*|gT+0B6X!k75`(Dg7q<~#TMFIfq88(^SMG`MY>6b%5=6S7bcz^< z@q;YiU2dR^a({kvuorz!3J-NCGvsPVDv4e0r_u}kY=-2#c>CcbLZY!N&sf0CRBx@5 zeP5pL<*QLh0s!cHu#jU=fv!goX8^I}VH7>cbf@PqDG+I2A7on>N@V*&ce(Makz@TT zq_O1U*3Ab}d3SydCG@8jbapR5r+jGgJeKbu-tLbCt5Z(f2Th#Zv3VKLW-CFe0tlMt z+6*|p)5mMIY_ZlIM8HaA`Lvwm8xEt}FQeIAb4kgKq4r@U@5VNj$QhLMhVlKJXd%AH z2#d>z`i}Tr{2N3Wx>_+2Ys#ouuQp~-Y1nLE&!o9Rk@?uyCBNxu_$Q6R)jIXz^E&tW z=0io`sbWf&=znSzV|kK*@16+l;Nv9CDlyD4eA&ZL6Q2yc)jOs3kf5g1&rCUC;^EfE zhx}QLj{~i;E&~x!s248ITGhQ9;j&R0E{S~EG{ECzDwxC2FV!XG+rIscc7X8vjm4r` zfR;b-RwWrF@Bv^$prosc)|kov1pTom=m20g`cN4Y*Mypx;YYR&4$o=ZN@Vm$e9e_c zi6UdxlkCDygHg;zOqarV5p^+V4Qf;cx+qcq3(s^Kt~ar!BmwDGhYtL?XT8mr9^3uw z98qu5c%>D=a=DfC{5&$t9PdCSf|Ki5Q?seb0X(>h+xNN1el%%O-Nm$FbTJ0-VDw9_ zeq18zW3rnfaGsL(7;K+B3o=LpfHnb_h3M2Bg$d5jDvyJOw)z9f+Z!FccpH(djd%#L zWAn{j&AuKknBg1N6Nl#V6jY_vqfTSzIPOIg=XV(}vRx zr!mKed1qp=w?Q9XpSY3`tQ6cvtH9Qdq>0oN&jgjo|E2Kt`PiEV? zk_7auJ1v3M$y_ZjhmS;~YuI(WxJOfJ$CNVt0|t~u&;^KG0p@}mE_aWxU$oiJ+V-D- zUq$y;B>rY^MDq!6bP34VK6XW@*Gj;0-3TWWgu29h`|%O>@v6`nBediE@@R#kv@1J* zh;-)5VVioW)pQ_eqexQx& zO{+=?OXa^^S$#h7S=JHmXW>T9#S2E@6qE?En+TZpc^N5@U2wM_b5qntw;C3De!R;( z)+eZqiP|Oo_FmEOUeE^pp)g*`BIOusID1HUh%;zFeA{w-TW>NiTcJ%c=WA=WY0*!L zx5qPHR%$ct<dx4oYD5UiUB{9mESG{kXD!5=&Hjgz+e;K)Zns` zI?FVzLcLmfvFi?A4GTgLeR@@(Nk6dR#M{ z`*qgu`bIu1^J^!8$B=?7y9srlW&2=3Rw2POQ~Ixwl7_sey+aNVerL)Tdh>kHNl-&+ zisV{cCn+gsfd-y)srUE;>0(Zb^p9;hg|1HreIK&!MIX4-1z`6hg=C0WsfxRNET3w@ z>g<5dpM6f^T$LA>m7pu7Kn}9aQJO@IIE~;Gg$`x1D=Ld4s_6?(+$F?K$3^kWw$j~2 zpF52%AtL$C_F%HOnF5^;_*aWjdK*?n%uoIx_*mw@Ta1X3(WEW4qtWPJ(>H0*X|&*` z(cEG*`$ogX|Gm95)Ad2;VVLahitMx*QGe=i*x zjP54bP2=7RxFa5a&wqmE_fPnr-huGHm%e_EhT|5MUpLSO`uEiT+wgy7@qZHjuU`D0 z4*#!_{+~+xf29)XlYH!wStBRMeJP$te>`bn(&S3YRX<8CpqjtGRsPpxL$JW?{AB3X zG6p;vUJ^ycaI0Tkxagr-ZU3b}p1Rw|fh9ScF<@PD8$W@;_e@3=-%_qvPvqnM^02v5{x)mA12@-dHH1jg3v`kd@E34D+#02m5QH?<-@){2~Amj@>X~YpTEZ%f>4g79M0mbkR7s zW72Ga_T8=k~-0K9J|C%F0 zHsYThy@B$~^Rq=k^XB5k=Cb(M-A@~vS9EpWy5?m({Sy0+6<=5mV3B-MQN3u^UC5W( z{DO`|$^m8jAkYsoWkALDTHt>rgHC=u^*mXam_BO0HF*id?wdDR>`}}+DH!sj)32)pt z`DfIlOuvT?hIPwa#&=bXzXM`kIC_}ryU*l57C`r%x!!@;dxrgz{|=~s*SG(Cel{;KdB-$}E_p10R${Gy`N{*1J=1m5dIgx(t?d!OhdJ+F>c8eiK9 z^O%b2HJLk%J8&mnZF6sodeEm~a#YE!KCc@~uKSfVX`cy4i9dI<;a!~Kd z>0YbC}o)nCv?*l#g zc`PI;_otdF2AuRvHX_o@?|Iy_xX&@dim4>#uy6~ zr~84np_-)PZaKu_XnxP~OudWM7TPHHGJjj4+w+X8#cfhP;JNGx0uMK*foFHM2HwQBA026UFc3qH&^WZ0hmR`oymceTuYLJEM-B!zCxGCS98vZP^ z_ICB_I@AJKC(1KS_~&8IS-4N3}{l2tT&(A32<-M`c zI$k{TsxNk6<%q(eYpDy@>SCYCYPl@Cg3J}JEIQqBJm zCS%o~*wZsF1|IeTG(xof&#%D7p4WdC4C{s-hPp}-xr6Q#h;F3VMqL2JDdWJLbKs2; zevgG=xQbLP^xSLvbUHm$I=Sst{p*0nH(uheh`P7-MwJD7Pu6`54O+g|!t(!XTtlxz zN9G7eUMEkRgTq3@@kx8Lj=HTD5LXmoU5KV%*{8>Sj;?9}60MAN7JhRzG9>r!uN!7e zY|J*ef54ouoX|@mp)l60jT-k}iLCe8Q8>}fl)eAMK95^X(9cd&mr$1Qe%gKBl9mI6 z0@ehpa-74kz(HG(VLBlEi@INi=o+LnDfKawA!)xj~^^u7R_uF;*^!0!IH8PydyrU+FK+$o5;rL@!zsjAyIeH5s z{11GGFz?B|<$ecqlBoObbQ2Y3RFP~6p*;I(c^QJ@Mh~n1$Vb-B-!c$xleT(2mI7?c z6;-Plq_XwAA{}TI6)PL|-G=<_IJVJ_biyv9jd)Af|8(;`t*ag}(O5=eiWHqkAD>w> z<;@VUcC^E)m$7SUza=LLSDn@Eum%gJ5z)F%Ph?bYI3QCIc7E;e-E;adZZM5^I4luS zOLk+dGYVTDT0W~779(_b{Gh%lo@uiH*wG_#Z&+v$*a4`L-K>uBMYf#pe(`SI^}L4? zqPzjuR!!RQpKT+za4cyPK+<7`tS#FX2h`}&!ngslAdEr(N}>WP+Mewks# zm!MW9;wtkt>iZ7^y}P(@oDqcz>q#B)ogRI(I-8TmJpL1=T8E~5{H<@cDyEcA9jR67 zs-D-txxh4pfn~{t=k2)xV?60RHP8PF5SG_>HG6oVN$i{T-KKKw1zXY|mcp|Q3!(+X zs)O6ek#CDMV<3vfLOM>?h{~8T{m-4w$1cet36Gap`DgrDS^FKocw4W3w9m06&sY!r zrQk%bM)7N7g;^-(`iIPEhnexA3UfVBE40S;$kM3E+8D;A2~EnkeWOpLsm4x0OMY3z zR$tYFY4O7v&+DdP*!aZo9Dd5^^mdd|Wz5y*d1a;THGu{pa$B?aWmOXo_R(WN?b|HT zO1NO22Cf2i{LsO*Pnr6?zD9B*p@;!9FXqRBQ-9-?&@FT(CR=vLNn-Sp7Vu3px;)Sm z&stTJr_5a_<&0p2VDv*oxj_wdK1>qKHufb2hn#bXbH8k1XFSgBY?~_dmlPo2bjy{D z9!omYU=)4;DxaJWqOI_DZ@kDgTMl&HHZs_xdC$~2o>0(ha-V4Wpk!>Lc0E}d=!dj! zq!sdfj=kWbH!3HSJq9zhfM4G)f+Y^I&{|unu*JQ8df!)Zy4A^yWX4^KRAI~*OA)K1 z6nnYcs79EW#EX?ovsau6z6Ej}9k?PB7qrxdNj!y$;LWj+vAt{OlQbOWw@ZzJjbN0S}1*eS;unkb0Y7T z6R1tE_7D4Xv73G>!+f~4Y`EX{__Qk#ern-*@|7DcOG;uDl8bE%U=nc$rjq08-7P-3u6z{gnjoB z(7jY6(INZ+fE-6`dIwFkrpbP^rN1JH=WM;$m#US2dpvvd>Ti_{yi>{EfSK5?S8t!S%13#%+i1~nuQ?)Cpjm{$w6@LJ?4 zerVUp7HTu_q0kK)pW?u=~ zRoL`PQ`fSQ-(CdXOY)HJSrNX|lQ9!%Eu@bChsHrdKr3oN#@HZ!m-&{TFj)J?63Eq+ zXYgz4nW@Ij;oo2`uMUk7bIx+k+k{A$o2M4t1&zDwYmC?a^!&yna+-Yq%heNJxmQ1* z(8GlnSpt9MR>&!<8s0a)158^K0q@b06q!$d^)lN{5@(mbom+5arYWjSSCas*yNY_S zPR90civ8%=dND+sC^A=b+mPx9X2Fg0B7^E}3aPT#q$_dG*E)gTjDFQ(2Z;4z2K0>x zIy=+vCI3?PSZpX1mOHQo&wcv~Vs>bvadj58%+W^;8f*v|ZMLL$zE0hX>wpU5dg=R; zb(|x=C);#!7~f+jla<%&(1L}aytbx-k(78J@&OC}?L&>y_7CoW$aIk3ZleVIBTc|$ z1rtC#V(W4GZf+RE865)?U|PsjydTB*5xmP`E5M2KGAiz2oVP^o$M8nifv}$47$Q`@ zdC4N%n9t|q3DXr{oJbOMQ;8@OU&Yva<#o2lWFVnjVmPO5C?Ua~_7tJl#b24IuV}|S z)oeWJA@BLk;bP?Qc<`qCC_U7M{zENWlA(<*Or$K$0Xve%__a{Wcno`h;C*wQAvV!6 z_Ka`VmW{91YE44A&ad(V6LmjU6<06Rk-%hgCDu1c#-J3Uxk; zs*UO4by)!^*9mOtKVEr_>&MnSiOn2P$=?E%?S4z~5l2pYZ`6gv!y<6XD8okGytqD$ zFD7+H(Wm%|c)PtJS=9Xtk`r`xR4W5eyZ5C??u{mn?@EM~KrRqiooYbc~wc zaKu&z@MZO}MvK#)eBcN;^oGUHpU`s?eM4KW^RrDh7 zCrzAe041J=lLL#T6xq%E%Ldonsq&=BUhV8yO|``#ws+dB)uK|tr7pqGbi;(h>P2=8 zCc@;;l_BkAUTV=G)msTVN;XY#C%Fl!(-MgJm+^{Rx{0t_n9Q8r#YID~KRZHb0?V{KzK=_TYnoC`vr&&MFs6|rn2UF|1@tIRb zFUVDw9y#dgHq|w@;PA7WSJ9aETsRP%Wt{M#q;x(FV1nJ#l{m`bO2gn5knR-XHS}-h z_eKj%@4Op?U=Hrp{dfXSlAT!S)ncRzLK1l&%kApbbs+?1kFvLTGc`kUm6lw4k7ym) z&VJiGg$WOL>s@FgNI6=Zh}NmMVuQ2;wT+f;WQI!=w4vw^DVo0pHvPlpf5};132| z<_9^S(O3E0qFyuIq3dkc;}mht?=`MZ!s@Lf8yCEE+kvv!wt`tyc)Zq?U4b{w4HXCf z5Pp>0#lo#$6ui6y*BFX+S(&l1iHU} zrTW&(Ngf#)$%V_3^X!pPL5Ur#eXdffLDS#t;PN!4Y?ee2uY=~#m(LzOO9A4sqpC|o z0K3a$6}RvIkG;1JiYx2dM-u`B3y?r?O9&R+-9my(fZ#5T1b6q~8r&ghaCe8`79hC0 zL(s;#r)MS;nD_naR^8t}_q%thx~Q&m=zX@Vz2te;+D95H@03}vp~C05Ob7i#sd1Ir zyz@3f4T<=sITiAIf%g|ZH>__)H#y;;<9JaKFCJv^u~uzYa*?>Ja;)%@n6y|!lED55 zUz(BN?O9m`e(rKnwTyge6Dso%^`RXxwzhoKjVe44S4Nb`Zbw1o=Q7gKf$Yl(o}t&7 zY#XvyALIdBDmFSBV%1)+T?NF@Jkj@%ByKBF<*mMQG*&U=dp@RhEK{mMxpaV4!}x^f zXt=is=4MJRRv;{&cn&;c(@FiP20c`OuZk14O^UaUHE$$sLceH>JX1kX&`6#MtQ!!L z>+(GCcJNwErHqDL=uPza-k)3TB(OW{} z{h1Zp!m898ej9}VC#4K9T+@`yqbrI`o3B!rXW*$YX%aOOR7&z`kO<1mZnr0=k0ZEj zxduqE*3l9%FC)gbITb7a%ys#5YL6R%Xr8L61BkS~!g%lUJYVDGvbk{XOKpGnPCf)& zVg#lSxDgst3)C~-ij;Nq#n|7HcB#-!7&F7ivwqW;~&NpU`nb8-F?0j}q4e^2*Lb2R$ zd}MLrp(4o8zwf2ja*V0FkjS}2#F8gZGbo4(${7AKkzK-u@X=M}jvhINq-s+&&LJ@f zSP4N@OGZ`s2(`{lT>bQL!faoQ3SLJx7Q){Ui$Sn@V%lJ$8fOEto9G z2it)|xhr21%N*p43|0y0p79OJh+mUisW+wUQ?lIo$^k2z~6n zB#V{r+PD0kLJXgn6f&`2dp84ek`l*ULbz%D-1FGWx3er`#6~<6pw<5p-0$%KhGe9! zR>9)2cz{-NnwmGW#9Fe^<2&*1nasxZg$&0V0K|^IBcmAEl+o*)O&~JxM96I z`+_}Cv75y#QZYp91Qkdkuy5V0nppb`3%e8jxfuMOV0SxfVY}euprQ55*Ek7bq^^z| zo}BL)l$j5CQdtQ}Bm!Hx0# zjIosuUEiK*^sbQpfhTriRB2F&Em&A5r zpqd>!MX+VyxNHh=2)l#Eo64As@RYPtr*KX zEKA*}$hNC(`*Z0WK~#u4V})w%(@I}ZbbCZC#euXs%u@d#t{%T^)@+pSBKq@n#fIIM zx<^MGS*`SYA)Pu?;g0?0BaX&LH(;(rb=#HC51kAeYuQ-%NmZ09RO?viR`WlO>eT!; zFwND?e8w;B(idZ2F_IMDHrtmq;ZL(xeDLl}wr63{z%w*V=q{{h)61N@sk|hutC{|7 z@sGbW>+V}!hJEais&U-{b>x9ya^dn-OPE*=@bXHxBF7f7@Otkc-|kQi6y{}5l+BVg zq*6ws`*GX0Q?}6e*C!mqKb!G7!(x8`du<6)1IPt}_ zg5Rhp+ra@vy_HrqzjheJJ{*U*yC6BOD?5_@vKN0EjSQd>vi3E>dsq4P0gU=|pyF8k zw@d@yJVYSqQ9yt2{i|~jW;V%aGwu!q3_LR884$ywC*b~G1IYabV!-|793N(s{X=YEYj`we54#=i_`zJ+#o%88&0gza$7?*2BiTvb=9w)Eeo;Fqu!&J?q8vQ#z z$l`Z*QrTOMG4Hi9%jW@%M?EpZKp3N9D|MK@_$J##he6wdr zF|%x0WVGq(;W0t+;8110XNRq&Q^>NhRnr-( zHq{PH(QF9zJfiA}>FI?>RqiTgTi2y3+QUCYs?`!F^R-oLmZ_UNIk#`(TOFiW~)S62aY-cl-c|ln`xxcIG|d`2cWP`LFNNJHR^fg#v!c>4x`7 z`R_gf-#l^w)hU;$Ds{JA^bKiX1_&C8lcVp*3j+CjAY<^qbs5+N>6l|9_vJkoc%FQe zCHMVt2tkUNk6Rs;?}!%AIXU2YxiW=7Rqvha#}LLUR9#UDNYA~~>90UCpQ2pP$(>8U zI0zsF-Voxp;r%Tt2RtuN^p4tvJmGsfFzA0L`41KM?MrCdpO7`ST}5< zRdZRAsMfRL`Ot=b8XC$wXdchrUmy_qEy^CzFtDvx=T>bCY2I1}26R-))v2r8)h&Gp zNUEVAy}X5?BdEVrP!H|lT?1Gq`iliG%N@8@R|2%v1vCI)|I32^%Yy&Ejs@R>Q*Cl> z7#Kc$r%)Ia-L%R1*M9px4k%$4m-D*q6GfKl{ zR}-K}W7<^OVn)(@LTCJ%jt_5sp2-gSMr02#saEwQ0Pxztsolv|#p^t&OOCdo)o@%eZmPP&Ih%Glqk;xr0rrOb`H~G#4x{ z6cY@P>&dRRX4MQFIJUbp7%cf3jEnXPVxHk8B_-w#E27oUs%Ta8H8qL);$&}G!>rb6 z0Ze@!!D@ZX&Fu}zQeeZSI^xW+EF9{7os%5|zc{TOy$x$%|9P>fc>9@(4y19kF14>< zX}t3hE7<2ut+8)jSe}r8Rt+Z^6-m9xmV2lAx-u)9{aMlDhpVGle&~oT$H2T`U`p9H zd~81~He9ZS@5O1bKaYCkF?g-p8(@EJJ73~bnh;}b$E`bAPYT~4n>`>&S6EdBpsr)r zSL)UF6hGVGQg*+5X+L2}Dn@ehyv!63%euB=`SP;yuh7t=5IuIT?t9^@jRH~bqnWv3 zw4TRwAZ%Dq(XnMc2aeuW7{pS|uw|=sx6OjZ;v+%SH@3@Vp**9-9MDD-nv{jr?6BCJ zcE;2+1Ew?Zt{7CYglw*5hX6!Wssq57uVyM81ne#LZ+^}M7JYiWKaCbmW$3D-KEvDT zvT(yquTw*dD5)`X`LTLGdDer^HrJc)a`gIfTgCP`)I)s!o{Fd#EY!n^d@3a_ ztY~U{gv6s#kU+n@*#%F_`sTe5`~7=m4IFDcTq~}g~IWa@_fWV-jDEb8z8sZmh2Oq_UE3j4JKgP&X!Qu*YEQI zk>a}3&qmI+w0DRJyKB*4cuzR0lz>T@QgsN$9(FJ@Raq)VsROQZ84R^jqRqf## zgplVkiejxUSrVgdiUwtOuTX8J69D{pEUTUA>_WsK*Q6jq+@T=0tSjC^ zS=iX3(4(84o;2@%w^tO?W2=8{e>x|K>%3oKqm38o)iPql zQdc(!SwD+zH6re=Sd_@&!h(p@{V}Q_Vm>4*!tG*WWHK#3N5feVc7rjL>$3*+OeIKX z0_T=|Cbh}prvXwV#;41@;C^nM_rjA9qMqSdf>#GP#s3-|9t$2%h5BgeW^cyE$^I}7 zv+YZpnU9T;g7+5@U82BFmyMgcH+@g_JeXTFm8_NBrA|3CU083#gww5_6KLM%B9bS7JhzSMzgi!hSiDGA(Qk$^KSeqrc)-x(02aj zJ&)Pk*^T1BdVHzlNq|aeD)c3jPS#ALiP+dq^!~0D?H(eu4GOn8_|vv9>B%`}2V;P9 z*10hnc{sBwy4S5QLA6oqg^94DzRl4u&XKMT5_^xIxaF~F7QIPK&k3>=S9&8)yX^x6-=d>%9_^j&6V?!22|hwUrEfVH zo<*DFNRknRTx6j1u8*1gl0VZoSB+`22SZrBG6{8Gk1sXzGxd@nCO~a(kB_YTuN5pC z9Xc%g`oH!%%P?M;8qFKlDiu0CXca5cD`cW?FzNL%KF^iweZ-slQ;FOD%%G2Beg{z$ zBRZdspE!knOV~C^Gm?r;LPoZ17yj{)_g?|SaTE|MXsGQ?T9rckqVQS|enKGR;F_zq zZf(V-HNfc6C{dlZc6p;IEWdUq6(IhvQ~;MQEF|AP1pfYj)!x=29Wqm;P#E21EGl0f z)u3nH52#gGB#cRw?Alu2l(I9K>GI(*2$qqAIZ}tf^*-QhfAjq_f(tsQ3lCCS8y}Ax z;&zqtz_%R+&}t8;%Gj|p#H1oCAFxtAt{)VeY;DF?Vx#D_p=b5H7xsU|l_@a}FIgC9 z2avRYlVd>xn4X-a^SZR-1xjkTVQbEPmNI9mS1c+r%IF{Sdv< z02DAzB#c*(4Q?fwHPL>H{)~p8L?MWfIjG!_FEnY84(*K8T5=#L7(VoV{o4=ZevTS? zx2?FCQX=9L3SDy)1|5+1nmu$VQeqj9AJCFYt!u4Jp-Ya9ANeL?Sn{zdSPCH9SLK@NL3>+b~hYyT?o%~Kl_^q$vGw2wp}58u z=SiU_wVWXvUG#em`U)&*`X$Mm%-1hB89N^^355_Cv6JiaW-l2e&8*16AsgH%Fm=u4 zpQU)wSL^;5?O4^zXkbOokVSfXI6eHTG&Xa|feKBFbZ1Iy}=|pH6j`yAYybsQ;q>iERck1-*6W_uU5D&fBAs8SN20 z9%JKPcs|9Wb7?!BK*<+UdNGK52+hxO(@oQ z6^p6FIP-fpJujOG<#Z_xwx}n1{9L$qrUvfy6GM!dkQ!`uSQq{j`z@Gc+w%JBFHU6Q zg!~bz@!TV-5iNckax!6^uZ}?8Ij;>qs!|~}9@mg1=TUd?-p*>7C;m9DtsD*}3*~KR z!t0O6$E-U1MLr#e^R4fhJBoB$Z6bIO(|2|0zs>y+kV>7xtc6?Z2xJIMg15FUisN=b z(eJKy(xpJO)&7#J1G80~J4TS?rbH4ECq*t-LlbDuw$>1gO&PN7W;f)@f zB)*?Y>~c*8%CD*0x*7^9^rW&=-=}?HZ#$_v@b@POqkz&6U$2W=)Q-ZOEB@Cn)V{ z-{kN5iuPlDeJH=m9P}m6 zG2GN$j@CQL0rPkTqvkVwM`FE3H{BX9RElFJ<90lLYtmTjIBnO)aKRA13;Nc_RE%=+ za=Lq4VcFnI5T4VCAX*o@g>`>7IxLps{CY#dUX~Qkkv7Z3z$5T1HltJEcA>0|7QI#c zfFa2ArgfunBO*fSTMgp<(zec$E1Y8NpK@x9Oy_a8<+2^Vvv_#UiEZ=l**u)>-E zV&JGQ;ivPhhgT-{A|>(2Q)8*GA+&!1R;j%Ztb4~(F=-77=~bIGYB0ix7`oZ;$i;M( zDe_fjs|0i08>q6YuOR^4T>rexbKQ(-RxB>HeD?z(w)b)Kwr|<2@gx_IlEV~P(Wbur zMpuGTSzoE1yW#b*uvKplNeotR)=o9OD5z}rsD&ktj-g20jn8ce{cQ=#Rv*(#RYc%e z$9(K<$x3uDmeaPxPfXwytlpT4u}_ss++71h))AzQeML(0Y=fh$@nk6h{0uF0*bBQB zAK`nVCi+fu^fg{j*HV5lr>D84EKEu|Z{CJ>Z`$6rp+NP{*DnCfxoAV#4?3i*j{il6o~AF^HaN6A%hb zFWx{OcetT5C_lHuz3)f|>#}_7jOW*H1TP7vdo)6xk@T5D{F=R}{X%+}3EnU%hlk<& zlT2wrv(ipB+yt-iIF+Yf6_L_~RkU0N3}PbJsOtl9Dk}1338f(Mhi@>VySHL?a|kzv zLn8)B=3(N;pH&lZSu@qas#wYTW$19(->PN0Af3O+9MzjLZ2F^C6wn}iW)Lo+!)7P1 zOcTA|Q7N74O;6fNjKnFs%QE0o#hXZC_>xBKk~8VM5YKhV+U`{s?9teDWW__;`$4~<1r;Xhgl<2Pn9d5iE>(DWEZ+(UNrM#Y(! znO?74$ukisE)?!9jWz5E6}(1N;RcR8JpbZ8XpdmOT_B|~Uc%v!Y*HTRp~vHJ5l zMdOgJ1qS^=4Zn!MqI{6A0gtd7F9MoJ6*1kbGVmX13U&;|5|gjCbyF+bTlCePuHR39 zdpv&r6afF&vMF0*O?fI_e{BMuQ+>ZUnay*gSUJ{K;-*~YURPb`5gSL6V0(Gm9|hYb za(T;bzKYq&)f6G{{eM@gk#pYJ?}3i)9KNHz5>Wn#+IN`nuBqgb&5+ z3Qa^#VonQtdG(%;Z=fsv9DJ7leJ4sUAG)^BKMo;fzw{aHmtR?xzfLEgb-kGB8~zcl z7nQS9t26y++|c3XU~?iSZ!YZS*rE>gv7>{LJsVP!4SU_DBsQaGG}98f1mW~J7PCg# z!MYQ;Av)MobS)?~S9-G4!9~-R4=Nc*;iT6>@D!Yu=yZZ6VS3R&_-=BeTGz6hfWgu* z%98$6VkHs#hfkl0QVo!y2r`SJ4Q)YvRP{b3a)_$1Pv4Vwz^Yd0T)cBxD8%`v(8$t{ z?1;wFV`_2lqiRUz@Bvv0O7;>u`FZotq0T(k=aQF4|FFU*`JA$_=nkhfF>QydVr}1d zSsw|+(=r%{r8C&3)2dkDSCSayD;OYmXZ!>*9SovlU{kchZGk+8uA9#`uf%Ky)$Ev( znv)Z*XX&wAfh2vUBn)cR3Ayx0`K0u)wPffuUBq6fk~I2BVbQV^dcz934b)4sANkB6 zM1_tV)~vFhUcw&*YYl#`)g%Q@?f|*%gIf|u%Z@f=sWS~mm(*TkL4&eNx9cIm8QJ>% zGTBFX+`ni9YkCceXB{gfz z7q6yf0?tor&)KgTDe~myP)dhU9xy4H*onwSXFSx|+PysvK1Ym;C~>GshB3~MiP!5O zsQ^`YlW=MiVKcO$Gvq-RIG-N!)AGurszz|nqFyFOM=?!E-MH|Wfn1OX-L}r@Fq({h zCAV&90JOzT!>O9X8ihb4DMB{IOkvVA>5r(zvjpaMx*2_r=~Urb4hwVKXs1G`Q(qy0 zG{&c)$Mi5hL9pG&7>Jlbp>HP*2xt2Colb(ych1ft9|AcuGTT)X26b0XKb8-LjrVZ2 zi|yt;&c>RliR0GB_p{bj$A7SvsehM|S19d37o0J+bD(4)$)cj_W_cDFUO`+oZTy|^ zw2c|NiKZTh_84ZRNK^^q5*-qtbItLc62n|8R~b*yY01U|Aqs-5j^ZyK#lse0Y$|0( zTqKl;K;jcmud}y;twqWjffNdR%{9BgSvXE*gE=;>@39B+p;dShxDJ9c5=XBs)vKPb zQPqRe!(otU7%b04?HOTXX&dT!do`cEVlw)uR9e?e#5N)wYwPhKF@FcTY^H@+U;fbQ z9ckHBy?>2F*70#)u<^q1mxTVvBTg>D1d}C!vBIGRCPQ3?(4!?36ws<864TN3!@%vK zPv=1J_SM?@!&o+r^C_8CLrFes65OT4h~LkdUl!+@;=L>8ND2YB#aK{o4VNB=GIfrW zY~FN*)pefEcxl2McU|RpskIz^^V{Nu4xCt|O5RZCra zdtKB7?G)PRq3q8bLqYokvz%`#^!!20@JhEO-hmjpaRN{affjU0mwS_Hjw30jZz~U+ z@k%T;H6`WsJp&`#(`&S&7RYwLa)fE6kS@QkufD9GJkyLR#g+Ox@R-JK0?eOp%au4GD^{5NTslk>+>!7~j^i{z}&< zPtgn2Mc%X%9y6yymXwKx@7ed=QJ5s+*d8nFDViEvhfaqcs2<&Ji$nIIAWkF*z21op z4SN%@NNvH>_FAP*XWgpue5!T=#pa4p+L^Z@ zi+yKpg0)zQaiiR|j<6&JZLmh2o#4`q#YjfYj5FphdhZvjZ|q14jTTfZLRi5>Eie+C z<=|bq^JH{^Gzq?;8)1x6HysPlr_rvDTM=n^%cPBAFUnWjs&y%tI}STK!bY`DPY$br zA$s;lQ9q3Iv4^;lNQhEmrHAoL;?QCA(phZw{5gzu0$uga*WM59Vvo5_mUVGGp9|)x z;%v_qwl47KHp;voxQXNA0qx-6`#zOCPiLptmSW+I4&m1vNaaRi60i~}4TFxO%AVK6 z`9NO48z(dn+N9?lbTGiSE7(Z)1SVxY+@8AWfP72&?LtR3S` z4`+eD_##JTO`^G1(Z@ksn@4-O5z}s(^>MQyy9rsUMNCQ#4fwN!kJUutss*<*AC%7V zsAl~pQu*XOZ0FYHxwEz6UOe?@ehY*e*D^CfBfGyB=tdOJU(@xxv-NaH~V)AR4Sh@%vR{q z(4tqZ(_PvYh>sHZPl3zWTHw?>T?QOPFyJ8C4ptQZBQqrkxI6$?_gL;8e_soUs+|hGnSZA=K(KYa zw?ImW;6&hK{4NX#cXH-a^t%=YJvIu8b>F0O-$s8`%1dp)m6j239-!y%5)C__p=&L=GJQP>$-I zAAX@L*QKM1<)uYJn$W5eqxn4gdq7`_`GomX-o%Gyi7zfJv=&=jZ*dsaeZ>W!=lU8{9cF+0uPVojdWlOr@ToBwH=JgQAYdkISO8b$N#2P{F_$sZ|=(f(gdM3 zIklmaEUATmoLTTlBc;*H>D3*Tr;LFG2c*Y6@e0K7`SPWu7)VWv1~0%eQqq}oN5>U- z3JoIurGhA$y4LU5g}&DwAhDQFKrzfQzzE64^@sD1)PEjDQ2qcO`FCC&VCZP7 z1p!U?<@{@0D@`?#JpV7<`d(8MYG%aJObl|!z|@_A4o()qn40j!pT?_Me-RSSQ$p!Vnh zTL90cJU8Y}!kl$obH9^{e&_b7(YtHF(ElG-=>u*7zp5SNJrln@gFeXH75;yEAVPCJ z^4_!><#&0Hk?cY5adn{jiZ+&TuSwrd1-v_OcX9QBNpfwxDBGEdq1C_a=zQV1eAypAwwe1?Wfe5MDII9c=kIw2<)?8H7%7-(=q>WR`A3hgP z|ETh3!z4WNMw$r#iM3T0Bpd?e)#oQzKc5~`16c%byxofoNp!A+^*&!?AjUPr9Ch+u z!~hvy!1%n|y#h&fiGa$AFcaJP*}B$>?W#TECaKcU!G>a5D&=yzripu60SA~fC951# zg`w<}Y0ei!udp&uUuE&C+X1K(ZfX;Z9VZhcL(U|IF7hOizpr8Jbh-Hj zTtFDPC{cMLltl=k9q-;eKeUUM*}S?L(~Ngyt7+2@W0qaFtKKT^Ks7eI+9bFA7BoyB z%z>0jw9fVE^8-!1=(g+OEoIc1^k+VoUxsa-qCWif@pwo=q{WtsvgTq<8So~cC2)Ok z$MS^>T#TslvvXyS>hrZc-2LTB-?5H<72auihv`RyZ#{6$1oLKzgS?<(_R_DjHe@&$ zxhwRaD--Nr9X6Aab?%l?V%kROq{Qmd&v*-Bza)bC`y=#;&upac>1KUx4eP@I9%X2X zRPr-NrAhL%n@z%-1(0I24Uc?$LPCkoQJErZY>D@J@9Ej*k($wEp(>9Vb+ygS*-?>v z&WCBWRh;I8`DlZ z_*fhtFzp^N^Z!;(u?P>GZRfvX?eM^P3VLkgwZCQFZ zk>!2JvpqeAue+HfX>z<>L{m|9oUA0@n}nlztHnmot`{t5)k&#VM2&<^UqM+ih@Msc zKIGMB@w$MG572Mk?V`8f4+tDtZkM4d zbpcnKW^Vd0#)ka8I@qh#i!L**FV$kl$&qUs!>*Ll>>gwI__!hwe zcz?hysbum5zB}n$piPah77J$3`p)A5U;6eFFQ)=ppiTv4RS?I2Q|uF7DmSv zAXOlgLV;kWHP{+EXVXvg4m8ucROR%RF&J#0vR_^gD#P}xUKSi0PaK?dvh#oOG(q|Ix>+4VZW1>A;T=d}MtLMy@FS~E6tHKvh=eyqvj+VV0v$h0%+@DK4A>jU!y{~b8fj5KT@){u zZhX=G7)J>8%-U)u4KJ7Hop<+Q(cSR|4+F<5kz(GHu30>~po|$*Dk*j{g0J;q7w|D0nquzTh9gc17q7eA`m?ogx(-OhuRZNBKSzXV` z*BJ9^p|n|lT>K3 zUNWXb<-L@J_^t8#@if9L1gNGnJ?>39lole9XKhyzj0dth@WC#RpuUq#6*d)iNtW zKXcba7sWILYX=%ZZ31s8N$*@h=wbfUAXA}iH9o9evS3r&drXNyAwN0hN`WFR+N+K3 zQ}e2I)AhvquE_F1!+HY^r*iqD{6K+?*1CXwD)g8{x|x2+@@)Usp|>3m{B$RZ{0EkU zbJRvTJQAq*7GUO22rha~ zoJBd|oxyEMN!a`L9lI>Cf+g}YB6s#HA9TpGhwyFb$K`VZ8uOhzzWZNr&5S);xWQBL zFHPZFToA#pM;ab4;hOmb&MbL8)Qz3cYZ&6Z$ibXg9^aa(EhsX3$?!RB zTIF8bbBI9OU{4Ek93>^SDz80(E*2iWG?n!#RySuIOsu5HBJk%zwT2B9P;mjo1m?k+ zmMNsknOl_^&#-5)pP7DAFSPjtjy0g-TIM0{tX0!Ds>)VBe;qyR9}TDP zj5WEJq^jJ4+wJNHbr6Gr9lzT(;(vceVIVeTk>X@X2q9i2uSyN?2JChtmHys22L0WO zZC8UT*;*}E*Xy1-YbT+k&WT)4Cwx8dq|{Hqd+0k8&BQk5KFDHXXAikXlhQT{$Wnm| zM2}IF?SjjajX*QY%{98WbLfhp8O(j#0%$TrMHc3~^j$A0V~{bhd}vb3v9j7{>w*H) z!rvUF(&X%0nvLGu;sj9pM#-F9Z(;3Tm0}_9l{suDOLx6v9kx>=Bd0$bn~>wbw>lwQ z!0Hg+!a1SvK^3uLt_Iu@IzWzgNW*56GVy-7SAXjg4=IQoXCId{%m4G<20veG@niIR z1{q?Ro3q~nK7p*`6i(i~i3RQ*6A@`mJPIhiYfK^E7i3=&X`NAUn*__<>ojoB5jBi% z=ixi0d$R_poSzg=!|1LelPf!3-`jV<|8WD#=+r%p>Yp7xgJ>yNQ7ILj=YNmy&o3SX zfTnihlaBsphn+=%8@!p>1ttHOFF!sMKuow($;JNJVIC6TM#}KWnBqP01xA_r7+3;= z_mL$3>~IQXS9;h_Veh}o8^!UP`-*mNwC3-jl4?w1w+YI*M|o9&)_r@cipCJV6Jzqm zwp^kVUfdffmNk@xDeii$*WA2RgWEHoM?c}Q@F^TeaE%AFBQm=L<1(vs^A6c zT<^A5L|XQ-)|bXk+S)(F3JXmYGnKc?q66+aTz<`(&lVD+tyHqu#_{`-a}_?jf6{t& z@N`~C^j$(c9+-fNrXiZ`%5U&Z6~>)8X2W_I@Mgd;j;(W5Rl)Elylyf1ho@4oE9}%% zjpdd#OAT?!$;JK$(v%p7(cK0ud+uB>Z3OO2EHHDT2!#|Gmj>nNAtBK_$KB@ynNiGs z5c|55Q*U4M(P%s2(HNzT(48OgL0^#Zi7l3#Z{ARTT@fM!By5PVWe?d{A-A$by7JJr z{bL0zLf6;2gmBBd0txHO*Ma2{>7iGh^?oni>qz%v*Z-4NQ^p6$dyNA>@riWz97Njm z8ZEy2d&u`x4PcqB!)4g-Ee#O9V95YC1THk0|3f-AVt}dqAD;4QF^os?$$yC21qra7 zXepx5?o2f#MDln6++fQ;J<;;cJ}td<|ZNyQiZ}XD-ZH$CK`D*@Xgl-Te1mlN-X_q@;o-86TXt zF+MCVKkF(F<1xjw1~YkJ(khskxG*MV>fDoQHW}zF($3w9tK-jGN7-{q@NEw-psD^; z!`$(A)UYn>*O;wnlLKU`~iVq?H!cnr8yB);)tbb zFZz1z!8n zcl>{vNpW|6^tdHeaPyN~4*@{A+JCjbG~wF8O4~@kKD?*pJ^0DK$4!5ZLi!WN`M*gEQbV!Wnot?q+Pgkh< z1q23oTm4b_pN)k;0pm>n8Tmu#o(uwAV0#PkW8f4d?gl@9c#qP6k7$pc9DYH5Pj-Or z_(HHI)WuxG|7Z*W7-wj!tPJ6Q%qJ@R3QCCyGc}a2V5)r4biuya^u)&3*=pPF(#fjZ z5S_ew6X5*`S=pp>xheCvXMxNr)R#*a&neO8=H1>DsTWLL`%2}%rzljnjjI+iDMg2 zon;Gv_}z3|X45u0HpKI|n01bfL0ZSR9 z?5U0RI~BF*;`P8UR~;Q$E>1_C$u@46qfdGT9-N3~$_x!8vm2ri@Kk8Hx)`XS>L|QG z1&j6Tm8rdo*`60YFS@lrds#kLSU1jJHhC!KR&x>oVsMJuT3J7GxV+?b9qDc!@)8;} z27ye3)WO}~&SJ0o_Z!Q{$rTF5YH7h-*>dt}#bh|3-*VIZ8SuvJR|pqx9;ISApPj`O zEO93pe2I^XFAu~V$SC7IJNU6uU7^fxK7=3~i0$1wF(F(>yR4J$I^&7Bt_H_W8t}5# zI?MZsH*SGDI{oElF57{UlTSw&6tYe;p|!YL!O(R*dY#F^HW z_n;*oKVW;Ha`&kV)cD)j8}bX&cYUirTRQJV_qARQDoo_PxynOK1`w{PnH{FOO5&kf zA$}%ydeeF5Yj$W&A&@kaO!IdHTL5KEuUm07bT#d8y&Sc<+`HtgEUq>_e=|U%!BwSS zVLivpSvJPHwML`#44gp$&0eYTAGKh`#Qc z2l-*6hO!!>26>Pu)}F8E`0u^2&;{9`rJ<&`Awtr^^!5i=acVRfD2tZDVlOo)W3SvE zjrWEo8O-)I`<5#3#nyodY7i;Lab3^PNAc6bu5V6mbTGa3rBaF`$ZP{s8#)9(i?EKS zl+5k@@YivAesm?cBzjTU`coo!zW$_)o(LJh+8+}3j(h~e4f;bRM-RKoT2my&B~O(h zc%LR|5KO$Hs!}zZOqw7gRYI!k-cbFmHhg^fZW;R)v5&~;pZx)|)15wZM#px3_pqCT zaKy5Uh)LDAGnI07j7PaKxn(wDvo8m&QZ46#l1E&*!rld%Cj98Ati#5Se#phDslo#N zo!i;9nQCN*W5XP7@fQ8+90S4@9#urX*ihY1=Sc&6E_g)sr%#1-YAw&}A^2nZXyo>7 zS{<1h2-_nHDp-DKQ1c0h6FB17Fp2olWEjP)@Ceu+9JrrAUKUajpH4nb8HJ`r9;ijj z(ev90_gDl}7#rT8MJM@E{2RSJ5`>ZG1`_oZj?>h>=;7DZ3|ZSvMLMSm{@Vm2{-zPM z8U@u@X%%$J>?5EhdKlt&A2{gYBzSewCZ=fHnSDl;``c<TE)F7o%~+@eqk~ElpN7 zBRYfA0+)h~USn(e4tg#x*LIpUHfpI7+aqd!-Urb9ibpHOMb*T7!AM@hE|k{ z(90YHd!<9#)iLHfG(}c-w5UhA5TIH&xXWCC*AhQ`C&=rc=I=>2ww*no6{)23e%9{e z7G=&;Mg^n{TMDVGrk}C+UuRT=ZC@L-tE##hHnqNs9&5EKo*2>=`_iS~+Gw?_lc`)G zOBOnLGDvfd^DP@OkOl#4rN62ymNm&*{rQlCxRfC{)b|0eYxsp6jW2y~6cfxl-{1O} zP8To&zB?X`+vWzD>E9Rg2)C!|=Jbmkt;nJ_ zs_N|-c!?*Y+5Vxuw%$}rczXhccQ*Ll)V{@~k8KCRV-qO$v{j;8&3Qy!ie>A9? zb&2W-_Bc}(;t@{!i*d};<&O!4d3XIsk8}Zupm626IN<=KgW4OyeHD=1Lx6N3u0w2? z$5SpNkJrYbkpA?Eu@F0hZc|cAqgfMX*^xU7!K|N%OMOse5BGD!ZrwC@HAQEwPE^Hp${p@A1wR3XWm_~d zshyB!oc;D%B%X+Vki&)%&d6Asf%L4Aix#_*8#${?XST*2$tZ_DO&LPo{qAd|iSE6b zN_m|hv;EFJjRDqflhr`1$aap@Z1FrCF<)`LN<+hUT6;qLdeH5>1xB$RW4@{3T!+iJ ziPzVBX`2p>+CY2;GmKxC{Pi+HkXbG5w#8t31X;)>LC`FSVuf6{X7A^-Q)w2~P?9)sm*LnLLV28PckzmL#n>4i95$Z8fKLO|JNvbwg$U`Iu!ecIk6wNP5$YWmRS&t(6kdcRcQx}OfQ+)K4ju`I__TcBa_?1vYeS)ys4Q_?oN}Cy z)Ip9GAq`-HHBs{1sIy)SQhDmc?T&LQxuX6Fy%{hAQ}l4H$73ktMQWB}`VDg%aj2^Xf!1A7$*+o?&1kt+g^c zTFesdcM~y+V-6(E4GsIFS#?OP6TU$0r>M3WUM=JNAL$<7m&Zd9FxB(PWk>6dfkWyh zcI(tsR8E|;=d1*hb?UUvK3mW%IO`%D%roz#QHIax0)MP7zW4G$bJ=hUT9GC&Gb5-O51=W3)jm_z%y}9~i7uV0mnDn!t3eGNj9Fb;BQ<4_U z0#A*Z>a8W;=q{|uh#9N{fCGA;mU$RchvE{vyx(}^oC;MAA+gkFUAMUowM6%ypN|E9 z^}G}HHuFL3W>=@BeUc;LB_4tL{+r&Jo-fl=R-?%WX+9jyD`ot&j%DW&y=gG^%yN zY@Rrnz|U!xY>m&0+|MdV1ur zJ!jE&_7?+oanVp<5RBkfhS&-dmE&f^l`VQJJgeRO%xkC9*PhjMHi6=U;;t4+ z_(dAGJKEC);Y*ts`Nl!EJvKfXsl3-2Mh0GE0|148fRuGQ!Qq)G$28|lQ{dbX zY7GPv^RK;3X0P`2163U>B=Q#4^d`MFzVAkQ*i|-1I58hOo7z??Ft6T4^6@MnB760) zV^5ZjzPPWgbC5_B8N-4J_Urj~)9j$R?(1uVl5I(JO7R%l#NEd7<-{?%!skI04eE4j zne$RfTtJ=1nIdO`30>C{VlUV0Q5zJxk;XHhN71~G^OjqWR`D;5Op zoe~ILT?IZNL~4IQ?PF*GrfEz6ngQDUzv1pIN$_X%kH)yu!vak+_G=~IYyT`L$-67= zfO>I&tkuoaQv!Erbu*ftf6!MG5~;WN&35B*A$K;(pY&ccDu5^9dHQ~R0l`-8ewz6q zaL%XXt>01kzdr$H;Q#TA`T52ksFy1jcx(i7+=o3MlK_aIPt6|xwCr^o#2Kn~zWmtm zzRRKJW5Jw)!}EJ24S*k_u2)(Va&BB-|F|U6VtbI{KJ+;ptgTbV^`PNCIQn*B;ZFz? zWiCyb4Wfa4MXClX$w&noR<^c$%`jB;Y{tveFw!vRC~Do}vcY|BoL<8we^2|gn{ zaLM>kp3`ly-?B7p2h569t>X2OIe2`GGE9@<{8F z7-bCQT*Brid;%6>h4u@xxFC!jIPMgPLPnY*W@YcY7LBz@cQY_UbAiHM_gPGrI|v$ zyiuxqP;DIr#a-G@(;QAWXh;a#z{dz-m4|~(Dr-LZf8@N#&-(sl*6zt406YIn68=lw z{x`1sUl#hm66!0L)L$(LL+shhiNPU}#z1a`plEwlZoywv zf)_v0$QzuX!mpUGelD%%78IBv`23}@@kF3xBbIHAT`$s4u5ZtpZtW71<4aVD&7y*9 zK_A%@$R*-O%f|9`dfJqvvOon?8WKjJcs;gCq{C}!ueN+py!~SK&_~6QGZGWvFdIZ$ znai03z2&5D7gwF=Jr&Pm`fMPA$ z7I(McZpGaS6nBRw_wSbfGm}@z%z1I<MLgzc!HaN-@Rpea?La{Li{CF((jC#h^PK$JHJW zq!m|G?rjYPiR`}}ttNx+RvrQcX`Jzp^zPa&`X<zm*g=U1J!v^Ci-v_Ufg3F-)NU%EEOcCdi_%nUvsx0qd@l-PaV)IXk| z4FBV^3XS-OscTkm74DpAXldCrcAER^2{%W+6maD;iv%4trPY|vtvKm6;|_XIgy7j+Fyn_M3AO2YC*E z7iWi{L&lQuGzR^PB1{Qr3A7|h^4~^t$yl!Bn$gpvG15=ld&$Oj5kk4Uc{)K>?ssfw zvp+5|umXN|!FN=O%~zE_L|T6LHg@hfTH&e7U#HuEH}R-D;Sx%;vZi8rjVVl4<)7Fv z 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