From 2fd8c643af1327f214eb70aef892e6514b0f62a3 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Sat, 22 Jul 2023 17:27:08 +0100 Subject: [PATCH 01/18] UI for html/url --- .../api/converters/ConvertHtmlToPDF.java | 2 +- .../web/ConverterWebController.java | 190 ++++++++++-------- .../templates/convert/html-to-pdf.html | 29 +++ .../templates/convert/pdf-to-html.html | 58 +++--- .../templates/convert/url-to-pdf.html | 29 +++ 5 files changed, 190 insertions(+), 118 deletions(-) create mode 100644 src/main/resources/templates/convert/html-to-pdf.html create mode 100644 src/main/resources/templates/convert/url-to-pdf.html diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java index edaf3213..d30d01dd 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java @@ -24,7 +24,7 @@ import stirling.software.SPDF.utils.WebResponseUtils; public class ConvertHtmlToPDF { - @PostMapping(consumes = "multipart/form-data", value = "/convert-to-pdf") + @PostMapping(consumes = "multipart/form-data", value = "/html-to-pdf") @Operation( summary = "Convert an HTML or ZIP (containing HTML and CSS) to PDF", description = "This endpoint takes an HTML or ZIP file input and converts it to a PDF format." diff --git a/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java b/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java index e8c1fa76..90429f1a 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java @@ -1,88 +1,102 @@ -package stirling.software.SPDF.controller.web; - -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.servlet.ModelAndView; - -import io.swagger.v3.oas.annotations.Hidden; -import io.swagger.v3.oas.annotations.tags.Tag; - -@Controller -@Tag(name = "Convert", description = "Convert APIs") -public class ConverterWebController { - - @GetMapping("/img-to-pdf") - @Hidden - public String convertImgToPdfForm(Model model) { - model.addAttribute("currentPage", "img-to-pdf"); - return "convert/img-to-pdf"; - } - - - @GetMapping("/pdf-to-img") - @Hidden - public String pdfToimgForm(Model model) { - model.addAttribute("currentPage", "pdf-to-img"); - return "convert/pdf-to-img"; - } - - @GetMapping("/file-to-pdf") - @Hidden - public String convertToPdfForm(Model model) { - model.addAttribute("currentPage", "file-to-pdf"); - return "convert/file-to-pdf"; - } - - - - //PDF TO...... - - @GetMapping("/pdf-to-html") - @Hidden - public ModelAndView pdfToHTML() { - ModelAndView modelAndView = new ModelAndView("convert/pdf-to-html"); - modelAndView.addObject("currentPage", "pdf-to-html"); - return modelAndView; - } - - @GetMapping("/pdf-to-presentation") - @Hidden - public ModelAndView pdfToPresentation() { - ModelAndView modelAndView = new ModelAndView("convert/pdf-to-presentation"); - modelAndView.addObject("currentPage", "pdf-to-presentation"); - return modelAndView; - } - - @GetMapping("/pdf-to-text") - @Hidden - public ModelAndView pdfToText() { - ModelAndView modelAndView = new ModelAndView("convert/pdf-to-text"); - modelAndView.addObject("currentPage", "pdf-to-text"); - return modelAndView; - } - - @GetMapping("/pdf-to-word") - @Hidden - public ModelAndView pdfToWord() { - ModelAndView modelAndView = new ModelAndView("convert/pdf-to-word"); - modelAndView.addObject("currentPage", "pdf-to-word"); - return modelAndView; - } - - @GetMapping("/pdf-to-xml") - @Hidden - public ModelAndView pdfToXML() { - ModelAndView modelAndView = new ModelAndView("convert/pdf-to-xml"); - modelAndView.addObject("currentPage", "pdf-to-xml"); - return modelAndView; - } - - - @GetMapping("/pdf-to-pdfa") - @Hidden - public String pdfToPdfAForm(Model model) { - model.addAttribute("currentPage", "pdf-to-pdfa"); - return "convert/pdf-to-pdfa"; - } -} +package stirling.software.SPDF.controller.web; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.servlet.ModelAndView; + +import io.swagger.v3.oas.annotations.Hidden; +import io.swagger.v3.oas.annotations.tags.Tag; + +@Controller +@Tag(name = "Convert", description = "Convert APIs") +public class ConverterWebController { + + @GetMapping("/img-to-pdf") + @Hidden + public String convertImgToPdfForm(Model model) { + model.addAttribute("currentPage", "img-to-pdf"); + return "convert/img-to-pdf"; + } + + @GetMapping("/html-to-pdf") + @Hidden + public String convertHTMLToPdfForm(Model model) { + model.addAttribute("currentPage", "html-to-pdf"); + return "convert/html-to-pdf"; + } + + @GetMapping("/url-to-pdf") + @Hidden + public String convertURLToPdfForm(Model model) { + model.addAttribute("currentPage", "url-to-pdf"); + return "convert/url-to-pdf"; + } + + + @GetMapping("/pdf-to-img") + @Hidden + public String pdfToimgForm(Model model) { + model.addAttribute("currentPage", "pdf-to-img"); + return "convert/pdf-to-img"; + } + + @GetMapping("/file-to-pdf") + @Hidden + public String convertToPdfForm(Model model) { + model.addAttribute("currentPage", "file-to-pdf"); + return "convert/file-to-pdf"; + } + + + + //PDF TO...... + + @GetMapping("/pdf-to-html") + @Hidden + public ModelAndView pdfToHTML() { + ModelAndView modelAndView = new ModelAndView("convert/pdf-to-html"); + modelAndView.addObject("currentPage", "pdf-to-html"); + return modelAndView; + } + + @GetMapping("/pdf-to-presentation") + @Hidden + public ModelAndView pdfToPresentation() { + ModelAndView modelAndView = new ModelAndView("convert/pdf-to-presentation"); + modelAndView.addObject("currentPage", "pdf-to-presentation"); + return modelAndView; + } + + @GetMapping("/pdf-to-text") + @Hidden + public ModelAndView pdfToText() { + ModelAndView modelAndView = new ModelAndView("convert/pdf-to-text"); + modelAndView.addObject("currentPage", "pdf-to-text"); + return modelAndView; + } + + @GetMapping("/pdf-to-word") + @Hidden + public ModelAndView pdfToWord() { + ModelAndView modelAndView = new ModelAndView("convert/pdf-to-word"); + modelAndView.addObject("currentPage", "pdf-to-word"); + return modelAndView; + } + + @GetMapping("/pdf-to-xml") + @Hidden + public ModelAndView pdfToXML() { + ModelAndView modelAndView = new ModelAndView("convert/pdf-to-xml"); + modelAndView.addObject("currentPage", "pdf-to-xml"); + return modelAndView; + } + + + @GetMapping("/pdf-to-pdfa") + @Hidden + public String pdfToPdfAForm(Model model) { + model.addAttribute("currentPage", "pdf-to-pdfa"); + return "convert/pdf-to-pdfa"; + } +} diff --git a/src/main/resources/templates/convert/html-to-pdf.html b/src/main/resources/templates/convert/html-to-pdf.html new file mode 100644 index 00000000..171a610a --- /dev/null +++ b/src/main/resources/templates/convert/html-to-pdf.html @@ -0,0 +1,29 @@ + + + + + + +
+
+
+

+
+
+
+

+
+
+
+ + +
+

+
+
+
+
+
+
+ + diff --git a/src/main/resources/templates/convert/pdf-to-html.html b/src/main/resources/templates/convert/pdf-to-html.html index a67329ac..16e0a39b 100644 --- a/src/main/resources/templates/convert/pdf-to-html.html +++ b/src/main/resources/templates/convert/pdf-to-html.html @@ -1,29 +1,29 @@ - - - - - - -
-
-
-

-
-
-
-

-
-
-
- - -
-

-
-
-
-
-
-
- - + + + + + + +
+
+
+

+
+
+
+

+
+
+
+ + +
+

+
+
+
+
+
+
+ + diff --git a/src/main/resources/templates/convert/url-to-pdf.html b/src/main/resources/templates/convert/url-to-pdf.html new file mode 100644 index 00000000..fb59b4ba --- /dev/null +++ b/src/main/resources/templates/convert/url-to-pdf.html @@ -0,0 +1,29 @@ + + + + + + +
+
+
+

+
+
+
+

+
+ +
+ + +
+

+
+
+
+
+
+
+ + From 116d103119321d06f494d34d88fe9a2d418e85dc Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Sun, 23 Jul 2023 00:03:25 +0100 Subject: [PATCH 02/18] html to pdf --- Dockerfile | 2 +- .../SPDF/config/EndpointConfiguration.java | 11 +- .../api/converters/ConvertHtmlToPDF.java | 122 +++++++++++------- .../api/converters/ConvertWebsiteToPDF.java | 41 +++--- src/main/resources/messages_en_GB.properties | 6 + src/main/resources/static/images/html.svg | 3 + src/main/resources/static/images/url.svg | 4 + .../resources/templates/fragments/navbar.html | 3 + src/main/resources/templates/home.html | 11 +- 9 files changed, 129 insertions(+), 74 deletions(-) create mode 100644 src/main/resources/static/images/html.svg create mode 100644 src/main/resources/static/images/url.svg diff --git a/Dockerfile b/Dockerfile index b1d91a48..c98a21c8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build jbig2enc in a separate stage -FROM frooodle/stirling-pdf-base:latest +FROM frooodle/stirling-pdf-base:beta4 # Create scripts folder and copy local scripts RUN mkdir /scripts diff --git a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java index 24f2822d..322de0e2 100644 --- a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java @@ -83,7 +83,9 @@ public class EndpointConfiguration { addEndpointToGroup("Convert", "pdf-to-text"); addEndpointToGroup("Convert", "pdf-to-html"); addEndpointToGroup("Convert", "pdf-to-xml"); - + addEndpointToGroup("Convert", "html-to-pdf"); + addEndpointToGroup("Convert", "url-to-pdf"); + // Adding endpoints to "Security" group addEndpointToGroup("Security", "add-password"); addEndpointToGroup("Security", "remove-password"); @@ -125,12 +127,15 @@ public class EndpointConfiguration { addEndpointToGroup("CLI", "pdf-to-html"); addEndpointToGroup("CLI", "pdf-to-xml"); addEndpointToGroup("CLI", "ocr-pdf"); + addEndpointToGroup("CLI", "html-to-pdf"); + addEndpointToGroup("CLI", "url-to-pdf"); + //python addEndpointToGroup("Python", "extract-image-scans"); addEndpointToGroup("Python", "remove-blanks"); - - + addEndpointToGroup("Python", "html-to-pdf"); + addEndpointToGroup("Python", "url-to-pdf"); //openCV addEndpointToGroup("OpenCV", "extract-image-scans"); diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java index d30d01dd..2d792ee3 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java @@ -4,9 +4,13 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; -import java.util.*; + import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestPart; @@ -40,61 +44,83 @@ public class ConvertHtmlToPDF { if (originalFilename == null || (!originalFilename.endsWith(".html") && !originalFilename.endsWith(".zip"))) { throw new IllegalArgumentException("File must be either .html or .zip format."); } - Path tempOutputFile = Files.createTempFile("output_", ".pdf"); - Path tempInputFile; - - if (originalFilename.endsWith(".html")) { - tempInputFile = Files.createTempFile("input_", ".html"); - Files.write(tempInputFile, fileInput.getBytes()); - } else { - tempInputFile = unzipAndGetMainHtml(fileInput); + Path tempInputFile = null; + byte[] pdfBytes; + try { + if (originalFilename.endsWith(".html")) { + tempInputFile = Files.createTempFile("input_", ".html"); + Files.write(tempInputFile, fileInput.getBytes()); + } else { + tempInputFile = unzipAndGetMainHtml(fileInput); + } + + List command = new ArrayList<>(); + command.add("weasyprint"); + command.add(tempInputFile.toString()); + command.add(tempOutputFile.toString()); + int returnCode = 0; + if (originalFilename.endsWith(".zip")) { + returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT) + .runCommandWithOutputHandling(command, tempInputFile.getParent().toFile()); + } else { + + returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT) + .runCommandWithOutputHandling(command); + } + + pdfBytes = Files.readAllBytes(tempOutputFile); + } finally { + // Clean up temporary files + Files.delete(tempOutputFile); + Files.delete(tempInputFile); + + if (originalFilename.endsWith(".zip")) { + GeneralUtils.deleteDirectory(tempInputFile.getParent()); + } } - - List command = new ArrayList<>(); - command.add("weasyprint"); - command.add(tempInputFile.toString()); - command.add(tempOutputFile.toString()); - int returnCode = 0; - if (originalFilename.endsWith(".zip")) { - returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT) - .runCommandWithOutputHandling(command, tempInputFile.getParent().toFile()); - } else { - - returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT) - .runCommandWithOutputHandling(command); - } - - byte[] pdfBytes = Files.readAllBytes(tempOutputFile); - - // Clean up temporary files - Files.delete(tempOutputFile); - Files.delete(tempInputFile); - if (originalFilename.endsWith(".zip")) { - GeneralUtils.deleteDirectory(tempInputFile.getParent()); - } - String outputFilename = originalFilename.replaceFirst("[.][^.]+$", "") + ".pdf"; // Remove file extension and append .pdf return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); } - private Path unzipAndGetMainHtml(MultipartFile zipFile) throws IOException { - Path tempDirectory = Files.createTempDirectory("unzipped_"); - try (ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(zipFile.getBytes()))) { - ZipEntry entry = zipIn.getNextEntry(); - while (entry != null) { - Path filePath = tempDirectory.resolve(entry.getName()); - if (!entry.isDirectory()) { - Files.copy(zipIn, filePath); - } - zipIn.closeEntry(); - entry = zipIn.getNextEntry(); - } - } - return tempDirectory.resolve("index.html"); - } + private Path unzipAndGetMainHtml(MultipartFile zipFile) throws IOException { + Path tempDirectory = Files.createTempDirectory("unzipped_"); + try (ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(zipFile.getBytes()))) { + ZipEntry entry = zipIn.getNextEntry(); + while (entry != null) { + Path filePath = tempDirectory.resolve(entry.getName()); + if (entry.isDirectory()) { + Files.createDirectories(filePath); // Explicitly create the directory structure + } else { + Files.createDirectories(filePath.getParent()); // Create parent directories if they don't exist + Files.copy(zipIn, filePath); + } + zipIn.closeEntry(); + entry = zipIn.getNextEntry(); + } + } + + //search for the main HTML file. + try (Stream walk = Files.walk(tempDirectory)) { + List htmlFiles = walk.filter(file -> file.toString().endsWith(".html")) + .collect(Collectors.toList()); + + if (htmlFiles.isEmpty()) { + throw new IOException("No HTML files found in the unzipped directory."); + } + + // Prioritize 'index.html' if it exists, otherwise use the first .html file + for (Path htmlFile : htmlFiles) { + if (htmlFile.getFileName().toString().equals("index.html")) { + return htmlFile; + } + } + + return htmlFiles.get(0); + } + } diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java index f69adbd1..9167a6e4 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java @@ -34,27 +34,30 @@ public class ConvertWebsiteToPDF { String URL) throws IOException, InterruptedException { // Validate the URL format - if(!URL.matches("^https?://.*") && GeneralUtils.isValidURL(URL)) { + if(!URL.matches("^https?://.*") || !GeneralUtils.isValidURL(URL)) { throw new IllegalArgumentException("Invalid URL format provided."); } - - // Prepare the output file path - Path tempOutputFile = Files.createTempFile("output_", ".pdf"); - - // Prepare the OCRmyPDF command - List command = new ArrayList<>(); - command.add("weasyprint"); - command.add(URL); - command.add(tempOutputFile.toString()); - - int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT).runCommandWithOutputHandling(command); - - // Read the optimized PDF file - byte[] pdfBytes = Files.readAllBytes(tempOutputFile); - - // Clean up the temporary files - Files.delete(tempOutputFile); - + Path tempOutputFile = null; + byte[] pdfBytes; + try { + // Prepare the output file path + tempOutputFile = Files.createTempFile("output_", ".pdf"); + + // Prepare the OCRmyPDF command + List command = new ArrayList<>(); + command.add("weasyprint"); + command.add(URL); + command.add(tempOutputFile.toString()); + + int returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.WEASYPRINT).runCommandWithOutputHandling(command); + + // Read the optimized PDF file + pdfBytes = Files.readAllBytes(tempOutputFile); + } + finally { + // Clean up the temporary files + Files.delete(tempOutputFile); + } // Convert URL to a safe filename String outputFilename = convertURLToFileName(URL); diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 98ab5d03..9f99a0b6 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -183,6 +183,12 @@ home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitte home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF + +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF + ########################### # # diff --git a/src/main/resources/static/images/html.svg b/src/main/resources/static/images/html.svg new file mode 100644 index 00000000..35d72185 --- /dev/null +++ b/src/main/resources/static/images/html.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/main/resources/static/images/url.svg b/src/main/resources/static/images/url.svg new file mode 100644 index 00000000..df35bc8a --- /dev/null +++ b/src/main/resources/static/images/url.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/templates/fragments/navbar.html b/src/main/resources/templates/fragments/navbar.html index 804a442e..024b7bc3 100644 --- a/src/main/resources/templates/fragments/navbar.html +++ b/src/main/resources/templates/fragments/navbar.html @@ -71,6 +71,9 @@
+
+
+
diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html index 6d0d2fcf..8cbb6ca7 100644 --- a/src/main/resources/templates/home.html +++ b/src/main/resources/templates/home.html @@ -34,6 +34,10 @@
+
+
+ +
@@ -73,12 +77,13 @@
-
+
-
-
+ +
+
From 5605d53a5fa3e26ceb3e739c9d2639276e47d022 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Sun, 23 Jul 2023 13:05:47 +0100 Subject: [PATCH 03/18] Update messages_en_GB.properties --- src/main/resources/messages_en_GB.properties | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 9f99a0b6..c19f9bf9 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -63,7 +63,7 @@ home.desc=Your locally hosted one-stop-shop for all your PDF needs. home.multiTool.title=PDF Multi Tool home.multiTool.desc=Merge, Rotate, Rearrange, and Remove pages -multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move home.merge.title=Merge home.merge.desc=Easily merge multiple PDFs into one. @@ -71,33 +71,46 @@ merge.tags=merge,Page operations,Back end,server side home.split.title=Split home.split.desc=Split PDFs into multiple documents +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Rotate home.rotate.desc=Easily rotate your PDFs. +rotate.tags=server side + home.imageToPdf.title=Image to PDF home.imageToPdf.desc=Convert a image (PNG, JPEG, GIF) to PDF. +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF to Image home.pdfToImage.desc=Convert a PDF to a image. (PNG, JPEG, GIF) +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Organise home.pdfOrganiser.desc=Remove/Rearrange pages in any order +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Add image home.addImage.desc=Adds a image onto a set location on the PDF +addImage.tags=img,jpg,picture,photo home.watermark.title=Add Watermark home.watermark.desc=Add a custom watermark to your PDF document. +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Change Permissions home.permissions.desc=Change the permissions of your PDF document +permissions.tags=read,write,edit,print + home.removePages.title=Remove home.removePages.desc=Delete unwanted pages from your PDF document. +removePages.tags=Remove pages,delete pages home.addPassword.title=Add Password home.addPassword.desc=Encrypt your PDF document with a password. +addPassword.tags=secure,security home.removePassword.title=Remove Password home.removePassword.desc=Remove password protection from your PDF document. @@ -107,6 +120,7 @@ home.compressPdfs.desc=Compress PDFs to reduce their file size. home.changeMetadata.title=Change Metadata home.changeMetadata.desc=Change/Remove/Add metadata from a PDF document +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats, home.fileToPDF.title=Convert file to PDF home.fileToPDF.desc=Convert nearly any file to PDF (DOCX, PNG, XLS, PPT, TXT and more) From 940f8d999e380e6ae9fd4323e384fd0838a63850 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Sun, 23 Jul 2023 15:13:33 +0100 Subject: [PATCH 04/18] Update messages_en_GB.properties --- src/main/resources/messages_en_GB.properties | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index c19f9bf9..97f1568c 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -114,13 +114,16 @@ addPassword.tags=secure,security home.removePassword.title=Remove Password home.removePassword.desc=Remove password protection from your PDF document. +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Compress home.compressPdfs.desc=Compress PDFs to reduce their file size. +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Change Metadata home.changeMetadata.desc=Change/Remove/Add metadata from a PDF document -changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats, +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Convert file to PDF home.fileToPDF.desc=Convert nearly any file to PDF (DOCX, PNG, XLS, PPT, TXT and more) From 295357f12b8b9d2d4d7b49d90e4a29bf43578c91 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Sun, 23 Jul 2023 23:05:02 +0100 Subject: [PATCH 05/18] tags and searching --- src/main/resources/messages_en_GB.properties | 29 +++++++ src/main/resources/static/js/homecard.js | 9 +- src/main/resources/static/js/search.js | 5 +- .../resources/templates/fragments/navbar.html | 82 +++++++++---------- .../templates/fragments/navbarEntry.html | 6 +- 5 files changed, 84 insertions(+), 47 deletions(-) diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 97f1568c..6d0d22a0 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -127,84 +127,113 @@ changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Convert file to PDF home.fileToPDF.desc=Convert nearly any file to PDF (DOCX, PNG, XLS, PPT, TXT and more) +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR / Cleanup scans home.ocr.desc=Cleanup scans and detects text from images within a PDF and re-adds it as text. +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Extract Images home.extractImages.desc=Extracts all images from a PDF and saves them to zip +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF to PDF/A home.pdfToPDFA.desc=Convert PDF to PDF/A for long-term storage +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF to Word home.PDFToWord.desc=Convert PDF to Word formats (DOC, DOCX and ODT) +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF to Presentation home.PDFToPresentation.desc=Convert PDF to Presentation formats (PPT, PPTX and ODP) +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF to RTF (Text) home.PDFToText.desc=Convert PDF to Text or RTF format +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF to HTML home.PDFToHTML.desc=Convert PDF to HTML format +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF to XML home.PDFToXML.desc=Convert PDF to XML format +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Detect/Split Scanned photos home.ScannerImageSplit.desc=Splits multiple photos from within a photo/PDF +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Sign home.sign.desc=Adds signature to PDF by drawing, text or image +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Flatten home.flatten.desc=Remove all interactive elements and forms from a PDF +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Repair home.repair.desc=Tries to repair a corrupt/broken PDF +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Remove Blank pages home.removeBlanks.desc=Detects and removes blank pages from a document +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Compare home.compare.desc=Compares and shows the differences between 2 PDF Documents +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of a page and/or its contents. +scalePages.tags=resize,modify,dimension,adapt home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +sanitizePdf.tags=clean,secure,safe,remove-threats home.URLToPDF.title=URL/Website To PDF home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive home.HTMLToPDF.title=HTML to PDF home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### diff --git a/src/main/resources/static/js/homecard.js b/src/main/resources/static/js/homecard.js index fb962a12..72997a02 100644 --- a/src/main/resources/static/js/homecard.js +++ b/src/main/resources/static/js/homecard.js @@ -7,8 +7,12 @@ function filterCards() { var card = cards[i]; var title = card.querySelector('h5.card-title').innerText; var text = card.querySelector('p.card-text').innerText; - var tags = card.getAttribute('data-tags'); - var content = title + ' ' + text + ' ' + tags; + + // Get the navbar tags associated with the card + var navbarItem = document.querySelector(`a.dropdown-item[href="${card.id}"]`); + var navbarTags = navbarItem ? navbarItem.getAttribute('data-tags') : ''; + + var content = title + ' ' + text + ' ' + navbarTags; if (content.toUpperCase().indexOf(filter) > -1) { card.style.display = ""; @@ -19,6 +23,7 @@ function filterCards() { } + function toggleFavorite(element) { var img = element.querySelector('img'); var card = element.closest('.feature-card'); diff --git a/src/main/resources/static/js/search.js b/src/main/resources/static/js/search.js index e8c9bf9e..a4007206 100644 --- a/src/main/resources/static/js/search.js +++ b/src/main/resources/static/js/search.js @@ -43,9 +43,11 @@ document.querySelector('#navbarSearchInput').addEventListener('input', function( var titleElement = item.querySelector('.icon-text'); var iconElement = item.querySelector('.icon'); var itemHref = item.getAttribute('href'); + var tags = item.getAttribute('data-tags') || ""; // If no tags, default to empty string + if (titleElement && iconElement && itemHref !== '#') { var title = titleElement.innerText; - if (title.toLowerCase().indexOf(searchText) !== -1 && !resultsBox.querySelector(`a[href="${item.getAttribute('href')}"]`)) { + if ((title.toLowerCase().indexOf(searchText) !== -1 || tags.toLowerCase().indexOf(searchText) !== -1) && !resultsBox.querySelector(`a[href="${item.getAttribute('href')}"]`)) { var result = document.createElement('a'); result.href = itemHref; result.classList.add('dropdown-item'); @@ -70,3 +72,4 @@ document.querySelector('#navbarSearchInput').addEventListener('input', function( resultsBox.style.width = window.navItemMaxWidth + 'px'; }); + diff --git a/src/main/resources/templates/fragments/navbar.html b/src/main/resources/templates/fragments/navbar.html index 024b7bc3..5b4b594a 100644 --- a/src/main/resources/templates/fragments/navbar.html +++ b/src/main/resources/templates/fragments/navbar.html @@ -47,16 +47,16 @@ @@ -69,19 +69,19 @@ From 9e655631b444da74cb7ba0c4b50244aafd735be7 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Mon, 24 Jul 2023 23:53:52 +0100 Subject: [PATCH 08/18] lang cleanup --- scripts/PropSync.java | 80 ++++ src/main/resources/messages_ar_AR.properties | 192 ++++++++- src/main/resources/messages_ca_CA.properties | 189 ++++++++- src/main/resources/messages_de_DE.properties | 192 ++++++++- src/main/resources/messages_es_ES.properties | 195 ++++++++- src/main/resources/messages_eu_ES.properties | 195 ++++++++- src/main/resources/messages_fr_FR.properties | 192 ++++++++- src/main/resources/messages_it_IT.properties | 190 ++++++++- src/main/resources/messages_ja_JP.properties | 424 +++++++++++++++++-- src/main/resources/messages_ko_KR.properties | 189 ++++++++- src/main/resources/messages_pl_PL.properties | 189 ++++++++- src/main/resources/messages_pt_BR.properties | 190 ++++++++- src/main/resources/messages_ro_RO.properties | 189 ++++++++- src/main/resources/messages_ru_RU.properties | 189 ++++++++- src/main/resources/messages_sv_SE.properties | 192 ++++++++- src/main/resources/messages_zh_CN.properties | 189 ++++++++- 16 files changed, 2920 insertions(+), 256 deletions(-) create mode 100644 scripts/PropSync.java diff --git a/scripts/PropSync.java b/scripts/PropSync.java new file mode 100644 index 00000000..741712b5 --- /dev/null +++ b/scripts/PropSync.java @@ -0,0 +1,80 @@ +package stirling.software.Stirling.Stats; + +import java.nio.file.*; +import java.nio.charset.MalformedInputException; +import java.nio.charset.StandardCharsets; +import java.io.*; +import java.util.*; + +public class PropSync { + + public static void main(String[] args) throws IOException { + File folder = new File("C:\\Users\\systo\\git\\Stirling-PDF\\src\\main\\resources"); + File[] files = folder.listFiles((dir, name) -> name.matches("messages_.*\\.properties")); + + List enLines = Files.readAllLines(Paths.get(folder + "\\messages_en_GB.properties"), StandardCharsets.UTF_8); + Map enProps = linesToProps(enLines); + + for (File file : files) { + if (!file.getName().equals("messages_en_GB.properties")) { + System.out.println("Processing file: " + file.getName()); + List lines; + try { + lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8); + } catch (MalformedInputException e) { + System.out.println("Skipping due to not UTF8 format for file: " + file.getName()); + continue; + } catch (IOException e) { + throw new UncheckedIOException(e); + } + + Map currentProps = linesToProps(lines); + List newLines = syncPropsWithLines(enProps, currentProps, enLines); + + Files.write(file.toPath(), newLines, StandardCharsets.UTF_8); + System.out.println("Finished processing file: " + file.getName()); + } + } + } + + private static Map linesToProps(List lines) { + Map props = new LinkedHashMap<>(); + for (String line : lines) { + if (!line.trim().isEmpty() && line.contains("=")) { + String[] parts = line.split("=", 2); + props.put(parts[0].trim(), parts[1].trim()); + } + } + return props; + } + + private static List syncPropsWithLines(Map enProps, Map currentProps, List enLines) { + List newLines = new ArrayList<>(); + boolean needsTranslateComment = false; // flag to check if we need to add "TODO: Translate" + + for (String line : enLines) { + if (line.contains("=")) { + String key = line.split("=", 2)[0].trim(); + + if (currentProps.containsKey(key)) { + newLines.add(key + "=" + currentProps.get(key)); + needsTranslateComment = false; + } else { + if (!needsTranslateComment) { + newLines.add("##########################"); + newLines.add("### TODO: Translate ###"); + newLines.add("##########################"); + needsTranslateComment = true; + } + newLines.add(line); + } + } else { + // handle comments and other non-property lines + newLines.add(line); + needsTranslateComment = false; // reset the flag when we encounter comments or empty lines + } + } + + return newLines; + } +} diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 20a2a090..9f3d30c6 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=rtl pdfPrompt=اختر PDF @@ -26,9 +26,6 @@ text=نص font=الخط selectFillter=- حدد - pageNum=رقم الصفحة -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=متجرك الشامل المستضاف محليًا لجميع اح home.multiTool.title=أداة متعددة PDF home.multiTool.desc=دمج الصفحات وتدويرها وإعادة ترتيبها وإزالتها -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=دمج ملفات home.merge.desc=دمج ملفات PDF متعددة في ملف واحد بسهولة. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=انقسام ملفات home.split.desc=تقسيم ملفات PDF إلى مستندات متعددة +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=تدوير ملفات home.rotate.desc=قم بتدوير ملفات PDF الخاصة بك بسهولة. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=صورة إلى PDF home.imageToPdf.desc=تحويل الصور (PNG ، JPEG ، GIF) إلى PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=تحويل PDF إلى صورة home.pdfToImage.desc=تحويل ملف PDF إلى صورة. (PNG ، JPEG ، GIF) +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=منظم home.pdfOrganiser.desc=إزالة / إعادة ترتيب الصفحات بأي ترتيب +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=إضافة صورة إلى ملف PDF home.addImage.desc=إضافة صورة إلى موقع معين في PDF (العمل قيد التقدم) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=إضافة علامة مائية home.watermark.desc=أضف علامة مائية مخصصة إلى مستند PDF الخاص بك. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=تغيير الأذونات home.permissions.desc=قم بتغيير أذونات مستند PDF الخاص بك +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=إزالة الصفحات home.removePages.desc=حذف الصفحات غير المرغوب فيها من مستند PDF الخاص بك. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=إضافة كلمة مرور home.addPassword.desc=تشفير مستند PDF الخاص بك بكلمة مرور. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=إزالة كلمة المرور home.removePassword.desc=إزالة الحماية بكلمة مرور من مستند PDF الخاص بك. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=ضغط ملفات home.compressPdfs.desc=ضغط ملفات PDF لتقليل حجم الملف. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629 home.changeMetadata.desc=\u062A\u063A\u064A\u064A\u0631 / \u0625\u0632\u0627\u0644\u0629 / \u0625\u0636\u0627\u0641\u0629 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u0646 \u0645\u0633\u062A\u0646\u062F PDF +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 \u0625\u0644\u0649 PDF home.fileToPDF.desc=\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u062A\u0642\u0631\u064A\u0628\u0627 \u0625\u0644\u0649 PDF (DOCX \u0648PNG \u0648XLS \u0648PPT \u0648TXT \u0648\u0627\u0644\u0645\u0632\u064A\u062F) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=\u062A\u0634\u063A\u064A\u0644 OCR \u0639\u0644\u0649 PDF \u0648 / \u0623\u0648 \u0645\u0633\u062D \u0636\u0648\u0626\u064A home.ocr.desc=\u064A\u0642\u0648\u0645 \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0628\u0645\u0633\u062D \u0648\u0627\u0643\u062A\u0634\u0627\u0641 \u0627\u0644\u0646\u0635 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF \u0648\u064A\u0639\u064A\u062F \u0625\u0636\u0627\u0641\u062A\u0647 \u0643\u0646\u0635 +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631 home.extractImages.desc=\u064A\u0633\u062A\u062E\u0631\u062C \u062C\u0645\u064A\u0639 \u0627\u0644\u0635\u0648\u0631 \u0645\u0646 \u0645\u0644\u0641 PDF \u0648\u064A\u062D\u0641\u0638\u0647\u0627 \u0641\u064A \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064A\u062F\u064A +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=\u062A\u062D\u0648\u064A\u0644 \u0645\u0644\u0641\u0627\u062A PDF \u0625\u0644\u0649 PDF / A home.pdfToPDFA.desc=\u062A\u062D\u0648\u064A\u0644 PDF \u0625\u0644\u0649 PDF / A \u0644\u0644\u062A\u062E\u0632\u064A\u0646 \u0637\u0648\u064A\u0644 \u0627\u0644\u0645\u062F\u0649 +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=تحويل PDF إلى Word home.PDFToWord.desc=تحويل PDF إلى تنسيقات Word (DOC و DOCX و ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF للعرض التقديمي home.PDFToPresentation.desc=تحويل PDF إلى تنسيقات عرض تقديمي (PPT و PPTX و ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=تحويل PDF إلى نص / RTF home.PDFToText.desc=تحويل PDF إلى تنسيق نص أو RTF +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=تحويل PDF إلى HTML home.PDFToHTML.desc=تحويل PDF إلى تنسيق HTML +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=تحويل PDF إلى XML home.PDFToXML.desc=تحويل PDF إلى تنسيق XML +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=كشف / انقسام الصور الممسوحة ضوئيًا home.ScannerImageSplit.desc=تقسيم عدة صور من داخل صورة / ملف PDF +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=تسجيل الدخول home.sign.desc=إضافة التوقيع إلى PDF عن طريق الرسم أو النص أو الصورة +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=تسطيح home.flatten.desc=قم بإزالة كافة العناصر والنماذج التفاعلية من ملف PDF +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=إصلاح home.repair.desc=يحاول إصلاح ملف PDF تالف / معطل +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=إزالة الصفحات الفارغة home.removeBlanks.desc=يكتشف ويزيل الصفحات الفارغة من المستند +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=قارن home.compare.desc=يقارن ويظهر الاختلافات بين 2 من مستندات PDF +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -331,9 +492,6 @@ sign.title=تسجيل الدخول sign.header=توقيع ملفات PDF sign.upload=تحميل الصورة sign.draw=رسم التوقيع -########################## -### TODO: Translate ### -########################## sign.text=Text Input sign.clear=واضح sign.add=إضافة @@ -362,7 +520,7 @@ ScannerImageSplit.selectText.7=الحد الأدنى لمنطقة المحيط: ScannerImageSplit.selectText.8=تعيين الحد الأدنى لمنطقة المحيط للصورة ScannerImageSplit.selectText.9=حجم الحدود: ScannerImageSplit.selectText.10=يضبط حجم الحدود المضافة والمزالة لمنع الحدود البيضاء في الإخراج (الافتراضي: 1). - + #OCR ocr.title=\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 / \u062A\u0646\u0638\u064A\u0641 \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index fb161187..fb29aa6b 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Selecciona PDF(s) @@ -26,9 +26,6 @@ text=Text font=Tipus de lletra selectFillter=-- Selecciona -- pageNum=Número de pàgina -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=L'eina allotjada localment per a necessitats PDF. home.multiTool.title=PDF Multi Tool home.multiTool.desc=Fusiona, Rota, Reorganitza, i Esborra pàgines -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Fusiona home.merge.desc=Fusiona fàcilment pàgines en una. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Divideix home.split.desc=Divideix PDFs en múltiples documents +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Rota home.rotate.desc=Rota els PDFs. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Imatge a PDF home.imageToPdf.desc=Converteix imatge (PNG, JPEG, GIF) a PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF a Imatge home.pdfToImage.desc=Converteix PDF a imatge. (PNG, JPEG, GIF) +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Organitza home.pdfOrganiser.desc=Elimina/Reorganitza pàgines en qualsevol ordre +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Afegir imatge a PDF home.addImage.desc=Afegeix imatge en un PDF (En progrés) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Afegir Marca d'aigua home.watermark.desc=Afegir Marca d'aigua personalitzada en un PDF +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Canvia permissos home.permissions.desc=Canvia permisos del document PDF +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Elimina home.removePages.desc=Elimina pàgines del document PDF. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Afegir Password home.addPassword.desc=Xifra document PDF amb password. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Elimina Password home.removePassword.desc=Elimia Password de document PDF. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Comprimeix home.compressPdfs.desc=Comprimeix PDFs per reduir la mida. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Canvia Metadades home.changeMetadata.desc=Canvia/Treu/Afegeix matadades al document PDF. +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Converteix arxiu a PDF home.fileToPDF.desc=Converteix qualsevol arxiu a PDF (DOCX, PNG, XLS, PPT, TXT i més) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=Executa exploracions OCR i/o neteja escanejos home.ocr.desc=Neteja escanejats i detecta text d'imatges dins d'un PDF i el torna a afegir com a text. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Extreu Imatges home.extractImages.desc=Extreu les Imatges del PDF i les desa a zip +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF a PDF/A home.pdfToPDFA.desc=Converteix PDF a PDF/A per desar a llarg termini. +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF a Word home.PDFToWord.desc=Converteix PDF a formats de Word (DOC, DOCX and ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF a Presentació home.PDFToPresentation.desc=Convert PDF to Presentation formats (PPT, PPTX and ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF a Text/RTF home.PDFToText.desc=Converteix PDF a Text o format RTF +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF a HTML home.PDFToHTML.desc=Converteix PDF a format HTML +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF a XML home.PDFToXML.desc=Converteix PDF a format XML +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Detecta/Divideix fotos escanejades home.ScannerImageSplit.desc=Divideix múltiples fotos dins del PDF/foto +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Sign home.sign.desc=Afegeix signatura al PDF mitjançant dibuix, text o imatge +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Aplanar home.flatten.desc=Elimineu tots els elements i formularis interactius d'un PDF +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Reparar home.repair.desc=Intenta reparar un PDF danyat o trencat +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Elimina les pàgines en blanc home.removeBlanks.desc=Detecta i elimina les pàgines en blanc d'un document +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Compara home.compare.desc=Compara i mostra les diferències entre 2 documents PDF +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -359,7 +520,7 @@ ScannerImageSplit.selectText.7=Àrea de contorn mínima: ScannerImageSplit.selectText.8=Estableix el llindar mínim de l'àrea de contorn per a una foto ScannerImageSplit.selectText.9=Mida Vora: ScannerImageSplit.selectText.10=Estableix la mida de la vora afegida i eliminada per evitar vores blanques a la sortida (per defecte: 1). - + #OCR ocr.title=OCR / Neteja escaneig diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 090e12ee..04f31beb 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=PDF auswählen @@ -26,9 +26,6 @@ text=Text font=Schriftart selectFillter=-- Auswählen -- pageNum=Seitenzahl -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=Ihr lokal gehosteter One-Stop-Shop für alle Ihre PDF-Anforderungen. home.multiTool.title=PDF-Multitool home.multiTool.desc=Seiten zusammenführen, drehen, neu anordnen und entfernen -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Zusammenführen home.merge.desc=Mehrere PDF-Dateien zu einer einzigen zusammenführen. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Aufteilen home.split.desc=PDFs in mehrere Dokumente aufteilen. +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Drehen home.rotate.desc=Drehen Sie Ihre PDFs ganz einfach. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Bild zu PDF home.imageToPdf.desc=Konvertieren Sie ein Bild (PNG, JPEG, GIF) in ein PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF zu Bild home.pdfToImage.desc=Konvertieren Sie ein PDF in ein Bild (PNG, JPEG, GIF). +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Organisieren home.pdfOrganiser.desc=Seiten entfernen und Seitenreihenfolge ändern. +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Bild einfügen home.addImage.desc=Fügt ein Bild an eine bestimmte Stelle im PDF ein (Work in progress). +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Wasserzeichen hinzufügen home.watermark.desc=Fügen Sie ein eigenes Wasserzeichen zu Ihrem PDF hinzu. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Berechtigungen ändern home.permissions.desc=Die Berechtigungen für Ihr PDF-Dokument verändern. +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Entfernen home.removePages.desc=Ungewollte Seiten aus dem PDF entfernen. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Passwort hinzufügen home.addPassword.desc=Das PDF mit einem Passwort verschlüsseln. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Passwort entfernen home.removePassword.desc=Den Passwortschutz eines PDFs entfernen. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Komprimieren home.compressPdfs.desc=PDF komprimieren um die Dateigröße zu reduzieren. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Metadaten ändern home.changeMetadata.desc=Ändern/Entfernen/Hinzufügen von Metadaten aus einem PDF-Dokument +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Datei in PDF konvertieren home.fileToPDF.desc=Konvertieren Sie nahezu jede Datei in PDF (DOCX, PNG, XLS, PPT, TXT und mehr) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=Führe OCR auf PDF- und/oder Cleanup-Scans aus home.ocr.desc=Cleanup scannt und erkennt Text aus Bildern in einer PDF-Datei und fügt ihn erneut als Text hinzu. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Bilder extrahieren home.extractImages.desc=Extrahiert alle Bilder aus einer PDF-Datei und speichert sie als Zip-Datei +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF zu PDF/A konvertieren home.pdfToPDFA.desc=PDF zu PDF/A für Langzeitarchivierung konvertieren +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF zu Word home.PDFToWord.desc=PDF in Word-Formate konvertieren (DOC, DOCX und ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF zu Präsentation home.PDFToPresentation.desc=PDF in Präsentationsformate konvertieren (PPT, PPTX und ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF in Text/RTF home.PDFToText.desc=PDF in Text- oder RTF-Format konvertieren +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF in HTML home.PDFToHTML.desc=PDF in HTML-Format konvertieren +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF in XML home.PDFToXML.desc=PDF in XML-Format konvertieren +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Gescannte Fotos erkennen/aufteilen home.ScannerImageSplit.desc=Teilt mehrere Fotos innerhalb eines Fotos/PDF +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Signieren home.sign.desc=Fügt PDF-Signaturen durch Zeichnung, Text oder Bild hinzu +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Abflachen home.flatten.desc=Alle interaktiven Elemente und Formulare aus einem PDF entfernen +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Reparatur home.repair.desc=Versucht, ein beschädigtes/kaputtes PDF zu reparieren +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Leere Seiten entfernen home.removeBlanks.desc=Erkennt und entfernt leere Seiten aus einem Dokument +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Vergleichen home.compare.desc=Vergleicht und zeigt die Unterschiede zwischen zwei PDF-Dokumenten an +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -338,9 +499,6 @@ sign.add=Hinzufügen #repair repair.title=Reparieren -########################## -### TODO: Translate ### -########################## repair.header=Repair PDFs repair.submit=Reparieren @@ -362,7 +520,7 @@ ScannerImageSplit.selectText.7=Minimaler Konturbereich: ScannerImageSplit.selectText.8=Legt den minimalen Konturbereichsschwellenwert für ein Foto fest ScannerImageSplit.selectText.9=Randgröße: ScannerImageSplit.selectText.10=Legt die Größe des hinzugefügten und entfernten Randes fest, um weiße Ränder in der Ausgabe zu verhindern (Standard: 1). - + #OCR ocr.title=OCR / Scan-Bereinigung diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index fe99edf2..56e92fdb 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Seleccionar PDF(s) @@ -24,14 +24,8 @@ alphabet=Alfabeto downloadPdf=Descargar PDF text=Texto font=Fuente -########################## -### TODO: Translate ### -########################## selectFillter=-- Select -- pageNum=Número de página -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -69,134 +63,297 @@ home.desc=Tu ventanilla única autohospedada para todas tus necesidades PDF home.multiTool.title=Multi-herramienta PDF home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Unir home.merge.desc=Unir fácilmente múltiples PDFs en uno -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Dividir home.split.desc=Dividir PDFs en múltiples documentos +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Rotar home.rotate.desc=Rotar fácilmente tus PDFs +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Imagen a PDF home.imageToPdf.desc=Convertir una imagen (PNG, JPEG, GIF) a PDF +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF a Imagen home.pdfToImage.desc=Convertir un PDF a una imagen (PNG, JPEG, GIF) +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Organizador home.pdfOrganiser.desc=Eliminar/Reorganizar páginas en cualquier orden +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Agregar imagen al PDF home.addImage.desc=Agregar una imagen en una ubicación establecida en el PDF (trabajo en progreso) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Añadir marca de agua home.watermark.desc=Añadir una marca de agua predefinida al documento PDF +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Cambiar permisos home.permissions.desc=Cambiar los permisos del documento PDF +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Eliminar home.removePages.desc=Eliminar páginas no deseadas del documento PDF +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Añadir contraseña home.addPassword.desc=Encriptar el documento PDF con una contraseña +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Eliminar contraseña home.removePassword.desc=Eliminar la contraseña del documento PDF +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Comprimir home.compressPdfs.desc=Comprimir PDFs para reducir el tamaño del fichero +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Cambiar metadatos home.changeMetadata.desc=Cambiar/Eliminar/Añadir metadatos al documento PDF +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Convertir fichero a PDF home.fileToPDF.desc=Convertir casi cualquier archivo a PDF (DOCX, PNG, XLS, PPT, TXT y más) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=Ejecutar OCR en PDF y/o escaneos de limpieza home.ocr.desc=Escaneos de limpieza y detectar texto de imágenes dentro de un PDF y volver a agregarlo como texto +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Extraer imágenes home.extractImages.desc=Extraer todas las imágenes de un PDF y guardarlas en ZIP +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=Convertir PDF a PDF/A home.pdfToPDFA.desc=Convertir PDF a PDF/A para almacenamiento a largo plazo +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF a Word home.PDFToWord.desc=Convertir formatos PDF a Word (DOC, DOCX y ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF a presentación home.PDFToPresentation.desc=Convertir PDF a formatos de presentación (PPT, PPTX y ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF a TXT o RTF home.PDFToText.desc=Convertir PDF a formato TXT o RTF +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF a HTML home.PDFToHTML.desc=Convertir PDF a formato HTML +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF a XML home.PDFToXML.desc=Convertir PDF a formato XML +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Detectar/Dividir fotos escaneadas home.ScannerImageSplit.desc=Dividir varias fotos dentro de una foto/PDF +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Firmar home.sign.desc=Añadir firma a PDF mediante dibujo, texto o imagen +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Aplanar home.flatten.desc=Eliminar todos los elementos y formularios interactivos de un PDF +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Reparar home.repair.desc=Intentar reparar un PDF corrupto/roto +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Eliminar páginas en blanco home.removeBlanks.desc=Detectar y eliminar páginas en blanco de un documento +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Comparar home.compare.desc=Comparar y mostrar las diferencias entre 2 documentos PDF +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Firmar con certificado home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Diseño de varias páginas home.pageLayout.desc=Unir varias páginas de un documento PDF en una sola página +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Escalar/ajustar tamaño de página home.scalePages.desc=Escalar/cambiar el tamaño de una pagina y/o su contenido - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -218,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -362,7 +520,7 @@ ScannerImageSplit.selectText.7=Área de contorno mínima: ScannerImageSplit.selectText.8=Establecer el umbral mínimo del área de contorno para una foto ScannerImageSplit.selectText.9=Tamaño del borde: ScannerImageSplit.selectText.10=Establece el tamaño del borde agregado y eliminado para evitar bordes blancos en la salida (predeterminado: 1). - + #OCR ocr.title=OCR / Escaneo de limpieza @@ -446,9 +604,6 @@ pageRemover.submit=Eliminar Páginas #rotate rotate.title=Rotar PDF rotate.header=Rotar PDF -########################## -### TODO: Translate ### -########################## rotate.selectAngle=Select rotation angle (in multiples of 90 degrees): rotate.submit=Rotar diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 4398000a..1149b8ca 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Hautatu PDFa(k) @@ -24,14 +24,8 @@ alphabet=Alfabetoa downloadPdf=PDFa deskargatu text=Testua font=Letra-tipoa -########################## -### TODO: Translate ### -########################## selectFillter=-- Select -- pageNum=Orrialde-zenbakia -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -69,134 +63,297 @@ home.desc=Zure leihatila bakarra autoostatatua zure PDF behar guztietarako home.multiTool.title=Erabilera anitzeko tresna PDF home.multiTool.desc=Orriak konbinatu, biratu, berrantolatu eta ezabatu -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Elkartu home.merge.desc=Elkartu zenbait PDF dokumentu bakar batean modu errazean -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Zatitu home.split.desc=Zatitu PDFak zenbait dokumentutan +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Biratu home.rotate.desc=Biratu PDFak modu errazean +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Irudia PDF bihurtu home.imageToPdf.desc=Irudi bat(PNG, JPEG, GIF)PDF bihurtu +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDFa irudi bihurtu home.pdfToImage.desc=PDF bat irudi (PNG, JPEG, GIF) bihurtu +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Antolatzailea home.pdfOrganiser.desc=Ezabatu/Berrantolatu orrialdeak edozein ordenatan +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Gehitu irudia PDFari home.addImage.desc=Gehitu irudi bat PDFan ezarritako kokaleku batean (lanean) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Gehitu ur-marka home.watermark.desc=Gehitu aurrez zehaztutako ur-marka bat PFD dokumentuari +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Aldatu baimenak home.permissions.desc=Aldatu PDF dokumentuaren baimenak +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Ezabatu home.removePages.desc=Ezabatu nahi ez dituzun orrialdeak PDF dokumentutik +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Gehitu pasahitza home.addPassword.desc=Enkriptatu PDF dokumentua pasahitz batekin +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Ezabatu pasahitza home.removePassword.desc=Ezabatu pasahitza PDF dokumentutik +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Konprimatu home.compressPdfs.desc=Konprimatu PDFak fitxategiaren tamaina murrizteko +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Aldatu metadatuak home.changeMetadata.desc=Aldatu/Ezabatu/Gehitu metadatuak PDF dokumentuari +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Fitxategia PDF bihurtu home.fileToPDF.desc=PDF bihurtu ia edozein fitxategi (DOCX, PNG, XLS, PPT, TXT eta gehiago) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR exekutatu PDFan eta/edo garbiketa-eskaneatzeak home.ocr.desc=Garbiketa-eskaneatzeak eta irudi-testuak detektatu PDF baten barruan eta berriz ere gehitu testu gisa +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Atera irudiak home.extractImages.desc=Atera irudi guztiak PDF batetik eta ZIPen gorde +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDFa PDF/A bihurtu home.pdfToPDFA.desc=PDFa PDF/A bihurtu luzaro biltegiratzeko +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDFa Word Bihurtu home.PDFToWord.desc=PDF formatuak Word bihurtu (DOC, DOCX y ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDFa aurkezpen bihurtu home.PDFToPresentation.desc=PDFa aurkezpen formatu bihurtu (PPT, PPTX y ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDFa TXT edo RTF bihurtu home.PDFToText.desc=PDFa TXT edo RTF formatu bihurtu +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDFa HTML bihurtu home.PDFToHTML.desc=PDFa HTML formatu bihurtu +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDFa XML bihurtu home.PDFToXML.desc=PDFa XML formatu bihurtu +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Detektatu/Zatitu argazki eskaneatuak home.ScannerImageSplit.desc=Hainbat argazki zatitu argazki/PDF baten barruan +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Sinatu home.sign.desc=Gehitu sinadura PDFari marrazki, testu edo irudi bidez +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Lautu home.flatten.desc=PDF batetik elementu eta inprimaki interaktibo guztiak ezabatu +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Konpondu home.repair.desc=Saiatu PDF hondatu/kaltetu bat konpontzen +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Ezabatu orrialde zuriak home.removeBlanks.desc=Detektatu orrialde zuriak eta dokumentutik ezabatu +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Konparatu home.compare.desc=Konparatu eta erakutsi 2 PDF dokumenturen aldeak +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sinatu ziurtagiriarekin home.certSign.desc=Sinatu PDF bat Ziurtagiri/Gako batekin (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Zenbait orrialderen diseinua home.pageLayout.desc=Elkartu orri bakar batean PDF dokumentu baten zenbait orrialde +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Eskalatu/Doitu orrialdearen tamaina home.scalePages.desc=Eskalatu/Aldatu orrialde baten tamaina eta/edo edukia - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -218,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -362,7 +520,7 @@ ScannerImageSplit.selectText.7=Inguruko area gutxienekoa: ScannerImageSplit.selectText.8=Ezarri inguruko arearen gutxieneko balioa argazki batentzat ScannerImageSplit.selectText.9=Ertzaren tamaina: ScannerImageSplit.selectText.10=Ezarri gehitutako eta ezabatutako ertzaren tamaina irteeran ertz zuriak saihesteko (lehenetsia: 1). - + #OCR ocr.title=OCR / Garbiketa-eskaneatzea @@ -446,9 +604,6 @@ pageRemover.submit=Ezabatu orrialdeak #rotate rotate.title=Biratu PDFa rotate.header=Biratu PDFa -########################## -### TODO: Translate ### -########################## rotate.selectAngle=Select rotation angle (in multiples of 90 degrees): rotate.submit=Biratu diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index 8489dd47..b5e67732 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Choisir PDF @@ -24,14 +24,8 @@ alphabet=Alphabet downloadPdf=Télécharger le PDF text=Texte font=Police -########################## -### TODO: Translate ### -########################## selectFillter=-- Select -- pageNum=numéro de page -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -69,134 +63,297 @@ home.desc=Votre guichet unique hébergé localement pour tous vos besoins PDF. home.multiTool.title=Multi-outil PDF home.multiTool.desc=Fusionner, faire pivoter, réorganiser et supprimer des pages -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Fusionnez home.merge.desc=Fusionnez facilement plusieurs PDF en un seul. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Fractionner home.split.desc=Diviser les PDF en plusieurs documents +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Tourner home.rotate.desc=Faites pivoter facilement vos PDF. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Image au format PDF home.imageToPdf.desc=Convertir une image (PNG, JPEG, GIF) en PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF vers image home.pdfToImage.desc=Convertir un PDF en image. (PNG, JPEG, GIF) +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Organisateur home.pdfOrganiser.desc=Supprimer/Réorganiser les pages dans n'importe quel ordre +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Ajouter une image au PDF home.addImage.desc=Ajoute une image à un emplacement défini sur le PDF (Travail en cours) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Ajouter un filigrane home.watermark.desc=Ajoutez un filigrane personnalisé à votre document PDF. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Modifier les autorisations home.permissions.desc=Modifier les permissions de votre document PDF +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Supprimer home.removePages.desc=Supprimez les pages inutiles de votre document PDF. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Ajouter un mot de passe home.addPassword.desc=Cryptez votre document PDF avec un mot de passe. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Supprimer le mot de passe home.removePassword.desc=Supprimez la protection par mot de passe de votre document PDF. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Compresser home.compressPdfs.desc=Compressez les PDF pour réduire leur taille de fichier. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Modifier les métadonnées home.changeMetadata.desc=Modifier/Supprimer/Ajouter des métadonnées d'un document PDF +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Convertir un fichier en PDF home.fileToPDF.desc=Convertissez presque n\u2019importe quel fichier en PDF (DOCX, PNG, XLS, PPT, TXT et plus) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=Exécuter l'OCR sur les scans PDF et/ou de nettoyage home.ocr.desc=Le nettoyage analyse et détecte le texte des images dans un PDF et le rajoute en tant que texte. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Extraire les images home.extractImages.desc=Extrait toutes les images d\u2019un PDF et les enregistre au format zip +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=Convertir PDF en PDF/A home.pdfToPDFA.desc=Convertir un PDF en PDF/A pour un stockage à long terme +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF vers Word home.PDFToWord.desc=Convertir les formats PDF en Word (DOC, DOCX et ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF vers présentation home.PDFToPresentation.desc=Convertir des PDF en formats de présentation (PPT, PPTX et ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF vers texte/RTF home.PDFToText.desc=Convertir un PDF au format Texte ou RTF +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF vers HTML home.PDFToHTML.desc=Convertir le PDF au format HTML +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF vers XML home.PDFToXML.desc=Convertir le PDF au format XML +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Détecter/diviser les photos numérisées home.ScannerImageSplit.desc=Divise plusieurs photos à partir d'une photo/PDF +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Signe home.sign.desc=Ajoute une signature au PDF par dessin, texte ou image +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Aplatir home.flatten.desc=Supprimer tous les éléments et formulaires interactifs d'un PDF +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Réparer home.repair.desc=Essaye de réparer un PDF corrompu/cassé +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Supprimer les pages vierges home.removeBlanks.desc=Détecte et supprime les pages vierges d'un document +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Comparer home.compare.desc=Compare et affiche les différences entre 2 documents PDF +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -218,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -362,7 +520,7 @@ ScannerImageSplit.selectText.7=Zone de contour minimale : ScannerImageSplit.selectText.8=Définit le seuil de zone de contour minimum pour une photo ScannerImageSplit.selectText.9=Taille de la bordure : ScannerImageSplit.selectText.10=Définit la taille de la bordure ajoutée et supprimée pour éviter les bordures blanches dans la sortie (par défaut : 1). - + #OCR ocr.title=OCR / Nettoyage de numérisation diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 9f85c226..25a5bc82 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Scegli PDF @@ -26,9 +26,6 @@ text=Testo font=Font selectFillter=-- Seleziona -- pageNum=Numero pagina -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=La tua pagina self-hostata per gestire qualsiasi PDF. home.multiTool.title=Multifunzione PDF home.multiTool.desc=Unisci, Ruota, Riordina, e Rimuovi pagine -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Unisci home.merge.desc=Unisci facilmente più PDF in uno. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Dividi home.split.desc=Dividi un singolo PDF in più documenti. +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Ruota home.rotate.desc=Ruota un PDF. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Da immagine a PDF home.imageToPdf.desc=Converti un'immagine (PNG, JPEG, GIF) in PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=Da PDF a immagine home.pdfToImage.desc=Converti un PDF in un'immagine. (PNG, JPEG, GIF) +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Organizza home.pdfOrganiser.desc=Rimuovi/Riordina le pagine in qualsiasi ordine. +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Aggiungi Immagine home.addImage.desc=Aggiungi un'immagine in un punto specifico del PDF (Work in progress) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Aggiungi Filigrana home.watermark.desc=Aggiungi una filigrana al tuo PDF. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Cambia Permessi home.permissions.desc=Cambia i permessi del tuo PDF. +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Rimuovi home.removePages.desc=Elimina alcune pagine dal PDF. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Aggiungi Password home.addPassword.desc=Crittografa il tuo PDF con una password. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Rimuovi Password home.removePassword.desc=Rimuovi la password dal tuo PDF. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Comprimi home.compressPdfs.desc=Comprimi PDF per ridurne le dimensioni. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Modifica Proprietà home.changeMetadata.desc=Modifica/Aggiungi/Rimuovi le proprietà di un documento PDF. +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Converti file in PDF home.fileToPDF.desc=Converti quasi ogni file in PDF (DOCX, PNG, XLS, PPT, TXT e altro) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR / Pulisci scansioni home.ocr.desc=Pulisci scansioni ed estrai testo da immagini, convertendo le immagini in testo puro. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Estrai immagini home.extractImages.desc=Estrai tutte le immagini da un PDF e salvale come zip. +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=Converti in PDF/A home.pdfToPDFA.desc=Converti un PDF nel formato PDF/A per archiviazione a lungo termine. +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=Da PDF a Word home.PDFToWord.desc=Converti un PDF nei formati Word (DOC, DOCX e ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=Da PDF a presentazioni home.PDFToPresentation.desc=Converti un PDF in presentazioni (PPT, PPTX and ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=Da PDF a testo/RTF home.PDFToText.desc=Converti un PDF in testo o RTF. +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=Da PDF ad HTML home.PDFToHTML.desc=Converti un PDF in HTML. +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=Da PDF a XML home.PDFToXML.desc=Converti un PDF in XML. +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Trova/Dividi foto scansionate home.ScannerImageSplit.desc=Estrai più foto da una singola foto o PDF. +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Firma home.sign.desc=Aggiungi una firma al PDF da disegno, testo o immagine. +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Appiattisci home.flatten.desc=Rimuovi tutti gli elementi interattivi e moduli da un PDF. +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Ripara home.repair.desc=Prova a riparare un PDF corrotto. +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Rimuovi pagine vuote home.removeBlanks.desc=Trova e rimuovi pagine vuote da un PDF. +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Compara home.compare.desc=Vedi e compara le differenze tra due PDF. +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -272,6 +433,7 @@ autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit + #pipeline pipeline.title=Pipeline @@ -358,7 +520,7 @@ ScannerImageSplit.selectText.7=Area di contorno minima: ScannerImageSplit.selectText.8=Imposta l'area minima del contorno di una foto ScannerImageSplit.selectText.9=Spessore bordo: ScannerImageSplit.selectText.10=Imposta lo spessore del bordo aggiunto o rimosso per prevenire bordi bianchi nel risultato (default: 1). - + #OCR ocr.title=OCR / Pulisci scansioni diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 3db4d50d..ac20e9ec 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=PDFを選択 @@ -21,139 +21,475 @@ filesSelected=選択されたファイル noFavourites=お気に入りはありません bored=待ち時間が退屈 alphabet=\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8 +downloadPdf=PDFをダウンロード +text=テキスト +font=フォント +selectFillter=-- 選択 -- +pageNum=ページ番号 +########################## +### TODO: Translate ### +########################## +sizes.small=Small +sizes.medium=Medium +sizes.large=Large +sizes.x-large=X-Large +error.pdfPassword=PDFにパスワードが設定されてますが、パスワードが入力されてないか間違ってます。 + + +############# +# NAVBAR # +############# +navbar.convert=変換 +navbar.security=セキュリティ +navbar.other=その他 +navbar.darkmode=ダークモード +navbar.pageOps=ページ操作 +navbar.settings=設定 + +############# +# SETTINGS # +############# +settings.title=設定 +settings.update=利用可能なアップデート +settings.appVersion=Appバージョン: +settings.downloadOption.title=ダウンロードオプション (zip以外の単一ファイル): +settings.downloadOption.1=同じウィンドウで開く +settings.downloadOption.2=新しいウィンドウで開く +settings.downloadOption.3=ファイルをダウンロード +settings.zipThreshold=このファイル数を超えたときにファイルを圧縮する + ############# # HOME-PAGE # ############# home.desc=PDFのあらゆるニーズに対応するローカルホスティングされた総合窓口です。 -navbar.convert=変換 -navbar.security=セキュリティ -navbar.other=その他 -navbar.darkmode=ダークモード -navbar.pageOps=ページ操作 - home.multiTool.title=PDFマルチツール home.multiTool.desc=ページの結合、回転、並べ替え、削除します。 +########################## +### TODO: Translate ### +########################## +multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move home.merge.title=結合 home.merge.desc=複数のPDFを1つに結合します。 +########################## +### TODO: Translate ### +########################## +merge.tags=merge,Page operations,Back end,server side home.split.title=分割 home.split.desc=PDFを複数のドキュメントに分割します。 +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=回転 home.rotate.desc=PDFを回転します。 +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=画像をPDFに変換 home.imageToPdf.desc=画像 (PNG, JPEG, GIF) をPDFに変換します。 +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDFを画像に変換 home.pdfToImage.desc=PDFを画像 (PNG, JPEG, GIF) に変換します。 +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=整理 home.pdfOrganiser.desc=ページの削除/並べ替えします。 +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=画像の追加 home.addImage.desc=PDF上の任意の場所に画像を追加します。 +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=透かしの追加 home.watermark.desc=PDFに独自の透かしを追加します。 - -home.remove-watermark.title=透かしの削除 -home.remove-watermark.desc=PDFから透かしを削除します。 +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=権限の変更 home.permissions.desc=PDFの権限を変更します。 +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=削除 home.removePages.desc=PDFから不要なページを削除します。 +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=パスワードの追加 home.addPassword.desc=PDFをパスワードで暗号化します。 +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=パスワードの削除 home.removePassword.desc=PDFからパスワードの削除します。 +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=圧縮 home.compressPdfs.desc=PDFを圧縮してファイルサイズを小さくします。 +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=メタデータの変更 home.changeMetadata.desc=PDFのメタデータを変更/削除/追加します。 +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=ファイルをPDFに変換 home.fileToPDF.desc=ほぼすべてのファイルをPDFに変換します。 (DOCX, PNG, XLS, PPT, TXTなど) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR / クリーンアップ home.ocr.desc=クリーンアップはPDF内の画像からテキストを検出してテキストとして再追加します。 +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=画像の抽出 home.extractImages.desc=PDFからすべての画像を抽出してzipで保存します。 +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDFをPDF/Aに変換 home.pdfToPDFA.desc=長期保存のためにPDFをPDF/Aに変換。 +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDFをWordに変換 home.PDFToWord.desc=PDFをWord形式に変換します。 (DOC, DOCX および ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDFをプレゼンテーションに変換 home.PDFToPresentation.desc=PDFをプレゼンテーション形式に変換します。 (PPT, PPTX および ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDFをText/RTFに変換 home.PDFToText.desc=PDFをTextまたはRTF形式に変換します。 +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDFをHTMLに変換 home.PDFToHTML.desc=PDFをHTML形式に変換します。 +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDFをXMLに変換 home.PDFToXML.desc=PDFをXML形式に変換します。 +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=スキャンされた画像の検出/分割 home.ScannerImageSplit.desc=1枚の画像/PDFから複数の写真を分割します。 +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=署名 home.sign.desc=手書き、テキストまたは画像によってPDFに署名を追加します。 +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=平坦化 home.flatten.desc=PDFからインタラクティブな要素とフォームをすべて削除します。 +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=修復 home.repair.desc=破損したPDFの修復を試みます。 +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=空白ページの削除 home.removeBlanks.desc=ドキュメントから空白ページを検出して削除します。 +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=比較 home.compare.desc=2つのPDFを比較して表示します。 +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=証明書による署名 home.certSign.desc=証明書/キーを使用してPDFに署名します。 (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=マルチページレイアウト home.pageLayout.desc=PDFの複数のページを1ページに結合します。 +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=ページの縮尺の調整 home.scalePages.desc=ページやコンテンツの縮尺を変更します。 +########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt -error.pdfPassword=PDFにパスワードが設定されてますが、パスワードが入力されてないか間違ってます。 +########################## +### TODO: Translate ### +########################## +home.pipeline.title=Pipeline (Advanced) +home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +pipeline.tags=automate,sequence,scripted,batch-process -downloadPdf=PDFをダウンロード -text=テキスト -font=フォント -selectFillter=-- 選択 -- -pageNum=ページ番号 +########################## +### TODO: Translate ### +########################## +home.add-page-numbers.title=Add Page Numbers +home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +add-page-numbers.tags=paginate,label,organize,index +########################## +### TODO: Translate ### +########################## +home.auto-rename.title=Auto Rename PDF File +home.auto-rename.desc=Auto renames a PDF file based on its detected header +auto-rename.tags=auto-detect,header-based,organize,relabel + +########################## +### TODO: Translate ### +########################## +home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +adjust-contrast.tags=color-correction,tune,modify,enhance + +########################## +### TODO: Translate ### +########################## +home.crop.title=Crop PDF +home.crop.desc=Crop a PDF to reduce its size (maintains text!) +crop.tags=trim,shrink,edit,shape + +########################## +### TODO: Translate ### +########################## +home.autoSplitPDF.title=Auto Split Pages +home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +autoSplitPDF.tags=QR-based,separate,scan-segment,organize + +########################## +### TODO: Translate ### +########################## +home.sanitizePdf.title=Sanitize +home.sanitizePdf.desc=Remove scripts and other elements from PDF files +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert + + +########################### +# # +# WEB PAGES # +# # +########################### +#url-to-pdf +########################## +### TODO: Translate ### +########################## +URLToPDF.title=URL To PDF +URLToPDF.header=URL To PDF +URLToPDF.submit=Convert +URLToPDF.credit=Uses WeasyPrint + + +#html-to-pdf +########################## +### TODO: Translate ### +########################## +HTMLToPDF.title=HTML To PDF +HTMLToPDF.header=HTML To PDF +HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc required +HTMLToPDF.submit=Convert +HTMLToPDF.credit=Uses WeasyPrint + + +#sanitizePDF +########################## +### TODO: Translate ### +########################## +sanitizePDF.title=Sanitize PDF +sanitizePDF.header=Sanitize a PDF file +sanitizePDF.selectText.1=Remove JavaScript actions +sanitizePDF.selectText.2=Remove embedded files +sanitizePDF.selectText.3=Remove metadata +sanitizePDF.selectText.4=Remove links +sanitizePDF.selectText.5=Remove fonts +sanitizePDF.submit=Sanitize PDF + + +#addPageNumbers +########################## +### TODO: Translate ### +########################## +addPageNumbers.title=Add Page Numbers +addPageNumbers.header=Add Page Numbers +addPageNumbers.selectText.1=Select PDF file: +addPageNumbers.selectText.2=Margin Size +addPageNumbers.selectText.3=Position +addPageNumbers.selectText.4=Starting Number +addPageNumbers.selectText.5=Pages to Number +addPageNumbers.selectText.6=Custom Text +addPageNumbers.submit=Add Page Numbers + + +#auto-rename +########################## +### TODO: Translate ### +########################## +auto-rename.title=Auto Rename +auto-rename.header=Auto Rename PDF +auto-rename.submit=Auto Rename + + +#adjustContrast +########################## +### TODO: Translate ### +########################## +adjustContrast.title=Adjust Contrast +adjustContrast.header=Adjust Contrast +adjustContrast.contrast=Contrast: +adjustContrast.brightness=Brightness: +adjustContrast.saturation=Saturation: +adjustContrast.download=Download + + +#crop +########################## +### TODO: Translate ### +########################## +crop.title=Crop +crop.header=Crop Image +crop.submit=Submit + + +#autoSplitPDF +########################## +### TODO: Translate ### +########################## +autoSplitPDF.title=Auto Split PDF +autoSplitPDF.header=Auto Split PDF +autoSplitPDF.description=Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed. +autoSplitPDF.selectText.1=Print out some divider sheets from below (Black and white is fine). +autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divider sheet between them. +autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. +autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. +autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Submit + + +#pipeline +########################## +### TODO: Translate ### +########################## +pipeline.title=Pipeline + + +#pageLayout pageLayout.title=マルチページレイアウト pageLayout.header=マルチページレイアウト pageLayout.pagesPerSheet=1枚あたりのページ数: pageLayout.submit=送信 + +#scalePages scalePages.title=ページの縮尺の調整 scalePages.header=ページの縮尺の調整 scalePages.pageSize=1ページのサイズ scalePages.scaleFactor=1ページの拡大レベル (トリミング)。 scalePages.submit=送信 + +#certSign certSign.title=証明書による署名 certSign.header=証明書を使用してPDFに署名します。 (進行中) certSign.selectPDF=署名するPDFファイルを選択: @@ -168,6 +504,8 @@ certSign.location=場所 certSign.name=名前 certSign.submit=PDFに署名 + +#removeBlanks removeBlanks.title=空白の削除 removeBlanks.header=空白ページの削除 removeBlanks.threshold=しきい値 : @@ -176,12 +514,16 @@ removeBlanks.whitePercent=白比率 removeBlanks.whitePercentDesc=削除するページの白の割合 removeBlanks.submit=空白ページの削除 + +#compare compare.title=比較 compare.header=PDFの比較 compare.document.1=ドキュメント 1 compare.document.2=ドキュメント 2 compare.submit=比較 + +#sign sign.title=署名 sign.header=PDFに署名 sign.upload=画像をアップロード @@ -190,14 +532,20 @@ sign.text=テキスト入力 sign.clear=クリア sign.add=追加 + +#repair repair.title=修復 repair.header=PDFを修復 repair.submit=修復 + +#flatten flatten.title=平坦化 flatten.header=PDFを平坦化する flatten.submit=平坦化 + +#ScannerImageSplit ScannerImageSplit.selectText.1=角度のしきい値: ScannerImageSplit.selectText.2=画像を回転させるために必要な絶対角度の最小値を設定 (初期値:10)。 ScannerImageSplit.selectText.3=許容範囲: @@ -209,18 +557,6 @@ ScannerImageSplit.selectText.8=画像の最小の輪郭面積のしきい値を ScannerImageSplit.selectText.9=境界線サイズ: ScannerImageSplit.selectText.10=出力に白い縁取りが出ないように追加・削除される境界線の大きさを設定 (初期値:1)。 -navbar.settings=設定 -settings.title=設定 -settings.update=利用可能なアップデート -settings.appVersion=Appバージョン: -settings.downloadOption.title=ダウンロードオプション (zip以外の単一ファイル): -settings.downloadOption.1=同じウィンドウで開く -settings.downloadOption.2=新しいウィンドウで開く -settings.downloadOption.3=ファイルをダウンロード -settings.zipThreshold=このファイル数を超えたときにファイルを圧縮する - - - #OCR ocr.title=OCR / クリーンアップ @@ -242,7 +578,7 @@ ocr.credit=本サービスにはOCRにOCRmyPDFとTesseractを使用していま ocr.submit=OCRでPDFを処理する - +#extractImages extractImages.title=画像の抽出 extractImages.header=画像の抽出 extractImages.selectText=抽出した画像のフォーマットを選択 @@ -282,11 +618,13 @@ merge.title=結合 merge.header=複数のPDFを結合 (2ファイル以上) merge.submit=結合 + #pdfOrganiser pdfOrganiser.title=整理 pdfOrganiser.header=PDFページの整理 pdfOrganiser.submit=ページの整理 + #multiTool multiTool.title=PDFマルチツール multiTool.header=PDFマルチツール @@ -298,6 +636,7 @@ pageRemover.header=PDFページ削除 pageRemover.pagesToDelete=削除するページ (ページ番号のカンマ区切りリストを入力してください): pageRemover.submit=ページ削除 + #rotate rotate.title=PDFの回転 rotate.header=PDFの回転 @@ -305,8 +644,6 @@ rotate.selectAngle=回転角度を選択 (90度の倍数): rotate.submit=回転 - - #merge split.title=PDFの分割 split.header=PDFの分割 @@ -331,6 +668,7 @@ imageToPDF.selectText.2=PDFの自動回転 imageToPDF.selectText.3=マルチファイルの処理 (複数の画像を操作する場合に有効になります) imageToPDF.selectText.4=1つのPDFに結合 imageToPDF.selectText.5=個別のPDFに変換 + #pdfToImage pdfToImage.title=PDFを画像に変換 @@ -345,6 +683,7 @@ pdfToImage.grey=グレースケール pdfToImage.blackwhite=白黒 (データが失われる可能性があります!) pdfToImage.submit=変換 + #addPassword addPassword.title=パスワードの追加 addPassword.header=パスワードの追加 (暗号化) @@ -363,9 +702,10 @@ addPassword.selectText.12=印刷を禁止 addPassword.selectText.13=異なる形式の印刷を禁止 addPassword.selectText.14=所有者パスワード addPassword.selectText.15=ドキュメントを開いた後に実行できる操作を制限します (すべてのリーダーでサポートされているわけではありません) -addPassword.selectText.16=ドキュメントを開くことを制限します +addPassword.selectText.16=ドキュメントを開くことを制限します addPassword.submit=暗号化 + #watermark watermark.title=透かしの追加 watermark.header=透かしの追加 @@ -378,6 +718,7 @@ watermark.selectText.6=高さスペース (各透かし間の垂直方向のス watermark.selectText.7=不透明度 (0% - 100%): watermark.submit=透かしを追加 + #remove-watermark remove-watermark.title=透かしの削除 remove-watermark.header=透かしの削除 @@ -385,6 +726,7 @@ remove-watermark.selectText.1=透かしを削除するPDFを選択: remove-watermark.selectText.2=透かしのテキスト: remove-watermark.submit=透かしを削除 + #Change permissions permissions.title=権限の変更 permissions.header=権限の変更 @@ -401,6 +743,7 @@ permissions.selectText.9=印刷を禁止 permissions.selectText.10=異なる形式の印刷を禁止 permissions.submit=変更 + #remove password removePassword.title=パスワードの削除 removePassword.header=パスワードの削除 (復号化) @@ -408,7 +751,9 @@ removePassword.selectText.1=復号化するPDFを選択 removePassword.selectText.2=パスワード removePassword.submit=削除 -changeMetadata.title=メタデータの変更 + +#changeMetadata +changeMetadata.title=タイトル: changeMetadata.header=メタデータの変更 changeMetadata.selectText.1=変更したい変数を編集してください changeMetadata.selectText.2=すべてのメタデータを削除 @@ -426,27 +771,30 @@ changeMetadata.selectText.4=その他のメタデータ: changeMetadata.selectText.5=カスタムメタデータの追加 changeMetadata.submit=変更 + +#xlsToPdf xlsToPdf.title=ExcelをPDFに変換 xlsToPdf.header=ExcelをPDFに変換 xlsToPdf.selectText.1=変換するXLSまたはXLSX Execlシートを選択 xlsToPdf.convert=変換 - - +#pdfToPDFA pdfToPDFA.title=PDFをPDF/Aに変換 pdfToPDFA.header=PDFをPDF/Aに変換 pdfToPDFA.credit=本サービスはPDF/Aの変換にOCRmyPDFを使用しています。 pdfToPDFA.submit=変換 - +#PDFToWord PDFToWord.title=PDFをWordに変換 PDFToWord.header=PDFをWordに変換 PDFToWord.selectText.1=出力ファイル形式 PDFToWord.credit=本サービスはファイル変換にLibreOfficeを使用しています。 PDFToWord.submit=変換 + +#PDFToPresentation PDFToPresentation.title=PDFをプレゼンテーションに変換 PDFToPresentation.header=PDFをプレゼンテーションに変換 PDFToPresentation.selectText.1=出力ファイル形式 @@ -454,6 +802,7 @@ PDFToPresentation.credit=本サービスはファイル変換にLibreOfficeを PDFToPresentation.submit=変換 +#PDFToText PDFToText.title=PDFをText/RTFに変換 PDFToText.header=PDFをText/RTFに変換 PDFToText.selectText.1=出力ファイル形式 @@ -461,11 +810,14 @@ PDFToText.credit=本サービスはファイル変換にLibreOfficeを使用し PDFToText.submit=変換 +#PDFToHTML PDFToHTML.title=PDFをHTMLに変換 PDFToHTML.header=PDFをHTMLに変換 PDFToHTML.credit=本サービスはファイル変換にLibreOfficeを使用しています。 PDFToHTML.submit=変換 + +#PDFToXML PDFToXML.title=PDFをXMLに変換 PDFToXML.header=PDFをXMLに変換 PDFToXML.credit=本サービスはファイル変換にLibreOfficeを使用しています。 diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index 2f26a6b3..956aad6d 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=PDF 선택 @@ -26,9 +26,6 @@ text=텍스트 font=폰트 selectFillter=-- 선택 -- pageNum=페이지 번호 -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=당신의 PDF에 필요한 모든 것이 있는 로컬 호스팅된 home.multiTool.title=PDF 멀티 툴 home.multiTool.desc=페이지를 병합, 회전, 재배열, 제거하세요. -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=병합 home.merge.desc=여러 개의 PDF를 쉽게 하나로 합치세요. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=분할 home.split.desc=PDF를 여러 개의 문서로 분할하세요. +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=회전 home.rotate.desc=PDF를 쉽게 회전하세요. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Image to PDF home.imageToPdf.desc=이미지(PNG, JPEG, GIF)를 PDF로 변환하세요. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF to Image home.pdfToImage.desc=PDF를 이미지(PNG, JPEG, GIF)로 변환하세요. +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=정렬 home.pdfOrganiser.desc=페이지를 원하는 순서대로 제거/재배열하세요. +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=사진 추가 home.addImage.desc=PDF의 설정된 위치에 이미지를 추가하세요.(개발 중) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=워터마크 추가 home.watermark.desc=PDF 문서에 사용자 지정 워터마크를 추가하세요. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=권한 변경 home.permissions.desc=PDF 문서의 권한을 변경하세요. +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=제거 home.removePages.desc=PDF 문서에서 원치 않는 페이지를 제거하세요. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=비밀번호 추가 home.addPassword.desc=PDF 문서를 비밀번호로 암호화하세요. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=비밀번호 제거 home.removePassword.desc=PDF 문서에서 비밀번호를 제거하세요. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=압축 home.compressPdfs.desc=파일 크기를 줄이기 위해 PDF 문서를 압축하세요. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=메타데이터 변경 home.changeMetadata.desc=PDF 문서의 메타데이터를 수정/제거/추가하세요. +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=파일을 PDF로 변환 home.fileToPDF.desc=거의 모든 파일을 PDF로 변환하세요(DOCX, PNG, XLS, PPT, TXT 등) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR / 깔끔하게 스캔 home.ocr.desc=깔끔하게 스캔하고 PDF 내의 이미지에서 텍스트를 감지하여 텍스트로 다시 추가합니다. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=이미지 추출 home.extractImages.desc=PDF에서 모든 이미지를 추출하여 zip으로 저장합니다. +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF to PDF/A home.pdfToPDFA.desc=장기 보관을 위해 PDF를 PDF/A 문서로 변환하세요. +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF to Word home.PDFToWord.desc=PDF를 Word 형식으로 변환하세요. (DOC, DOCX, ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF to 프리젠테이션 home.PDFToPresentation.desc=PDF를 프리젠테이션 형식으로 변환하세요. (PPT, PPTX, ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF to 텍스트/RTF home.PDFToText.desc=PDF를 텍스트 또는 RTF 형식으로 변환하세요. +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF to HTML home.PDFToHTML.desc=PDF를 HTML 형식으로 변환하세요. +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF to XML home.PDFToXML.desc=PDF를 XML 형식으로 변환하세요. +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=스캔한 사진 감지/분할 home.ScannerImageSplit.desc=사진/PDF 내에서 여러 장의 사진을 분할합니다. +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=서명 home.sign.desc=PDF에 그림, 텍스트, 이미지로 서명을 추가합니다. +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=합치기 home.flatten.desc=PDF에서 모든 인터랙션 요소와 양식을 제거하세요. +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=복구 home.repair.desc=손상된 PDF의 복구를 시도합니다. +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=빈 페이지 제거 home.removeBlanks.desc=문서에서 빈 페이지를 감지하고 제거합니다. +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=비교 home.compare.desc=2개의 PDF 문서를 비교하고 차이를 표시합니다. +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=인증서로 서명 home.certSign.desc=PDF에 인증서/키로 서명합니다. (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -359,7 +520,7 @@ ScannerImageSplit.selectText.7=최소 윤곽 영역: ScannerImageSplit.selectText.8=사진의 최소 윤곽선 영역 임계값을 설정합니다. ScannerImageSplit.selectText.9=테두리 크기: ScannerImageSplit.selectText.10=출력에서 흰색 테두리를 방지하기 위해 추가 및 제거되는 테두리의 크기를 설정합니다(기본값: 1). - + #OCR ocr.title=OCR / 깔끔하게 스캔 diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index fd90723b..7c78541c 100644 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Wybierz PDF @@ -26,9 +26,6 @@ text=Tekst font=Czcionka selectFillter=-- Wybierz -- pageNum=Numer strony -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=Twoja lokalna aplikacja do kompleksowej obsługi Twoich potrzeb związ home.multiTool.title=Multi narzędzie PDF home.multiTool.desc=Łącz, dziel, obracaj, zmieniaj kolejność i usuwaj strony -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Połącz home.merge.desc=Łatwe łączenie wielu dokumentów PDF w jeden. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Podziel home.split.desc=Podziel dokument PDF na wiele dokumentów +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Obróć home.rotate.desc=Łatwo obracaj dokumenty PDF. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Obraz na PDF home.imageToPdf.desc=Konwertuj obraz (PNG, JPEG, GIF) do dokumentu PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF na Obraz home.pdfToImage.desc=Konwertuj plik PDF na obraz (PNG, JPEG, GIF). +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Uporządkuj home.pdfOrganiser.desc=Usuń/Zmień kolejność stron w dowolnej kolejności +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Dodaj obraz home.addImage.desc=Dodaje obraz w wybranym miejscu w dokumencie PDF (moduł w budowie) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Dodaj znak wodny home.watermark.desc=Dodaj niestandardowy znak wodny do dokumentu PDF. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Zmień uprawnienia home.permissions.desc=Zmień uprawnienia dokumentu PDF +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Usuń home.removePages.desc=Usuń niechciane strony z dokumentu PDF. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Dodaj hasło home.addPassword.desc=Zaszyfruj dokument PDF za pomocą hasła. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Usuń hasło home.removePassword.desc=Usuń ochronę hasłem z dokumentu PDF. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Kompresuj home.compressPdfs.desc=Kompresuj dokumenty PDF, aby zmniejszyć ich rozmiar. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Zmień metadane home.changeMetadata.desc=Zmień/Usuń/Dodaj metadane w dokumencie PDF +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Konwertuj plik do PDF home.fileToPDF.desc=Konwertuj dowolny plik do dokumentu PDF (DOCX, PNG, XLS, PPT, TXT i więcej) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR / Zamiana na tekst home.ocr.desc=OCR skanuje i wykrywa tekst z obrazów w dokumencie PDF i zamienia go na tekst. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Wyodrębnij obrazy home.extractImages.desc=Wyodrębnia wszystkie obrazy z dokumentu PDF i zapisuje je w wybranym formacie +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF na PDF/A home.pdfToPDFA.desc=Konwertuj dokument PDF na PDF/A w celu długoterminowego przechowywania +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF na Word home.PDFToWord.desc=Konwertuj dokument PDF na formaty Word (DOC, DOCX i ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF na Prezentację home.PDFToPresentation.desc=Konwertuj dokument PDF na formaty prezentacji (PPT, PPTX i ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF na Tekst/RTF home.PDFToText.desc=Konwertuj dokument PDF na tekst lub format RTF +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF na HTML home.PDFToHTML.desc=Konwertuj dokument PDF na format HTML +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF na XML home.PDFToXML.desc=Konwertuj dokument PDF na format XML +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Wykryj/Podziel zeskanowane zdjęcia home.ScannerImageSplit.desc=Podziel na wiele zdjęć z jednego zdjęcia/PDF +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Podpis home.sign.desc=Dodaje podpis do dokument PDF za pomocą rysunku, tekstu lub obrazu +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Spłaszcz home.flatten.desc=Usuń wszystkie interaktywne elementy i formularze z dokumentu PDF +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Napraw home.repair.desc=Spróbuj naprawić uszkodzony dokument PDF +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Usuń puste strony home.removeBlanks.desc=Wykrywa i usuwa puste strony z dokumentu PDF +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Porównaj home.compare.desc=Porównuje i pokazuje różnice między dwoma dokumentami PDF +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Podpisz certyfikatem home.certSign.desc=Podpisz dokument PDF za pomocą certyfikatu/klucza prywatnego (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Układ wielu stron home.pageLayout.desc=Scal wiele stron dokumentu PDF w jedną stronę +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Dopasuj rozmiar stron home.scalePages.desc=Dopasuj rozmiar stron wybranego dokumentu PDF - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -359,7 +520,7 @@ ScannerImageSplit.selectText.7=Minimalny obszar konturu: ScannerImageSplit.selectText.8=Ustawia próg minimalnego obszaru konturu dla zdjęcia ScannerImageSplit.selectText.9=Rozmiar obramowania: ScannerImageSplit.selectText.10=Ustawia rozmiar dodawanego i usuwanego obramowania, aby uniknąć białych obramowań na wyjściu (domyślnie: 1). - + #OCR ocr.title=OCR / Zamiana na tekst diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index 0715cf0d..f6e4cda1 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Selecione PDF(s) @@ -26,9 +26,6 @@ text=Texto font=Fonte selectFillter=-- Selecione -- pageNum=Número de página -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=Seu melhor utilitário para as necessidades de PDF. home.multiTool.title=Multiferramenta de PDF home.multiTool.desc=Mesclar, girar, reorganizar e remover páginas -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=mesclar home.merge.desc=Mescle facilmente vários PDFs em um. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Dividir home.split.desc=Dividir PDFs em vários documentos +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Girar home.rotate.desc=Gire facilmente seus PDFs. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Imagem para PDF home.imageToPdf.desc=Converta uma imagem (PNG, JPEG, GIF) em PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF para imagem home.pdfToImage.desc=Converta um PDF em uma imagem. (PNG, JPG, GIF) +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Organizar home.pdfOrganiser.desc=Remova/reorganize as páginas em qualquer ordem +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Adicionar imagem home.addImage.desc=Adiciona uma imagem em um local definido no PDF (trabalho em andamento) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Adicione uma Marca d'água home.watermark.desc=Adicione uma marca d'água personalizada ao seu documento PDF. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Alterar permissões home.permissions.desc=Altere as permissões do seu documento PDF +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Remover home.removePages.desc=Exclua as páginas indesejadas do seu documento PDF. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Adicionar senha home.addPassword.desc=Criptografe seu documento PDF com uma senha. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Remover senha home.removePassword.desc=Remova a proteção por senha do seu documento PDF. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Comprimir home.compressPdfs.desc=Comprima PDFs para reduzir o tamanho do arquivo. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Alterar metadados home.changeMetadata.desc=Alterar/remover/adicionar metadados de um documento PDF +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Converter arquivo para PDF home.fileToPDF.desc=Converta praticamente qualquer arquivo em PDF (DOCX, PNG, XLS, PPT, TXT e mais) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR / Varreduras de limpeza home.ocr.desc=A limpeza verifica e detecta texto de imagens em um PDF e o adiciona novamente como texto. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Extrair imagens home.extractImages.desc=Extrai todas as imagens de um PDF e as salva em zip +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF para PDF/A home.pdfToPDFA.desc=Converta PDF para PDF/A para armazenamento de longo prazo +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF para Word home.PDFToWord.desc=Converter PDF para formatos Word (DOC, DOCX e ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF para apresentação home.PDFToPresentation.desc=Converter PDF para formatos de apresentação (PPT, PPTX e ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF para Texto/RTF home.PDFToText.desc=Converter PDF em formato de texto ou RTF +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF para HTML home.PDFToHTML.desc=Converter PDF para o formato HTML +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF para XML home.PDFToXML.desc=Converter PDF para o formato XML +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Detectar/dividir fotos digitalizadas home.ScannerImageSplit.desc=Divide várias fotos de dentro de uma foto/PDF +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Sinal home.sign.desc=Adiciona assinatura ao PDF por desenho, texto ou imagem +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=achatar home.flatten.desc=Remova todos os elementos e formulários interativos de um PDF +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Reparar home.repair.desc=Tenta reparar um PDF corrompido/quebrado +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Remover páginas em branco home.removeBlanks.desc=Detecta e remove páginas em branco de um documento +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Comparar home.compare.desc=Compara e mostra as diferenças entre 2 documentos PDF +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Assinar com certificado home.certSign.desc=Assina um PDF com um Certificado/Chave (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -272,6 +433,7 @@ autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit + #pipeline pipeline.title=Pipeline @@ -358,7 +520,7 @@ ScannerImageSplit.selectText.7=Área mínima de contorno: ScannerImageSplit.selectText.8=Define o limite mínimo da área de contorno para uma foto ScannerImageSplit.selectText.9=Tamanho da Borda: ScannerImageSplit.selectText.10=Define o tamanho da borda adicionada e removida para evitar bordas brancas na saída (padrão: 1). - + #OCR ocr.title=OCR / Limpeza de digitalização diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index a7afb959..e28e9d8d 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Selectează fișiere PDF @@ -26,9 +26,6 @@ text=Text font=Font selectFillter=-- Selectează -- pageNum=Numărul paginii -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=Un singur punct de oprire găzduit local pentru toate nevoile tale leg home.multiTool.title=Instrument multiplu PDF home.multiTool.desc=Unifică, rotește, rearanjează și elimină pagini -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Unifică home.merge.desc=Unifică cu ușurință mai multe fișiere PDF într-unul singur. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Desparte home.split.desc=Desparte fișierele PDF în mai multe documente. +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Rotește home.rotate.desc=Rotește cu ușurință fișierele PDF. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Imagine în PDF home.imageToPdf.desc=Convertește o imagine (PNG, JPEG, GIF) în PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF în Imagine home.pdfToImage.desc=Convertește un fișier PDF în imagine (PNG, JPEG, GIF). +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Organizează home.pdfOrganiser.desc=Elimină/rearanjează pagini în orice ordine +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Adaugă imagine home.addImage.desc=Adaugă o imagine într-o locație specifică pe PDF (în curs de dezvoltare) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Adaugă Filigran home.watermark.desc=Adaugă un filigran personalizat la documentul PDF. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Schimbă permisiuni home.permissions.desc=Schimbă permisiunile documentului PDF +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Elimină home.removePages.desc=Șterge paginile nedorite din documentul PDF. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Adaugă Parolă home.addPassword.desc=Criptează documentul PDF cu o parolă. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Elimină Parola home.removePassword.desc=Elimină protecția cu parolă din documentul PDF. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Comprimă home.compressPdfs.desc=Comprimă fișierele PDF pentru a reduce dimensiunea lor. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Schimbă Metadatele home.changeMetadata.desc=Schimbă/Elimină/Adaugă metadate într-un document PDF. +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Convertește fișierul în PDF home.fileToPDF.desc=Convertește aproape orice fișier în format PDF (DOCX, PNG, XLS, PPT, TXT și altele). +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR / Curățare scanări home.ocr.desc=Curăță scanările și detectează textul din imaginile dintr-un PDF și îl adaugă ca text. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Extrage Imagini home.extractImages.desc=Extrage toate imaginile dintr-un PDF și le salvează într-un fișier zip. +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF în PDF/A home.pdfToPDFA.desc=Convertește un document PDF în format PDF/A pentru stocare pe termen lung. +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF în Word home.PDFToWord.desc=Convertește un document PDF în formate Word (DOC, DOCX și ODT). +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF în Prezentare home.PDFToPresentation.desc=Convertește un document PDF în formate de prezentare (PPT, PPTX și ODP). +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF în Text/RTF home.PDFToText.desc=Convertește un document PDF în format Text sau RTF. +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF în HTML home.PDFToHTML.desc=Convertește un document PDF în format HTML. +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF în XML home.PDFToXML.desc=Convertește un document PDF în format XML. +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Detectează/Împarte poze scanate home.ScannerImageSplit.desc=Împarte mai multe poze dintr-o poză/PDF. +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Semnează home.sign.desc=Adaugă o semnătură la documentul PDF prin desenare, text sau imagine. +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Nivelare home.flatten.desc=Elimină toate elementele interactive și formularele dintr-un PDF. +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Repară home.repair.desc=Încearcă să repare un document PDF corupt/defect. +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Elimină pagini goale home.removeBlanks.desc=Detectează și elimină paginile goale dintr-un document. +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Compară home.compare.desc=Compară și arată diferențele dintre 2 documente PDF. +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Semnare cu certificat home.certSign.desc=Semnează un PDF cu un certificat/cheie (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -359,7 +520,7 @@ ScannerImageSplit.selectText.7=Arie minimă a conturului: ScannerImageSplit.selectText.8=Stabilește pragul minim de arie a conturului pentru o fotografie. ScannerImageSplit.selectText.9=Mărimea marginii: ScannerImageSplit.selectText.10=Stabilește mărimea marginii adăugate și eliminate pentru a evita marginile albe în rezultat (implicit: 1). - + #OCR ocr.title=OCR / Curățare scanare diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index b52739ec..5b509f46 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Выберите PDF(ы) @@ -26,9 +26,6 @@ text=Текст font=Шрифт selectFillter=-- Выбрать -- pageNum=номер страницы -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=Ваш локальный универсальный магазин д home.multiTool.title=Мультиинструмент PDF home.multiTool.desc=Объединение, поворот, изменение порядка и удаление страниц -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Объединить home.merge.desc=Легко объединяйте несколько PDF-файлов в один. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Разделить home.split.desc=Разделить PDF-файлы на несколько документов +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Повернуть home.rotate.desc=Легко поворачивайте свои PDF-файлы. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Изображение в PDF home.imageToPdf.desc=Преобразование изображения (PNG, JPEG, GIF) в PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF в изображение home.pdfToImage.desc=Преобразование PDF в изображение. (PNG, JPEG, GIF) +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Реорганизация home.pdfOrganiser.desc=Удалить/переставить страницы в любом порядке +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Добавить изображение home.addImage.desc=Добавляет изображение в заданное место в PDF (в процессе) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Добавить водяной знак home.watermark.desc=Добавьте собственный водяной знак в документ PDF. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Изменить разрешения home.permissions.desc=Измените разрешения вашего PDF-документа +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Удаление home.removePages.desc=Удалите ненужные страницы из документа PDF. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Добавить пароль home.addPassword.desc=Зашифруйте PDF-документ паролем. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Удалить пароль home.removePassword.desc=Снимите защиту паролем с вашего PDF-документа. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Сжать home.compressPdfs.desc=Сжимайте PDF-файлы, чтобы уменьшить их размер. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Изменить метаданные home.changeMetadata.desc=Изменить/удалить/добавить метаданные из документа PDF +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Конвертировать файл в PDF home.fileToPDF.desc=Конвертируйте практически любой файл в PDF (DOCX, PNG, XLS, PPT, TXT и другие) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR / Очистка сканирования home.ocr.desc=Очистка сканирования и обнаружение текста на изображениях в PDF-файле и повторно добавляет его как текст. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Извлечь изображения home.extractImages.desc=Извлекает все изображения из PDF и сохраняет их в zip +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF в PDF/A home.pdfToPDFA.desc=Преобразование PDF в PDF/A для длительного хранения +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF в Word home.PDFToWord.desc=Преобразование PDF в форматы Word (DOC, DOCX и ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF в презентацию home.PDFToPresentation.desc=Преобразование PDF в форматы презентаций (PPT, PPTX и ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF в Text/RTF home.PDFToText.desc=Преобразование PDF в текстовый или RTF формат +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF в HTML home.PDFToHTML.desc=Преобразование PDF в формат HTML +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF в XML home.PDFToXML.desc=Преобразование PDF в формат XML +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Обнаружение/разделение отсканированных фотографий home.ScannerImageSplit.desc=Разделяет несколько фотографий из фото/PDF +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Подпись home.sign.desc=Добавляет подпись в PDF с помощью рисунка, текста или изображения +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Сглаживание home.flatten.desc=Удалить все интерактивные элементы и формы из PDF +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Ремонт home.repair.desc=Пытается восстановить поврежденный/сломанный PDF +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Удалить пустые страницы home.removeBlanks.desc=Обнаруживает и удаляет пустые страницы из документа +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Сравнение home.compare.desc=Сравнивает и показывает различия между двумя PDF-документами +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -359,7 +520,7 @@ ScannerImageSplit.selectText.7=Минимальная площадь конту ScannerImageSplit.selectText.8=Устанавливает минимальный порог области контура для фотографии ScannerImageSplit.selectText.9=Размер границы: ScannerImageSplit.selectText.10=Устанавливает размер добавляемой и удаляемой границы, чтобы предотвратить появление белых границ на выходе (по умолчанию: 1). - + #OCR ocr.title=OCR / Очистка сканирования diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index e30de8e6..d8552725 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=Välj PDF(er) @@ -12,9 +12,6 @@ genericSubmit=Skicka processTimeWarning=Varning: Denna process kan ta upp till en minut beroende på filstorlek pageOrderPrompt=Sidordning (Ange en kommaseparerad lista med sidnummer) : goToPage=Gå till -########################## -### TODO: Translate ### -########################## true=True false=Falskt unknown=Okänt @@ -29,9 +26,6 @@ text=Text font=Teckensnitt selectFillter=-- Välj -- pageNum=Sidnummer -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -69,134 +63,297 @@ home.desc=Din lokala one-stop-shop för alla dina PDF-behov. home.multiTool.title=PDF Multi-verktyg home.multiTool.desc=Sammanfoga, rotera, ordna om och ta bort sidor -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=Sammanfoga home.merge.desc=Sammanfoga enkelt flera PDF-filer till en. -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=Dela home.split.desc=Dela upp PDF-filer i flera dokument +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=Rotera home.rotate.desc=Rotera enkelt dina PDF-filer. +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=Bild till PDF home.imageToPdf.desc=Konvertera en bild (PNG, JPEG, GIF) till PDF. +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=PDF till bild home.pdfToImage.desc=Konvertera en PDF till en bild. (PNG, JPEG, GIF) +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=Ordna home.pdfOrganiser.desc=Ta bort/ordna om sidor i valfri ordning +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=Lägg till bild home.addImage.desc=Lägger till en bild på en angiven plats i PDF:en (pågår arbete) +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=Lägg till vattenstämpel home.watermark.desc=Lägg till en anpassad vattenstämpel till ditt PDF-dokument. +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=Ändra behörigheter home.permissions.desc=Ändra behörigheterna för ditt PDF-dokument +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=Ta bort home.removePages.desc=Ta bort oönskade sidor från ditt PDF-dokument. +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=Lägg till lösenord home.addPassword.desc=Kryptera ditt PDF-dokument med ett lösenord. +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=Ta bort lösenord home.removePassword.desc=Ta bort lösenordsskydd från ditt PDF-dokument. +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=Komprimera home.compressPdfs.desc=Komprimera PDF-filer för att minska deras filstorlek. +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=Ändra metadata home.changeMetadata.desc=Ändra/ta bort/lägg till metadata från ett PDF-dokument +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=Konvertera fil till PDF home.fileToPDF.desc=Konvertera nästan vilken fil som helst till PDF (DOCX, PNG, XLS, PPT, TXT och mer) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=OCR / Rensningsskanningar home.ocr.desc=Cleanup skannar och upptäcker text från bilder i en PDF och lägger till den igen som text. +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=Extrahera bilder home.extractImages.desc=Extraherar alla bilder från en PDF och sparar dem till zip +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF till PDF/A home.pdfToPDFA.desc=Konvertera PDF till PDF/A för långtidslagring +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF till Word home.PDFToWord.desc=Konvertera PDF till Word-format (DOC, DOCX och ODT) +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF till presentation home.PDFToPresentation.desc=Konvertera PDF till presentationsformat (PPT, PPTX och ODP) +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF till text/RTF home.PDFToText.desc=Konvertera PDF till text- eller RTF-format +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF till HTML home.PDFToHTML.desc=Konvertera PDF till HTML-format +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF till XML home.PDFToXML.desc=Konvertera PDF till XML-format +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=Detektera/Dela skannade foton home.ScannerImageSplit.desc=Delar flera foton från ett foto/PDF +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=Signera home.sign.desc=Lägger till signatur till PDF genom ritning, text eller bild +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=Platta till home.flatten.desc=Ta bort alla interaktiva element och formulär från en PDF +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=Reparera home.repair.desc=Försöker reparera en korrupt/trasig PDF +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=Ta bort tomma sidor home.removeBlanks.desc=Känner av och tar bort tomma sidor från ett dokument +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=Jämför home.compare.desc=Jämför och visar skillnaderna mellan 2 PDF-dokument +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -218,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -362,7 +520,7 @@ ScannerImageSplit.selectText.7=Minsta konturarea: ScannerImageSplit.selectText.8=Ställer in minsta tröskelvärde för konturarea för ett foto ScannerImageSplit.selectText.9=Kantstorlek: ScannerImageSplit.selectText.10=Ställer in storleken på kanten som läggs till och tas bort för att förhindra vita kanter i utdata (standard: 1). - + #OCR ocr.title=OCR / Scan Cleanup diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index 6a733490..447a4ec4 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -1,7 +1,7 @@ ########### # Generic # ########### -# the direction that the language is written (ltr = left to right, rtl = right to left) +# the direction that the language is written (ltr=left to right, rtl = right to left) language.direction=ltr pdfPrompt=选择PDF @@ -26,9 +26,6 @@ text=\u6587\u672C font=\u5B57\u4F53 selectFillter=-- 选择-- pageNum=页码 -########################## -### TODO: Translate ### -########################## sizes.small=Small sizes.medium=Medium sizes.large=Large @@ -66,134 +63,297 @@ home.desc=您的本地托管一站式服务,满足您的所有PDF需求。 home.multiTool.title=PDF多功能工具 home.multiTool.desc=合并、旋转、重新排列和删除PDF页面 -########################## -### TODO: Translate ### -########################## multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side home.merge.title=合并 home.merge.desc=轻松合并多个PDF为一个。 -########################## -### TODO: Translate ### -########################## merge.tags=merge,Page operations,Back end,server side home.split.title=拆分 home.split.desc=将 PDF 拆分为多个文档。 +########################## +### TODO: Translate ### +########################## +split.tags=Page operations,divide,Multi Page,cut,server side home.rotate.title=旋转 home.rotate.desc=旋转PDF。 +########################## +### TODO: Translate ### +########################## +rotate.tags=server side + home.imageToPdf.title=转换图像到PDF home.imageToPdf.desc=转换图像(PNG, JPEG, GIF)到 PDF。 +########################## +### TODO: Translate ### +########################## +imageToPdf.tags=conversion,img,jpg,picture,photo home.pdfToImage.title=转换PDF到图像 home.pdfToImage.desc=转换PDF到图像(PNG, JPEG, GIF) +########################## +### TODO: Translate ### +########################## +pdfToImage.tags=conversion,img,jpg,picture,photo home.pdfOrganiser.title=整理 home.pdfOrganiser.desc=按任何顺序删除/重新排列页面。 +########################## +### TODO: Translate ### +########################## +pdfOrganiser.tags=duplex,even,odd,sort,move + home.addImage.title=在PDF中添加图片 home.addImage.desc=将图像添加到PDF的设定位置上 +########################## +### TODO: Translate ### +########################## +addImage.tags=img,jpg,picture,photo home.watermark.title=添加水印 home.watermark.desc=在PDF中添加一个自定义的水印。 +########################## +### TODO: Translate ### +########################## +watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo home.permissions.title=更改权限 home.permissions.desc=改变你的PDF文档的权限。 +########################## +### TODO: Translate ### +########################## +permissions.tags=read,write,edit,print + home.removePages.title=删除 home.removePages.desc=从你的PDF文档中删除不需要的页面。 +########################## +### TODO: Translate ### +########################## +removePages.tags=Remove pages,delete pages home.addPassword.title=添加密码 home.addPassword.desc=用密码来加密你的PDF文档。 +########################## +### TODO: Translate ### +########################## +addPassword.tags=secure,security home.removePassword.title=删除密码 home.removePassword.desc=从你的PDF文档中移除密码保护。 +########################## +### TODO: Translate ### +########################## +removePassword.tags=secure,Decrypt,security,unpassword,delete password home.compressPdfs.title=压缩 home.compressPdfs.desc=压缩PDF文件以减少其文件大小。 +########################## +### TODO: Translate ### +########################## +compressPdfs.tags=squish,small,tiny + home.changeMetadata.title=更改元数据 home.changeMetadata.desc=更改/删除/添加PDF文档的元数据。 +########################## +### TODO: Translate ### +########################## +changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats home.fileToPDF.title=将文件转换为PDF文件 home.fileToPDF.desc=将几乎所有文件转换为PDF(DOCX、PNG、XLS、PPT、TXT等) +########################## +### TODO: Translate ### +########################## +fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint home.ocr.title=运行OCR/清理扫描 home.ocr.desc=清理和检测PDF中的文本图像,并将其重新添加为文本。 +########################## +### TODO: Translate ### +########################## +ocr.tags=recognition,text,image,scan,read,identify,detection,editable + home.extractImages.title=提取图像 home.extractImages.desc=从PDF中提取所有的图像并将其保存到压缩包中。 +########################## +### TODO: Translate ### +########################## +extractImages.tags=picture,photo,save,archive,zip,capture,grab home.pdfToPDFA.title=PDF To PDF/A home.pdfToPDFA.desc=将PDF转换为PDF/A以便长期保存 +########################## +### TODO: Translate ### +########################## +pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation home.PDFToWord.title=PDF to Word home.PDFToWord.desc=将PDF转换为Word格式(DOC、DOCX和ODT)。 +########################## +### TODO: Translate ### +########################## +PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile home.PDFToPresentation.title=PDF To Presentation home.PDFToPresentation.desc=将PDF转换成演示文稿格式(PPT、PPTX和ODP)。 +########################## +### TODO: Translate ### +########################## +PDFToPresentation.tags=slides,show,office,microsoft home.PDFToText.title=PDF to RTF (Text) home.PDFToText.desc=将PDF转换为文本或RTF格式 +########################## +### TODO: Translate ### +########################## +PDFToText.tags=richformat,richtextformat,rich text format home.PDFToHTML.title=PDF To HTML home.PDFToHTML.desc=将PDF转换为HTML格式 +########################## +### TODO: Translate ### +########################## +PDFToHTML.tags=web content,browser friendly + home.PDFToXML.title=PDF To XML home.PDFToXML.desc=将PDF转换为XML格式 +########################## +### TODO: Translate ### +########################## +PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert home.ScannerImageSplit.title=检测/分割扫描的照片 home.ScannerImageSplit.desc=从一张照片/PDF中分割出多张照片 +########################## +### TODO: Translate ### +########################## +ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize home.sign.title=\u6807\u5FD7 home.sign.desc=\u901A\u8FC7\u7ED8\u56FE\u3001\u6587\u672C\u6216\u56FE\u50CF\u5411 PDF \u6DFB\u52A0\u7B7E\u540D +########################## +### TODO: Translate ### +########################## +sign.tags=authorize,initials,drawn-signature,text-sign,image-signature home.flatten.title=\u5C55\u5E73 home.flatten.desc=\u4ECE PDF \u4E2D\u5220\u9664\u6240\u6709\u4EA4\u4E92\u5143\u7D20\u548C\u8868\u5355 +########################## +### TODO: Translate ### +########################## +flatten.tags=static,deactivate,non-interactive,streamline home.repair.title=\u4FEE\u590D home.repair.desc=\u5C1D\u8BD5\u4FEE\u590D\u635F\u574F/\u635F\u574F\u7684 PDF +########################## +### TODO: Translate ### +########################## +repair.tags=fix,restore,correction,recover home.removeBlanks.title=\u5220\u9664\u7A7A\u767D\u9875 home.removeBlanks.desc=\u68C0\u6D4B\u5E76\u5220\u9664\u6587\u6863\u4E2D\u7684\u7A7A\u767D\u9875 +########################## +### TODO: Translate ### +########################## +removeBlanks.tags=cleanup,streamline,non-content,organize home.compare.title=\u6BD4\u8F83 home.compare.desc=\u6BD4\u8F83\u5E76\u663E\u793A 2 \u4E2A PDF \u6587\u6863\u4E4B\u95F4\u7684\u5DEE\u5F02 +########################## +### TODO: Translate ### +########################## +compare.tags=differentiate,contrast,changes,analysis home.certSign.title=Sign with Certificate home.certSign.desc=Signs a PDF with a Certificate/Key (PEM/P12) +########################## +### TODO: Translate ### +########################## +certSign.tags=authenticate,PEM,P12,official,encrypt home.pageLayout.title=Multi-Page Layout home.pageLayout.desc=Merge multiple pages of a PDF document into a single page +########################## +### TODO: Translate ### +########################## +pageLayout.tags=merge,composite,single-view,organize home.scalePages.title=Adjust page size/scale home.scalePages.desc=Change the size/scale of page and/or its contents. - -########################## -### TODO: Translate ### ########################## +### TODO: Translate ### +########################## +scalePages.tags=resize,modify,dimension,adapt + home.pipeline.title=Pipeline (Advanced) home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +########################## +### TODO: Translate ### +########################## +pipeline.tags=automate,sequence,scripted,batch-process home.add-page-numbers.title=Add Page Numbers home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +########################## +### TODO: Translate ### +########################## +add-page-numbers.tags=paginate,label,organize,index home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header +########################## +### TODO: Translate ### +########################## +auto-rename.tags=auto-detect,header-based,organize,relabel home.adjust-contrast.title=Adjust Colors/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +########################## +### TODO: Translate ### +########################## +adjust-contrast.tags=color-correction,tune,modify,enhance home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) +########################## +### TODO: Translate ### +########################## +crop.tags=trim,shrink,edit,shape home.autoSplitPDF.title=Auto Split Pages home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +########################## +### TODO: Translate ### +########################## +autoSplitPDF.tags=QR-based,separate,scan-segment,organize home.sanitizePdf.title=Sanitize home.sanitizePdf.desc=Remove scripts and other elements from PDF files +########################## +### TODO: Translate ### +########################## +sanitizePdf.tags=clean,secure,safe,remove-threats + +########################## +### TODO: Translate ### +########################## +home.URLToPDF.title=URL/Website To PDF +home.URLToPDF.desc=Converts any http(s)URL to PDF +URLToPDF.tags=web-capture,save-page,web-to-doc,archive + +########################## +### TODO: Translate ### +########################## +home.HTMLToPDF.title=HTML to PDF +home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +HTMLToPDF.tags=markup,web-content,transformation,convert ########################### @@ -215,6 +375,7 @@ HTMLToPDF.help=Accepts HTML files and ZIPs containing html/css/images etc requir HTMLToPDF.submit=Convert HTMLToPDF.credit=Uses WeasyPrint + #sanitizePDF sanitizePDF.title=Sanitize PDF sanitizePDF.header=Sanitize a PDF file @@ -359,7 +520,7 @@ ScannerImageSplit.selectText.7=最小轮廓面积: ScannerImageSplit.selectText.8=设置照片的最小轮廓面积阈值。 ScannerImageSplit.selectText.9=边框尺寸: ScannerImageSplit.selectText.10=设置添加和删除的边框大小,以防止输出中出现白边(默认值:1)。 - + #OCR ocr.title=OCR/扫描清理 From 29dab5e47dbb6042efb14e29d968536d9460806e Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Tue, 25 Jul 2023 00:01:20 +0100 Subject: [PATCH 09/18] numbers name --- .../SPDF/controller/api/other/PageNumbersController.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/controller/api/other/PageNumbersController.java b/src/main/java/stirling/software/SPDF/controller/api/other/PageNumbersController.java index c1454a24..9096e64e 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/other/PageNumbersController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/other/PageNumbersController.java @@ -165,10 +165,8 @@ public class PageNumbersController { pdfDoc.close(); byte[] resultBytes = baos.toByteArray(); - return ResponseEntity.ok() - .header("Content-Type", "application/pdf; charset=UTF-8") - .header("Content-Disposition", "inline; filename=" + URLEncoder.encode(file.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_numbersAdded.pdf", "UTF-8")) - .body(resultBytes); + return WebResponseUtils.bytesToWebResponse(resultBytes, URLEncoder.encode(file.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_numbersAdded.pdf", "UTF-8"), MediaType.APPLICATION_PDF); + } From d028465dc500d7d2b841507addebf64c31250832 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Tue, 25 Jul 2023 21:21:43 +0100 Subject: [PATCH 10/18] Update README.md --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index b2606c7d..8e69fb91 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,11 @@ Feel free to request any features or bug fixes either in github issues or our [D - Convert PDFs to and from images - Reorganize PDF pages into different orders. - Add/Generate signatures +- Format PDFs into a multi-paged page +- Scale page contents size by set % +- Adjust Contrast +- Crop PDF +- Auto Split PDF (With physically scanned page dividers) - Flatten PDFs - Repair PDFs - Detect and remove blank pages @@ -39,8 +44,14 @@ Feel free to request any features or bug fixes either in github issues or our [D - Add watermark(s) - Convert Any common file to PDF (using LibreOffice) - Convert PDF to Word/Powerpoint/Others (using LibreOffice) +- Convert HTML to PDF +- URL to PDF - Extract images from PDF +- Extract images from Scans +- Add page numbers +- Auto rename file by detecting PDF header text - OCR on PDF (Using OCRMyPDF) +- PDF/A conversion (Using OCRMyPDF) - Edit metadata - Dark mode support. - Custom download options (see [here](https://github.com/Frooodle/Stirling-PDF/blob/main/images/settings.png) for example) From 8260eced2d4f81e2e88a1b92edd34f19e1c55fe1 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Tue, 25 Jul 2023 23:36:19 +0100 Subject: [PATCH 11/18] auto split cleanup --- .../api/other/AutoSplitPdfController.java | 28 +++++++++++-------- .../resources/templates/auto-split-pdf.html | 4 +++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/controller/api/other/AutoSplitPdfController.java b/src/main/java/stirling/software/SPDF/controller/api/other/AutoSplitPdfController.java index e69c0597..9e08e9a7 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/other/AutoSplitPdfController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/other/AutoSplitPdfController.java @@ -41,20 +41,22 @@ public class AutoSplitPdfController { @PostMapping(value = "/auto-split-pdf", consumes = "multipart/form-data") @Operation(summary = "Auto split PDF pages into separate documents", description = "This endpoint accepts a PDF file, scans each page for a specific QR code, and splits the document at the QR code boundaries. The output is a zip file containing each separate PDF document. Input:PDF Output:ZIP Type:SISO") public ResponseEntity autoSplitPdf( - @RequestParam("fileInput") @Parameter(description = "The input PDF file which needs to be split into separate documents based on QR code boundaries.", required = true) MultipartFile file) + @RequestParam("fileInput") @Parameter(description = "The input PDF file which needs to be split into separate documents based on QR code boundaries.", required = true) MultipartFile file, + @RequestParam(value ="duplexMode",defaultValue = "false") @Parameter(description = "Flag indicating if the duplex mode is active, where the page after the divider also gets removed.", required = false) boolean duplexMode) throws IOException { + InputStream inputStream = file.getInputStream(); PDDocument document = PDDocument.load(inputStream); PDFRenderer pdfRenderer = new PDFRenderer(document); List splitDocuments = new ArrayList<>(); - List splitDocumentsBoas = new ArrayList<>(); // create this list to store ByteArrayOutputStreams for zipping + List splitDocumentsBoas = new ArrayList<>(); for (int page = 0; page < document.getNumberOfPages(); ++page) { BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 150); String result = decodeQRCode(bim); - - if(QR_CONTENT.equals(result) && page != 0) { + + if (QR_CONTENT.equals(result) && page != 0) { splitDocuments.add(new PDDocument()); } @@ -65,9 +67,16 @@ public class AutoSplitPdfController { firstDocument.addPage(document.getPage(page)); splitDocuments.add(firstDocument); } + + // If duplexMode is true and current page is a divider, then skip next page + if (duplexMode && QR_CONTENT.equals(result)) { + page++; + } } - // After all pages are added to splitDocuments, convert each to ByteArrayOutputStream and add to splitDocumentsBoas + // Remove split documents that have no pages + splitDocuments.removeIf(pdDocument -> pdDocument.getNumberOfPages() == 0); + for (PDDocument splitDocument : splitDocuments) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); splitDocument.save(baos); @@ -77,18 +86,16 @@ public class AutoSplitPdfController { document.close(); - // After this line, you can find your zip logic integrated Path zipFile = Files.createTempFile("split_documents", ".zip"); String filename = file.getOriginalFilename().replaceFirst("[.][^.]+$", ""); byte[] data; + try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) { - // loop through the split documents and write them to the zip file for (int i = 0; i < splitDocumentsBoas.size(); i++) { - String fileName = filename + "_" + (i + 1) + ".pdf"; // You should replace "originalFileName" with the real file name + String fileName = filename + "_" + (i + 1) + ".pdf"; ByteArrayOutputStream baos = splitDocumentsBoas.get(i); byte[] pdf = baos.toByteArray(); - // Add PDF file to the zip ZipEntry pdfEntry = new ZipEntry(fileName); zipOut.putNextEntry(pdfEntry); zipOut.write(pdf); @@ -101,9 +108,6 @@ public class AutoSplitPdfController { Files.delete(zipFile); } - - - // return the Resource in the response return WebResponseUtils.bytesToWebResponse(data, filename + ".zip", MediaType.APPLICATION_OCTET_STREAM); } diff --git a/src/main/resources/templates/auto-split-pdf.html b/src/main/resources/templates/auto-split-pdf.html index 8085f4d0..4f3045e0 100644 --- a/src/main/resources/templates/auto-split-pdf.html +++ b/src/main/resources/templates/auto-split-pdf.html @@ -25,6 +25,10 @@

+
+ + +

From 21de6c6520bdad2b6254a04494e7b97e51ad8307 Mon Sep 17 00:00:00 2001 From: NeilJared Date: Wed, 26 Jul 2023 12:17:20 +0200 Subject: [PATCH 12/18] Update messages_es_ES.properties partial translation update, will continue by line 348 --- src/main/resources/messages_es_ES.properties | 142 +++++++++---------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 56e92fdb..f750be96 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -6,7 +6,7 @@ language.direction=ltr pdfPrompt=Seleccionar PDF(s) multiPdfPrompt=Seleccionar PDFs (2+) -multiPdfDropPrompt=Selecciona (o arrastra y suelta) todos los PDFs que quieras +multiPdfDropPrompt=Seleccione (o arrastre y suelte) todos los PDFs que quiera imgPrompt=Seleccionar Imagen(es) genericSubmit=Enviar processTimeWarning=Advertencia: este proceso puede tardar hasta un minuto dependiendo del tamaño del archivo @@ -19,17 +19,17 @@ save=Guardar close=Cerrar filesSelected=archivos seleccionados noFavourites=No se agregaron favoritos -bored=¿Aburrido de esperar? +bored=¿Cansado de esperar? alphabet=Alfabeto downloadPdf=Descargar PDF text=Texto font=Fuente -selectFillter=-- Select -- +selectFillter=-- Seleccionar -- pageNum=Número de página -sizes.small=Small -sizes.medium=Medium -sizes.large=Large -sizes.x-large=X-Large +sizes.small=Paqueño +sizes.medium=Mediano +sizes.large=Grande +sizes.x-large=Extra grande error.pdfPassword=El documento PDF está protegido con contraseña y no se ha proporcionado o es incorrecta @@ -58,30 +58,30 @@ settings.zipThreshold=Ficheros ZIP cuando excede el número de ficheros descarga ############# # HOME-PAGE # ############# -home.desc=Tu ventanilla única autohospedada para todas tus necesidades PDF +home.desc=Su ventanilla única autohospedada para todas tus necesidades PDF home.multiTool.title=Multi-herramienta PDF home.multiTool.desc=Combinar, rotar, reorganizar y eliminar páginas -multiTool.tags=Multi Tool,Multi operation,UI,click drag,front end,client side +multiTool.tags=Multi-herramienta,Multi-operación,Interfaz de usuario,Arrastrar con un click,front end,lado del client home.merge.title=Unir home.merge.desc=Unir fácilmente múltiples PDFs en uno -merge.tags=merge,Page operations,Back end,server side +merge.tags=Unir,Operaciones de página,Back end,lado del servidor home.split.title=Dividir home.split.desc=Dividir PDFs en múltiples documentos ########################## ### TODO: Translate ### ########################## -split.tags=Page operations,divide,Multi Page,cut,server side +split.tags=Operaciones de página,dividir,Multi-página,cortar,lado del servidor home.rotate.title=Rotar -home.rotate.desc=Rotar fácilmente tus PDFs +home.rotate.desc=Rotar fácilmente sus PDFs ########################## ### TODO: Translate ### ########################## -rotate.tags=server side +rotate.tags=lado del servidor home.imageToPdf.title=Imagen a PDF @@ -89,43 +89,43 @@ home.imageToPdf.desc=Convertir una imagen (PNG, JPEG, GIF) a PDF ########################## ### TODO: Translate ### ########################## -imageToPdf.tags=conversion,img,jpg,picture,photo +imageToPdf.tags=conversión,img,jpg,imagen,fotografía home.pdfToImage.title=PDF a Imagen home.pdfToImage.desc=Convertir un PDF a una imagen (PNG, JPEG, GIF) ########################## ### TODO: Translate ### ########################## -pdfToImage.tags=conversion,img,jpg,picture,photo +pdfToImage.tags=conversión,img,jpg,imagen,fotografía home.pdfOrganiser.title=Organizador home.pdfOrganiser.desc=Eliminar/Reorganizar páginas en cualquier orden ########################## ### TODO: Translate ### ########################## -pdfOrganiser.tags=duplex,even,odd,sort,move +pdfOrganiser.tags=doble cara,pares,impares,ordenar,mover home.addImage.title=Agregar imagen al PDF -home.addImage.desc=Agregar una imagen en una ubicación establecida en el PDF (trabajo en progreso) +home.addImage.desc=Agregar una imagen en una ubicación establecida en el PDF (en desarrollo) ########################## ### TODO: Translate ### ########################## -addImage.tags=img,jpg,picture,photo +addImage.tags=img,jpg,imagen,fotografía home.watermark.title=Añadir marca de agua home.watermark.desc=Añadir una marca de agua predefinida al documento PDF ########################## ### TODO: Translate ### ########################## -watermark.tags=Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo +watermark.tags=Texto,repetir,etiquetar,propietario,copyight,marca comercial,img,jpg,imagen,fotografía home.permissions.title=Cambiar permisos home.permissions.desc=Cambiar los permisos del documento PDF ########################## ### TODO: Translate ### ########################## -permissions.tags=read,write,edit,print +permissions.tags=leer,escribir,editar,imprimir home.removePages.title=Eliminar @@ -133,28 +133,28 @@ home.removePages.desc=Eliminar páginas no deseadas del documento PDF ########################## ### TODO: Translate ### ########################## -removePages.tags=Remove pages,delete pages +removePages.tags=Borrar páginas,eliminar páginas home.addPassword.title=Añadir contraseña home.addPassword.desc=Encriptar el documento PDF con una contraseña ########################## ### TODO: Translate ### ########################## -addPassword.tags=secure,security +addPassword.tags=seguro,seguridad home.removePassword.title=Eliminar contraseña home.removePassword.desc=Eliminar la contraseña del documento PDF ########################## ### TODO: Translate ### ########################## -removePassword.tags=secure,Decrypt,security,unpassword,delete password +removePassword.tags=seguro,Desencriptar,seguridad,quitar contraseña,eliminar contraseña home.compressPdfs.title=Comprimir home.compressPdfs.desc=Comprimir PDFs para reducir el tamaño del fichero ########################## ### TODO: Translate ### ########################## -compressPdfs.tags=squish,small,tiny +compressPdfs.tags=aplastar,pequeño,diminuto home.changeMetadata.title=Cambiar metadatos @@ -162,21 +162,21 @@ home.changeMetadata.desc=Cambiar/Eliminar/Añadir metadatos al documento PDF ########################## ### TODO: Translate ### ########################## -changeMetadata.tags==Title,author,date,creation,time,publisher,producer,stats +changeMetadata.tags==Título,autor,fecha,creación,hora,editorial,productor,estadísticas home.fileToPDF.title=Convertir fichero a PDF home.fileToPDF.desc=Convertir casi cualquier archivo a PDF (DOCX, PNG, XLS, PPT, TXT y más) ########################## ### TODO: Translate ### ########################## -fileToPDF.tags=transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint +fileToPDF.tags=transformación,formato,documento,imagen,diapositiva,texto,conversión,office,docs,word,excel,powerpoint -home.ocr.title=Ejecutar OCR en PDF y/o escaneos de limpieza -home.ocr.desc=Escaneos de limpieza y detectar texto de imágenes dentro de un PDF y volver a agregarlo como texto +home.ocr.title=Ejecutar OCR en PDF y/o tareas de limpieza +home.ocr.desc=Tareas de limpieza y detectar texto en imágenes dentro de un PDF y volver a incrustarlo como texto ########################## ### TODO: Translate ### ########################## -ocr.tags=recognition,text,image,scan,read,identify,detection,editable +ocr.tags=reconocimiento,texto,imagen,escanear,leer,identificar,detección,editable home.extractImages.title=Extraer imágenes @@ -184,42 +184,42 @@ home.extractImages.desc=Extraer todas las imágenes de un PDF y guardarlas en ZI ########################## ### TODO: Translate ### ########################## -extractImages.tags=picture,photo,save,archive,zip,capture,grab +extractImages.tags=imagen,fotografía,guardar,archivo,zip,capturar,coger home.pdfToPDFA.title=Convertir PDF a PDF/A home.pdfToPDFA.desc=Convertir PDF a PDF/A para almacenamiento a largo plazo ########################## ### TODO: Translate ### ########################## -pdfToPDFA.tags=archive,long-term,standard,conversion,storage,preservation +pdfToPDFA.tags=archivo,largo plazo,estándar,conversión,almacewnamiento,conservación home.PDFToWord.title=PDF a Word home.PDFToWord.desc=Convertir formatos PDF a Word (DOC, DOCX y ODT) ########################## ### TODO: Translate ### ########################## -PDFToWord.tags=doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile +PDFToWord.tags=doc,docx,odt,word,transformación,formato,conversión,office,microsoft,archivo del documento home.PDFToPresentation.title=PDF a presentación home.PDFToPresentation.desc=Convertir PDF a formatos de presentación (PPT, PPTX y ODP) ########################## ### TODO: Translate ### ########################## -PDFToPresentation.tags=slides,show,office,microsoft +PDFToPresentation.tags=diapositivas,mostrar,office,microsoft home.PDFToText.title=PDF a TXT o RTF home.PDFToText.desc=Convertir PDF a formato TXT o RTF ########################## ### TODO: Translate ### ########################## -PDFToText.tags=richformat,richtextformat,rich text format +PDFToText.tags=formato enriquecido,formato de texto enriquecido,formato de texto enriquecido home.PDFToHTML.title=PDF a HTML home.PDFToHTML.desc=Convertir PDF a formato HTML ########################## ### TODO: Translate ### ########################## -PDFToHTML.tags=web content,browser friendly +PDFToHTML.tags=contenido web,amigable para navegador home.PDFToXML.title=PDF a XML @@ -227,132 +227,132 @@ home.PDFToXML.desc=Convertir PDF a formato XML ########################## ### TODO: Translate ### ########################## -PDFToXML.tags=data-extraction,structured-content,interop,transformation,convert +PDFToXML.tags=extracción de datos,contenido estructurado,interopersabilidad,transformación,convertir home.ScannerImageSplit.title=Detectar/Dividir fotos escaneadas home.ScannerImageSplit.desc=Dividir varias fotos dentro de una foto/PDF ########################## ### TODO: Translate ### ########################## -ScannerImageSplit.tags=separate,auto-detect,scans,multi-photo,organize +ScannerImageSplit.tags=separar,auto-detectar,escaneos,multi-foto,organizar home.sign.title=Firmar home.sign.desc=Añadir firma a PDF mediante dibujo, texto o imagen ########################## ### TODO: Translate ### ########################## -sign.tags=authorize,initials,drawn-signature,text-sign,image-signature +sign.tags=autorizar,iniciales,firma manuscrita,texto de firma,imagen de firma home.flatten.title=Aplanar home.flatten.desc=Eliminar todos los elementos y formularios interactivos de un PDF ########################## ### TODO: Translate ### ########################## -flatten.tags=static,deactivate,non-interactive,streamline +flatten.tags=estática,desactivar,no interactiva,etiqueta dinámica home.repair.title=Reparar home.repair.desc=Intentar reparar un PDF corrupto/roto ########################## ### TODO: Translate ### ########################## -repair.tags=fix,restore,correction,recover +repair.tags=reparar,restaurar,corregir,recuperar home.removeBlanks.title=Eliminar páginas en blanco home.removeBlanks.desc=Detectar y eliminar páginas en blanco de un documento ########################## ### TODO: Translate ### ########################## -removeBlanks.tags=cleanup,streamline,non-content,organize +removeBlanks.tags=limpieza,dinámica,sin contenido,organizar home.compare.title=Comparar home.compare.desc=Comparar y mostrar las diferencias entre 2 documentos PDF ########################## ### TODO: Translate ### ########################## -compare.tags=differentiate,contrast,changes,analysis +compare.tags=diferenciar,contrastar,cambios,análisis home.certSign.title=Firmar con certificado home.certSign.desc=Firmar un PDF con un Certificado/Clave (PEM/P12) ########################## ### TODO: Translate ### ########################## -certSign.tags=authenticate,PEM,P12,official,encrypt +certSign.tags=autentificar,PEM,P12,oficial,encriptar home.pageLayout.title=Diseño de varias páginas home.pageLayout.desc=Unir varias páginas de un documento PDF en una sola página ########################## ### TODO: Translate ### ########################## -pageLayout.tags=merge,composite,single-view,organize +pageLayout.tags=unir,compuesto,vista única,organizar home.scalePages.title=Escalar/ajustar tamaño de página home.scalePages.desc=Escalar/cambiar el tamaño de una pagina y/o su contenido ########################## ### TODO: Translate ### ########################## -scalePages.tags=resize,modify,dimension,adapt +scalePages.tags=cambiar tamaño,modificar,dimensionar,adaptar -home.pipeline.title=Pipeline (Advanced) -home.pipeline.desc=Run multiple actions on PDFs by defining pipeline scripts +home.pipeline.title=Secuencia (Avanzado) +home.pipeline.desc=Ejecutar varias tareas a PDFs definiendo una secuencia de comandos ########################## ### TODO: Translate ### ########################## -pipeline.tags=automate,sequence,scripted,batch-process +pipeline.tags=automatizar,secuencia,con script,proceso por lotes -home.add-page-numbers.title=Add Page Numbers -home.add-page-numbers.desc=Add Page numbers throughout a document in a set location +home.add-page-numbers.title=Aádir números de página +home.add-page-numbers.desc=Aádir números de página en un documento en una ubicación concreta ########################## ### TODO: Translate ### ########################## -add-page-numbers.tags=paginate,label,organize,index +add-page-numbers.tags=paginar,etiquetar,organizar,indexar -home.auto-rename.title=Auto Rename PDF File -home.auto-rename.desc=Auto renames a PDF file based on its detected header +home.auto-rename.title=Auto renombrar archivo PDF +home.auto-rename.desc=Auto renormbrar un archivo PDF según su encabezamiento detecetado ########################## ### TODO: Translate ### ########################## -auto-rename.tags=auto-detect,header-based,organize,relabel +auto-rename.tags=auto-detectar,basado en el encabezamiento,organizar,re-etiquetar -home.adjust-contrast.title=Adjust Colors/Contrast -home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF +home.adjust-contrast.title=Ajustar Color/Contraste +home.adjust-contrast.desc=Ajustar Contraste, Saturación y Brillo de un PDF ########################## ### TODO: Translate ### ########################## -adjust-contrast.tags=color-correction,tune,modify,enhance +adjust-contrast.tags=corrección de color,sintonizar color,modificar,mejorar -home.crop.title=Crop PDF -home.crop.desc=Crop a PDF to reduce its size (maintains text!) +home.crop.title=Recortar PDF +home.crop.desc=Recortar un PDF para reducir su tamaño (¡conservando el texto!) ########################## ### TODO: Translate ### ########################## -crop.tags=trim,shrink,edit,shape +crop.tags=recortar,contraer,editar,forma -home.autoSplitPDF.title=Auto Split Pages -home.autoSplitPDF.desc=Auto Split Scanned PDF with physical scanned page splitter QR Code +home.autoSplitPDF.title=Auto Dividir Páginas +home.autoSplitPDF.desc=Auto Dividir PDF escaneado con código QR divsor de página escaneada físicamente ########################## ### TODO: Translate ### ########################## -autoSplitPDF.tags=QR-based,separate,scan-segment,organize +autoSplitPDF.tags=Marcado por QR,separar,segmento de escaneo,organizar -home.sanitizePdf.title=Sanitize -home.sanitizePdf.desc=Remove scripts and other elements from PDF files +home.sanitizePdf.title=Desinfectar +home.sanitizePdf.desc=Eliminar scripts y otros elementos de los archivos PDF ########################## ### TODO: Translate ### ########################## -sanitizePdf.tags=clean,secure,safe,remove-threats +sanitizePdf.tags=limpiar,asegurar,seguro,quitar amenazas ########################## ### TODO: Translate ### ########################## -home.URLToPDF.title=URL/Website To PDF -home.URLToPDF.desc=Converts any http(s)URL to PDF -URLToPDF.tags=web-capture,save-page,web-to-doc,archive +home.URLToPDF.title=URL/Página web a PDF +home.URLToPDF.desc=Convierte cualquier dirección http(s) a PDF +URLToPDF.tags=captura web,guardar página,web-a-doc,archivo ########################## ### TODO: Translate ### ########################## -home.HTMLToPDF.title=HTML to PDF -home.HTMLToPDF.desc=Converts any HTML file or zip to PDF +home.HTMLToPDF.title=HTML a PDF +home.HTMLToPDF.desc=Convierte cualquier archivo HTML o ZIP a PDF HTMLToPDF.tags=markup,web-content,transformation,convert From bf995f989c340dfeaa26d293151536ffde87cb11 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 26 Jul 2023 13:00:06 +0100 Subject: [PATCH 13/18] fixes --- build.gradle | 2 +- .../controller/web/GeneralWebController.java | 44 ++++++++++++++++--- src/main/resources/messages_ar_AR.properties | 1 + src/main/resources/messages_ca_CA.properties | 1 + src/main/resources/messages_de_DE.properties | 1 + src/main/resources/messages_en_GB.properties | 1 + src/main/resources/messages_es_ES.properties | 1 + src/main/resources/messages_eu_ES.properties | 1 + src/main/resources/messages_fr_FR.properties | 1 + src/main/resources/messages_it_IT.properties | 1 + src/main/resources/messages_ja_JP.properties | 1 + src/main/resources/messages_ko_KR.properties | 1 + src/main/resources/messages_pl_PL.properties | 1 + src/main/resources/messages_pt_BR.properties | 1 + src/main/resources/messages_ro_RO.properties | 1 + src/main/resources/messages_ru_RU.properties | 1 + src/main/resources/messages_sv_SE.properties | 1 + src/main/resources/messages_zh_CN.properties | 1 + .../templates/convert/pdf-to-html.html | 10 ++--- 19 files changed, 61 insertions(+), 11 deletions(-) diff --git a/build.gradle b/build.gradle index 0afc366b..bf19d3c6 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group = 'stirling.software' -version = '0.11.0' +version = '0.11.1' sourceCompatibility = '17' repositories { diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index dcf953a5..8290f76b 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -2,7 +2,12 @@ package stirling.software.SPDF.controller.web; import java.io.File; import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; import java.nio.charset.StandardCharsets; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -124,17 +129,46 @@ public class GeneralWebController { return "sign"; } private List getFontNames() { + List fontNames = new ArrayList<>(); + try { - return Files.list(Paths.get("src/main/resources/static/fonts")) - .map(Path::getFileName) - .map(Path::toString) + // Get the directory URL from classpath + URL dirURL = getClass().getClassLoader().getResource("static/fonts"); + + if (dirURL != null && dirURL.getProtocol().equals("file")) { + // If running from the file system (e.g., IDE) + fontNames.addAll( + Files.list(Paths.get(dirURL.toURI())) + .map(java.nio.file.Path::getFileName) + .map(java.nio.file.Path::toString) + .filter(name -> name.endsWith(".woff2")) + .map(name -> name.substring(0, name.length() - 6)) // Remove .woff2 extension + .collect(Collectors.toList()) + ); + } else { + // If running from a JAR file + // Resources in JAR go through a different URL protocol. + // In this case, we'll use a different approach to list them. + + // Create a link to the resource. This assumes resources are at the root of the JAR. + URI uri = getClass().getResource("/").toURI(); + FileSystem fileSystem = FileSystems.newFileSystem(uri, new HashMap<>()); + Path myPath = fileSystem.getPath("/static/fonts/"); + Files.walk(myPath, 1) + .filter(path -> !Files.isDirectory(path)) + .map(path -> path.getFileName().toString()) .filter(name -> name.endsWith(".woff2")) .map(name -> name.substring(0, name.length() - 6)) // Remove .woff2 extension - .collect(Collectors.toList()); - } catch (IOException e) { + .forEach(fontNames::add); + fileSystem.close(); + } + } catch (IOException | URISyntaxException e) { throw new RuntimeException("Failed to read font directory", e); } + + return fontNames; } + @GetMapping("/crop") diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 9f3d30c6..96a53cec 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index fb29aa6b..bec93536 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 04f31beb..1ed74f91 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index e18ee264..0d881b65 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -309,6 +309,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 56e92fdb..4e87240f 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 1149b8ca..96db8581 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index b5e67732..86eb1fc6 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 25a5bc82..e8d706b0 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index ac20e9ec..fe6086e7 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -462,6 +462,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index 956aad6d..cd01f417 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index 7c78541c..7ea64167 100644 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index f6e4cda1..3b98b0e6 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index e28e9d8d..e66a6fc5 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index 5b509f46..28b0a1e7 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index d8552725..0e833124 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index 447a4ec4..d1b3b578 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -429,6 +429,7 @@ autoSplitPDF.selectText.2=Scan all your documents at once by inserting the divid autoSplitPDF.selectText.3=Upload the single large scanned PDF file and let Stirling PDF handle the rest. autoSplitPDF.selectText.4=Divider pages are automatically detected and removed, guaranteeing a neat final document. autoSplitPDF.formPrompt=Submit PDF containing Stirling-PDF Page dividers: +autoSplitPDF.duplexMode=Duplex Mode (Front and back scanning) autoSplitPDF.dividerDownload1=Download 'Auto Splitter Divider (minimal).pdf' autoSplitPDF.dividerDownload2=Download 'Auto Splitter Divider (with instructions).pdf' autoSplitPDF.submit=Submit diff --git a/src/main/resources/templates/convert/pdf-to-html.html b/src/main/resources/templates/convert/pdf-to-html.html index 16e0a39b..4e28471c 100644 --- a/src/main/resources/templates/convert/pdf-to-html.html +++ b/src/main/resources/templates/convert/pdf-to-html.html @@ -1,7 +1,7 @@ - +
@@ -11,14 +11,14 @@
-

- +

+

- + -

+

From 33a6a7869c19ec4e56d628c7d0f8dd0070b07ee0 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 26 Jul 2023 22:08:19 +0100 Subject: [PATCH 14/18] Further Fixes --- build.gradle | 2 +- .../converters/ConvertImgPDFController.java | 4 +- .../controller/web/GeneralWebController.java | 79 ++++++------------- src/main/resources/static/js/downloader.js | 18 ++++- .../templates/convert/img-to-pdf.html | 2 +- 5 files changed, 45 insertions(+), 60 deletions(-) diff --git a/build.gradle b/build.gradle index bf19d3c6..688bee00 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group = 'stirling.software' -version = '0.11.1' +version = '0.11.2' sourceCompatibility = '17' repositories { diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java index d19a24b6..d4964196 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java @@ -43,7 +43,7 @@ public class ConvertImgPDFController { @Parameter(description = "Choose between a single image containing all pages or separate images for each page", schema = @Schema(allowableValues = {"single", "multiple"})) String singleOrMultiple, @RequestParam("colorType") - @Parameter(description = "The color type of the output image(s)", schema = @Schema(allowableValues = {"rgb", "greyscale", "blackwhite"})) + @Parameter(description = "The color type of the output image(s)", schema = @Schema(allowableValues = {"color", "greyscale", "blackwhite"})) String colorType, @RequestParam("dpi") @Parameter(description = "The DPI (dots per inch) for the output image(s)") @@ -94,7 +94,7 @@ public class ConvertImgPDFController { @Parameter(description = "Whether to stretch the images to fit the PDF page or maintain the aspect ratio", example = "false") boolean stretchToFit, @RequestParam("colorType") - @Parameter(description = "The color type of the output image(s)", schema = @Schema(allowableValues = {"rgb", "greyscale", "blackwhite"})) + @Parameter(description = "The color type of the output image(s)", schema = @Schema(allowableValues = {"color", "greyscale", "blackwhite"})) String colorType, @RequestParam(defaultValue = "false", name = "autoRotate") @Parameter(description = "Whether to automatically rotate the images to better fit the PDF page", example = "true") diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index 8290f76b..75d67401 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -1,35 +1,25 @@ package stirling.software.SPDF.controller.web; - -import java.io.File; import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; import java.nio.charset.StandardCharsets; -import java.nio.file.FileSystem; -import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; +import org.springframework.core.io.support.ResourcePatternUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; -import java.util.HashMap; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; - import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.oas.annotations.Hidden; @@ -128,45 +118,28 @@ public class GeneralWebController { model.addAttribute("fonts", getFontNames()); return "sign"; } + + @Autowired + private ResourceLoader resourceLoader; + private List getFontNames() { - List fontNames = new ArrayList<>(); - try { - // Get the directory URL from classpath - URL dirURL = getClass().getClassLoader().getResource("static/fonts"); - - if (dirURL != null && dirURL.getProtocol().equals("file")) { - // If running from the file system (e.g., IDE) - fontNames.addAll( - Files.list(Paths.get(dirURL.toURI())) - .map(java.nio.file.Path::getFileName) - .map(java.nio.file.Path::toString) - .filter(name -> name.endsWith(".woff2")) - .map(name -> name.substring(0, name.length() - 6)) // Remove .woff2 extension - .collect(Collectors.toList()) - ); - } else { - // If running from a JAR file - // Resources in JAR go through a different URL protocol. - // In this case, we'll use a different approach to list them. - - // Create a link to the resource. This assumes resources are at the root of the JAR. - URI uri = getClass().getResource("/").toURI(); - FileSystem fileSystem = FileSystems.newFileSystem(uri, new HashMap<>()); - Path myPath = fileSystem.getPath("/static/fonts/"); - Files.walk(myPath, 1) - .filter(path -> !Files.isDirectory(path)) - .map(path -> path.getFileName().toString()) - .filter(name -> name.endsWith(".woff2")) - .map(name -> name.substring(0, name.length() - 6)) // Remove .woff2 extension - .forEach(fontNames::add); - fileSystem.close(); - } - } catch (IOException | URISyntaxException e) { + Resource[] resources = ResourcePatternUtils.getResourcePatternResolver(resourceLoader) + .getResources("classpath:static/fonts/*.woff2"); + + return Arrays.stream(resources) + .map(resource -> { + try { + String filename = resource.getFilename(); + return filename.substring(0, filename.length() - 6); // Remove .woff2 extension + } catch (Exception e) { + throw new RuntimeException("Error processing filename", e); + } + }) + .collect(Collectors.toList()); + } catch (Exception e) { throw new RuntimeException("Failed to read font directory", e); } - - return fontNames; } diff --git a/src/main/resources/static/js/downloader.js b/src/main/resources/static/js/downloader.js index e9abdf38..d06d82dc 100644 --- a/src/main/resources/static/js/downloader.js +++ b/src/main/resources/static/js/downloader.js @@ -154,11 +154,22 @@ async function submitMultiPdfForm(url, files) { if (zipFiles) { jszip = new JSZip(); } - + + + // Get the form with the method attribute set to POST + let postForm = document.querySelector('form[method="POST"]'); + // Get existing form data - let formData = new FormData($('form')[0]); + let formData; + if (postForm) { + formData = new FormData($(postForm)[0]); // Convert the form to a jQuery object and get the raw DOM element + } else { + console.log("No form with POST method found."); + } + //Remove file to reuse parameters for other runs formData.delete('fileInput'); + const CONCURRENCY_LIMIT = 8; const chunks = []; for (let i = 0; i < Array.from(files).length; i += CONCURRENCY_LIMIT) { @@ -169,10 +180,11 @@ async function submitMultiPdfForm(url, files) { const promises = chunk.map(async file => { let fileFormData = new FormData(); fileFormData.append('fileInput', file); - + console.log(fileFormData); // Add other form data for (let pair of formData.entries()) { fileFormData.append(pair[0], pair[1]); + console.log(pair[0]+ ', ' + pair[1]); } try { diff --git a/src/main/resources/templates/convert/img-to-pdf.html b/src/main/resources/templates/convert/img-to-pdf.html index b64f43f1..3182eb9d 100644 --- a/src/main/resources/templates/convert/img-to-pdf.html +++ b/src/main/resources/templates/convert/img-to-pdf.html @@ -31,7 +31,7 @@
- From 7ead12922f65f27afbcf49e4b3993d727e5ac40b Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 26 Jul 2023 22:08:34 +0100 Subject: [PATCH 15/18] new page --- images/stirling-home.png | Bin 131177 -> 121265 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/stirling-home.png b/images/stirling-home.png index 47d03b055ecaf3eecd90c7568ee0572e73904dd9..27241bf413187b7c57e86cb11efc0a6a988b3b50 100644 GIT binary patch literal 121265 zcmeFZcTkgC_cn|LJ&M3l6r|e_1%#uN0HKOf1r!Jn5Kw8-5?bgGv7ty&5RhJ^_nJT` z5kZRdPDnyfI;2oT2}$1YoO7O;cfR@l`prA<_s6$qGUQI?&b`apYhBm1*W&#{BOT7u z0;k#7*f{lc@0qZ%o$zC0J3jEo3DzenUwRH$e~$Q==-g#1?-yETT^x7TG}L5ctBU0~ zc*@SYKIN$k_F-e=YCC)#>4X+Ku(2`o^zLbz1=tet951-H8O-&h^Agv1-&7YCK1S)D zy|QCHZ+;~g*IzLwr1vIHH?L=}XIaQ3+o<@Jbl0sbk>_qE6}C&9PptHoJXlmEB;zSz zJB^Km<|@04SOLObe{X-UzjS8uUen^{-kegv+Kkr`RzLpJE=}~*JZU|86!`B4Y>zGt zWVh-3LHzFr_rhhHjQ@Kz=Y58eHhxlc?Z38T|`(C0pzZ};<7)2FC| z>b1e&1B7=M+=PJwf2;@rSA2PK>)*T36?7v(1}#x-b?3tODA@@t0h$V_W?<>0GK8o3l#m&M6t1HIIvb; zcdVQ*)29T?F`qQ7v_J7kSarphT)@PurS}Vy;Ztj0O)^xJb7qy74(P43oxWWasht1Z z{^wbiC4H|RRu1bZ@xet>hj0Uos(rgPO#VK{x!LemszWm zJ0NK}n>ef#WJZ&;7|NJ}rI*KGg`1Y13EwnRe5fp5yJ@g3q?-Rd$+p-&$u9p`XRH$5 zOL)Wi%s&r)_Xo=o&sJsifBMkl+R4*ahlT-#n;M>GxeY!HCO23#iiA8QoWHqHSHe?R z+^0`G4j1ux3&l}C^cMvb366Gy#QYFVCDRii^ADFZpJxJY82X430q4;Hf<5yn=O}tx2(2`By9bPu<21A?w!TAkX~Q4 zB|fU#{YFiyAz{Z}JZEhWjg(SVVM#BaTz4fBWgRfzmkJnzkSMfT2bwhUbAQ!WbJXIO zO_w~sCSzw?ofzQ>C=gNP>5g%S+B+}C0pxNg(p>{=z&{eV8&_873o_H^U3Ov@hP%Rf64 zt#|TK0tb`!0xG+={cRLF*~j~is(5*MP1~_)kP{XMe_b7YbNmv!o4xZYKK+~l?qL0Z z$?>^eiJb7gD(k_4k+3Q=1e!9NGDUgnvANdI@k`ndmjt8%&tgsALO#h$=9+Q zE^MqY3)_)7YI0!n@%x3{<)#{arMWj=L3RHxOxlx zz>~!Og}Km~4AtOT*D)j{t2GgpvFUCz*L0=d`K+_eYVo^G{#!(FFToZ;_G3Oh2>ui3 z*PGS)sy1N#+0NAbiN{w0`g?9zCz7D*UwC4oDVVPjsf1R#+6!C^Ytw!QN+WY)5^DEq zykuFvhCgt?Q+?oIS$v-2gYFl&b8k;O+T3=rWAlu2z1>BJU;Q>#=g`1)3f)-phtJ%S zm#`lyly>ejb173fVCmzI1$YfBC_vvjm$0Owy_p|7RufAd6-N3F(X}#1YwQWer&qq% zO{}!B(>`+=^x-2P=cFKU#n$QNo5ze@N8#!t*x2znUUaU76Pd#Wzw``5&2O&r5#H#evR+?*=p%Uo3 zknDT{)#NNOpd*VjQHJQHQzllU_!vd9VT4&D=M6<>=r&Caxmi#{F7&B5aDJFXY1-V{ zc>SJCaOg$~%3=5FtBhokuTOt(tPbXrH+|V++c+f{hdAKF6*71_iaW(l?XTq})n3XK zK*o1NI!L6O!CBRUZ!T=Tm_cjGIgY;DY=Lc-l>J1(&Cu2 zbe_<|cKVgo_Lsk+jyE_y--BMl5?(twXy=X0q#=X(IHnx)YkGTmT>eQE?ZN9!lmU!q0F2vTjkf6M`xQ-*LKhUZ(*)LtK zXI8<29C3;}EjQ~HAFy?C9tKlT*5|%QH`Qzd2mWw1UL42z9vtK-FVv;`xYPVd0t%05 zVYEIvuw=dmB_F)Aid8+OHv)d2K0Ex$eq4Csk@zXADyQh_FA8{ij`=nH1GIqp=3%ze0;| zb?uJ8DWU%E7kvt3iC%pSw}`~3Kn)L93%?{ck7*Tkcmx3Su}yI6SC{Sk5l~rZfk;Nv zc$urT?==4c@$=FC&S|X({5kMhrA=+v@?*OxIctOJg7GHzrvPl?ZAaqMVVPmknC2r3 zo1z_8=ADcbxsP_o37+`${u1>O=zYMf&o#B{Ebq~b@ZrX9I) zj9~llCw@?mTV^N?@?WWK>{v*H2#V2^Mwb-oZ0ozagoqOJ@A3h7m^A4`Riv8qSko;Y4L5Ry=`M0_N3lR4A+ljRl6q_ppcF>P*b3R&D1 ztWZ(zSq+il)-c*UF#ZdA-1YI!_zI0GqfALWLf+?Gg+=={ zO@l(knZFG`vvXK1@hpBF7fUF!1hq>SgAD*He4$8%v5(_=hqmzaDF8=($g{6qY}XeB z3#*eI$GozBYX+q-471!SR(iw>LU`mca^cI*7Gh6jp8fp*cmq@0_j!T;PeDm~?d9z= z%ob(J5Mu!{`r zYrliNF%d`0YSNfBr@XPfx0a_fU21Vs_$%jypx{;Br69n&iSvspJvPuE5lWB`6Qef$ z`wD%(^XAQFEyRC2o8KSC)bjI8irQ0clZcc2IINNmmAsMPO*)!9bv)-TJEG^j7<#&{ zgdDAwY?8J~)Utakt39I6#Mde)q6YlbgfXFYj-%Gj6MxVk;m zE+xEF58ffd3L4PHqC1Ur4~V0T)*CW>73qAZabWG3b9QHhFo5yF4AV+2A$3Mo7w_KL zJa?Qe?ZzRV{{B*VT&@4MFu2)jst)VsEIv5j7yNbuRFvaGZZv+w*sShvTE2e4|1DC= ze3X-XT%RQ5uZ|Q_A)W}3dgveqJ0QmiLPud^|Js(;E7(U=)FB>lN4vt`-$5tVY&YybA1+iw zwIyO&Vmnme=yIUr4CcSLal&{ zO0eMPX<-ey5hxt^%2hAnqVM-5X1A{c9yRv_iDjN^?8LjS8=dc|T$7!|1N56`VpOGG zw+K6p-L2<8&mUkanWyhM)q<)GF;#|^E02J+Ly6vo-7zb=zZYBrCo#lPKD%2M+ba#1 zok^q4-09?3**-XoRD1Dkc;udQgR42QqC{0oA_4VM&A&ALv}GM8K5%XjrUaJdb(V{y67#e#zwcfC`sz z5$Af?IH6$R7+Ep3L#EXpo+^leb?Y}y?(cWLJ5tUUKpuj zF$5LIVcVQ>dJr`)!c2V$97>(3UZFc#L}LzeQ-az|c1fJuEsWb@$30TN5ymFyU#(Y7 z{ND{6eLj(E$>eDjIe)9(9$Lvx2%&L1BtHf9*F(imIy-=E81@QFans@FZayto$D~%o z=lR(d3Bji{`)fZPpD0!SdRyHl$M1r|^T_5SqNp?eHdM>Ymkjrc-v#-X7hM#D^l&oB z)qv&n1Q$y4n9u>x4-<4JA<^#Ri~I{nEaW%IR&pynoQpdyQN&T|nggP0lKb8N?rGf7EK=S2#PmBO+DPS(oZE*4#L8!?P41m-;%_-=$}Tp(~K7;&EDU z@$SH49}Q|sBbmW%hmP++7UBJ=xNz5(v-&HhiL)X*op8LM#v>T-tqRRiwK$EeH8X%<}@ z!V1yBLV5M(1%5(#zSTQk^=>A)SDLjQZ_xdbfj>#^*dc;W^8igExZ>1u?k!An?8kO8 zT&nQw4MUTOJ|b0iWyId)Q$j!`!rWa1A$ldyWyXPMT(U8k5o*ec1f-dh*Q&9#E+aS( zw^jkPKEj#>K82mJ-*?d%d<=kn>Y>jouKwmCRf@wsBdDFV4%QYC16k`x%@p~}6WRXgX()glQ`Twr^V=Zd zvh673oa9)}p>Ps50YFLC^B@Pl ziI}vnnga889cJ?@Lh4g_Q;zp!mM%lK6qa_T{x=tAP4Pk#WEdw}OC-%{roW@3@V8{n zo95h`3C{Td!suTRTQxFz*g0v4&J3UL(SIloYNXyUx-D_88zE(WuPSmPLn`sxyCPV6 zu?$nsg1qtZ zsc;isis#nN7d$i0m12FJ2#*z#=nqP?4_E!BY4@n?4^TTlKc7jNIqu+gN?HE<9v6$y zhWz88`(M61U8>Nbyp7BhLdDL?Q6!6sfYIzQB1NG{7fOL1?Cp0Nw|AC#l-y3?q#Th*B`(l zdc?)0XUiA*e3PuF?tIiEaT$oW5#|!9W8?hwzoYMYX2=`G*ef;6e*ztA*rcPG~Rmi5n2%c8WJw83EnR!sLY-DUATyGUtGnEjEsT78&h-D7p8kghZR+Z%#o0{dU3bJ41umNaD+L^^fc zF0CKY0Au*uue#D9AopNd+Y8wDlP!KYOO0y*VTgW&uomXSDF#B`4>wu$Tf~2w(H;3s z_Svq6xz(Nc#G~Kd-(!h$#VnMs6T2F9PAmZ#a4J1i+ZOZ~b*}>8T8>mEe63%WJ?23P zu(2(`f@;5nDSGNUivY`uo%uXVoHwypC9O^vVWiD>wb{RMlhEW7aXQl{=JZ_8V%UJu zo=p9to!I0;27o+4oVf1#9-uON`Uc##V&{05-KCPT;lM*(L-R?%17Y9#A|VbA<|C^WW;Ctj>W_{6rLbkG zFHKeXAeAS*(Dav>>Rsy7JSW~Q%W_43zVeBUJ(IS4O=vg}J>dH18GPqhg#jZ!;6a&F zw?1D(a*bDToO5qM8^OH!74lV*p0L2hO2Vh}LdCf&ts}XAteBgO{Gq?Pdsp^RwdCft zukOheQG!X63r2tSSXMpJaC!w?76x8#r0VqMCA~JYsW%l2i!^nAV}P^ovN5Vg`!76H zW!d)o@T^iL3~eG2`P|DSKOvYiWE&KHaoubZ`Psv&=UY@^ZA@obOwW{oH}<0e|IDc- z_d&U(G}!RLYTQwYr#sE@)6Tp1U-lAZ0i?~5+!wo|fNOaTXB9ED$weg3BkFG=JXpna z8Lrr`rjJq+Q|GGoHq8a#xx!iCBbw~)WBn3gUck3= z3;RnaD~#S=x!>=D#dSxe;aVUUoHWBzp8P_16=TOSfaGTJQ%*aSqJ)Q$?cKOewvW7r z3=$ZIyH#dy6Ye@@R;Xu+B>Wtg`=Df}V_rU5dQx-@@U`>!6i(^tL)XQo;k>Q3)>l)W zYagwL3vgiPr4aGFDyrXUTU)(8WtjJe`qW)jnlGbavG^MpWBE*cGTEY-!8xIu8gr<5 z@BEaxkkG>L(wcolX4q$D`)v6MN7?E54^4m5#cu3~w3J_JP`{Inr)?`<+&M znIW<4)Z%(ssd4Uy#8DCFV<4HN4U2mI-Swvkf}TU?=jO}F9xQww1$W=egT9PC$#LyO zG`Dn=J=C1WKUw5`?5w$WM`i@9yF}x(c&(h#jh!;`pEqTXeJIi`l_inWrvv|7O#H5I z6+5%?E5z0%?@y|e|8K$@vu57+qX^KYzbbXsHTASol2dFuDm?~z6?n)DS<)${Nr^@pF+4(g22^M?lz3{z-reSdJBHVN|hw%ZEXQRFm2mvIy+|4eW? z^(IOwnKmIH!)=)9E?in%=ehd3MKv>7qpk)|+0eJFKa$aY?qT>AP9H3WUC>-~zqf3D z?M~gm(Y&U(qbI{Pp46`zTNy2=QTKZ49{8clkc0glj@nMc%*x>@9dOh2TyX&Lt7!te zKXF=qcqWD&mLdlsip27BuIzfd!lweCp*y)P`8l*L6TFJ5UhLY~y715hnG_FOFlbK2 z%|d*f)*Mb)rUKL1@0M<&Gc9u86)O)cLeQK36`%j4*zTtZ%{Ja!4x8GB-Cpxfs$D$CjU0(!@G zk>-`Y9D=S|3Y7RnkxGYY+omT^NY>4Ukg?Pfmdq%25cmKsy4RE5;vlm8mJvF(pZ+bn zx>*>-9K1~5UVL=nmRXl@qS&U+YLOD~bI!s#OM+JM->P_!{E5tT40Vh7x5>ucX4C?L+vrQD=01PxYQ5c;cDV)U(e$?%O0S9IJduy(y8yAPqmNH&YNt0_9yLEC#= z?e5QQU0|ilm;$GPt&Oo$vByt^L-oQsmKv#-*M9dJ?!jmGUX^YL0^$OiNKDy^O(!}Z zd4fJ}oV9g-;|bF4zS)NKtOv}oy?Y8xRj6`2t!?5MZD>F7Q>rbauUh+Z@B+6(7J6A)!~k)upOxCq!0J+Q!2 zUhC~j+^r*}35NsOx^A+>h}VwDWu04&6{8;MdyDxEP!POnhK z(`ab5pC2M*FQNaD$h;4uqu2|`nD81)TW={33VHIRBZGvdjP0=xfLf38y92MMq5WJR z53HIMwBlEQ4z<&1)bb8hRSmoqK6_EUBCEW)aYY|$@*{C5T7Qr>8?lOa5p~5GP=Y*g zY3^@eZj_V0_Elm*Ev9a&DhoEDOQnQH`xAwxtK4R}-SX4EO23@Tyb>LIXls2#0(a() zz}z0%OyKuEw@7=TJJ6fCDZJa)`^2P7e@2dA`@%f&eSU2s`)i6jvw`G*o#??o?le^o z1odS!skDu~%l)BGYKPaEt*<7z+4jOvYGu9MgDb_~6GVRMjki2}o}km=Hgai=7n0S& z@C21NkYEn8saxQuozae2d(rIHPDoCUu!nuN=6xBCAM?|Xq~}aY$c)^2qQJ0#*0qxytBOUhI~7tdh5Pxk5U5oEjUQi z89?_gkN7pE*j1ku7wD3^*rH3-dt$41Mf&o&_gQ?`hykX4pGA~U9ngdtnXFTJ-AQTL zysKA?m~KwD@1$Vdj(R6ZvA^}X3E&}cSb-N$1|HoBiN^U*@>5p=O`R)>K_v}G1T*VW zXQi=v6{O_Oj%X2j92Pw0HZBrd3^{S?-dVOgZ@+Q9Sd;q8r&pgSd76OAq-fm(|q>RO;ok^CIM_=c0f6A;P+TXnUn)+oQE zYeT-?PE?g(CoeOVT~VM~(Yb$Sa4B|NHzCMnR9sfRR_`G=K2lZQbGHn&MDq%&AGp+9 zr6-a05q_u}|gC_p;M9WGb1b+t*xXODtyJx5zx1Hm`)AS=?qE za4LK2`EUj~w(z3qA6J~$_f*9vU&S~+!SsdATz0PnswfuPC!71(L-^wr%2cJ&Drfrl z!Tr@oL2i!qq!+c8@=jA(7`q>hc`%c{SU;>ixP1P7-YLJ851368bIs2WJWtpttQG6A zs87)mdi(Ytt|Q+(HlOXy&54PokpMrY7Q5NS;)t!&A}M9LF^-=bpvB7R>}P$*oGqVe z&*-IdpepvM)2Cb~31`s`ejBdiO|F!MKBH;NgMDx-?V6dGyaz={^{Ifaf62X?Cyunw zP=fWgfnKz2FiokdHl^;YW8E_`JIFyCc>hXSTi;RB{uGK{+VwxB45jI_;{&BaJh+Up z{=5`bb!q!>i^ci})0O_ddXhYfwKewma(belcCWr?t~arM>~s)T9ZQYqnZkckkh06j z*?J@T{Ir@5&i)48ukWS6yVyH^s#}B@s_f89%wIkCYNC41pwm5QH+<13e!4Bqz~ zm*|C)(BD~Tjz$X4K#2y(#Y+H7_>bB6qsz`L>iCS!+8Qb zo?lyrn~Gg{+)r$X>t-eEA{T$~3TMQnH*&ZIpl8<p$!TR;DFIP{ zhfX38j6vU@j1GnZkUbGNpekJ^7bDtK<2$S@DepiVKdSEKm5M`G{ZgtMIC2R%=XGub z7ngVH5}#5NtR!)wqGGl)rexOxSv1GQ7rb=TZ`8b4l0n*C*BBIE3w)5OW}S1&12VCv ztaU#@=SSLrz<^rO2j=()U9jhpa=>mSmymL9U8=&(Fbc)hgnq&wytlD9f?3QUQLi@D zF(GBV1H6M-_n{@7MLRDazr}DO9ToTaP5nkZ+K5Lkf5E@TYQ^Ha29jx2!8}lC(;hT3 zud}!p53@kPDlJ<Zk9MXR2H$ zY04yiS+FZ~tXt`o)Yq}H70E&~-9dsSOxaM9G|C5!8G3uVdBnrw1`(xv7a0qR{`}0A zjOyh$t@6el?YSzD&C10o@=hq8Ms}s!Ttah+C==DTFl{xezWE*cimye2m-Re?#ZF_c zk71EX*H4nvdG17eU{``WUklZQhh7v~JJrZ-Qt3JvcQPL5iZ>~(fJfC%h^ZSISs8tC zF-?;+@5@GK6cO$Hfqllf)2@r|EM>__*DvI?2=d4GKFO_}Nu{$YY6n#r?&@N|0->kK z&i9`%v&!ef>TdWf^!LrBc0Y|tKaT|pQX>Gp>fGlaO~r*M73HsM!uc?Jan02zIBCk6 z|50N2ymKN3HvCdK@zIwe*H0$y20RN^d_ftxU#|NSPR4TURiw$~>;&40VHcn7fa|xe zj)gAWQdguaow|dHrH8uGZhv)$Tfg<4`<~WTl;{5x;WHUJC&Je~LhgOc^AR{18p|$p zf>VH~Hrv4e+qUs0wK@R~Cp*8>2_l46PXTL( zl^j1Rm|1L`c@k%A-&Wcl6I#Ae?9nsX5c(T~s9t?|4f}H#z)W%Mj1CK_Yj7pNk)b2^tgIJK!5WnJ6p0Ai;G+GPJ+#mwwFA8w!R?J?H=66)((lmTvwYu z{9HQt&{H2S%(2oN9F(iZzt?m+=!oztB*5>>Gv>IKPWn1rNM-JX?*XJ0V7EH>i;hCx zcbiw2&D^-qRZufHQ@S2HU91))8v@=Y-lK>~!?`Zgu)++eJ z&~_=)3oa|A}ZlgPMa9GZ_Q>y2!f`R7qDSb?pihKRjs=+vk zDfjw>-|ye9*4jk42V=Iy2dOTX0(ka+huaO0zQxp%eQe*p8s>NIIa3QhUkFk9Tz0Zm zn5}`Il^yU@c&Zv?H(t(jBbzn1*0-?SC%INSUq#^8@Auf2;#1*%G($B&VZ6?df!+ea z2=#If3MpTmOL#O~D}qOzTS%qwxU-087^A5C-L0?t6Xq6saeO?JdYvswu_cBB?@cIr zDLYHi(}N?a_}Az?CzILyWxT`5lP|kURhk_XHhV>i>AjJ)lUlZ9rSgL_Jy|BIN-^L1 zyFZ#Hf6val?B(q+!Kho!X#V7$Z0?{Pco28>RVq8^rr+K}xvYpFlhz;WN5`>YyFRm4I*3HDYwrd!OZTu`cbN4t_*R}`OG zV#ndM3OOR&$jkon5ez?jwf+QqaCZ9{0To?!CIZ0cmi0bHd-f*;{$$INPT~ zwo|HQjd<=-HpNnwAY*RRi*L1bwnlzwcy>Au{4m!qXiwhrZ5z~-7_NH7C8U;n%vLX5 zy(v!F+1XwG*YXa_5q&hqJ3OD&%4J^1BHLx-XkR@^`hpX-WhEYMP4 z@&MD;Ia(9=irW?HxmKEe>_>D7H&X+h#zv*o?fk_Od)JHq8h&3c62+P>jr_HuXnLxt zw{g%9HSO9B*@jyW?fKV>Kp2-J!X-zQq@~HPKR0!qa$)!T7#QX`SX?8k1m3^d`1*vu zckuR0HX~8zfK0ZJFB3+Ug0>1b1Lf9b6)5}?{!X^gNVbxfWnIb6MN?T3pBEDorw~2` z2-3R=^F^Q4{#;{0#z>-_*-UB8XTox++#mvvUasF16>=;ttPUHBV{(}i)VLM#y3LJh z=oNKkZA$a~hbJ{Y{$7-H+H=@>syLV)mBqz&@1$F1x1qTG6wm7u)!&ZFB^G()c@Dcq z^c__|!i( z0b5GCWfg+wv=sz)@?fXdOPoH`kS8Bqcqn4yxd28L!`0`T>)u%3>AY3sqxkTyczt{S z?M2qf{<03J=;1i&^c>K@SqUDzSqE6by<7}3IPrqmW<8{M!RvA6)FiqSlWU})zYG-&GoE7X`&w>}$`8Cv{Web2v{r>}M13$wW> z?{3OW)$PiX4v0R&leJ)=x(yLgXMg%}$R~yn4Jxc0VyP1=YI=~NI#uhKY7X6fq{G%GeDSjO-EcjDw$)kPK1?ucUW|z(kYg;`vIdBip6b07-#@D>194g0!8{ zPBqq(HO$XW9{Kq6qyn>)z$-Nx$zkBqjV!5shWGD23fM~@s7a?#lbxP)?x`@FzDs~h zzno6@iIHxZISM_+_EEJ|qV&?=RTc{tqS}|4&n#0}-9f zFx={YlcqJKwOLF5Py4@;PW?X}5o^`|ZU5I(!~g%W{JRwYAKn80uLkqUIrxCm*&N2E zaa~BoSJzI;rdTV2t0d&jMsWbfar)vvW9zbIWz)ZqnnF5PFl3!d->U89s#zZ-1J3{R zeYGenLO4uj!bOIrDB~{Oiw3nDSZHnV1O)m(qsSx=7biJk6I@n~T9LRQWjQDqze%MK zDvq7xF18%X`I!o+0LVFeFg+Ugw@4+Ka0XZvi{$T8C~9v*sX}JdCPS=Q?)h!o?6$-Gn@O%%U0ksm2kkQEQT? z->>}mYYJf0?EN{hrYbOC?!7o}^J)pvQh248Z9ply>)-ac7SWY?~kU#Zz(yjDbUz=J5jb^F4|zsoLW=B~0p zs-a!QI(?)v#}J_QKqK+^TA76q)(RG+x*UHXNL%-);sBp9rVq8ueKA-Yd9Z? zKuta9gM9@>xa>y5V%^?i=2)2lAAaapjJpd!OqKr>(ej(yaIU}Ha=O1+_G2YZ5tXh! zcOB{}E}}#3%3qS{n{;mVr7;V;k>NZ8oQX<@ehz0qA^cveuzIEa;?FMUOi-OGsQLD% z^-Mqn;RV4LW?-!~ z9`Tl6CtyTFmeJ5DkW=wdCk#qIYv#gh9J={Zk+CENwW)VPO z+Q%#-ZLnvS+k`Y(nL#7S@QilfCk7OmRpn#|?v;uVcd~+eQ!zD*uKl=JJR{AiGa}(m z&6CkuZgsQOaimz{@E);dU`vD00$DrtcaI8WSQx~lF677QQ2Mq$5)B@4lG}(KdC49i zl{K8_!-rH>ki5V7tJVdQ@KQVuv`AfhaYSI}rzNQHVXH7NGO#A&qVni1;lBaiixHl~ z6zzTYb!SLEqRwKZ@@Yr0-Lafx;Z-DI+SbAbR!0k^qbPM7sZbn)hZHGUK8V(iHQ8Pn z!&6cfAj3WbXwUD*4FB$0moO{C_zyQi%W)4pYK(+ld&yy@pfFB4X~f4n=ssNk2@5^a z@7R;rKo@V@TjYab_ikFWq|xZB6&6dcxYc}Vf8!+2pv#9e=haEB8(|aDNc39ZVvzX8Q0=gE8I-mTwfZp-=AsYu3ImNp0@nE zS839R?f zlJM{l$SldJGe&sdo+%1pF1Ls6^nz>TSQff9@aU_YKl!o0C4{Fb!#Milr^!QSS-ZE` zryO=r4{)Sbnn)TXhGoNOobzn1fY8933ROWzZl?T8& z=^H&Vs5;o{`B^$-x@nK>+ge&&N<|WW#UKLVW!ZC$a0Z%L03_F&ss>Sg z3;K%d`%>jS2QSG#pM1#jG$Vr0mSp!pM6`&oqHc7m+}L2YF$z26OzR2LiqG%cA|Xqf zvWI>YU+oPZPo74`FUFm|U{>cUk7O=p!iTuk4`!%;!{(VSjYFN~Fj~2eHMNqEZ)eNy zy$j7)QKJ!Mw^uL*nbKBs2>WxUrC;=uq|1i$^oumYaYOwdNfA{QO*z37QaPx^T&&zV zUAc~>Vj9T13|m%JIVJ$0w*LF_ZsRL0G_wEBQzw1O2VRX@fFz-67jAW=^@NR%4dS{8M5tF!gTc{QqqFzF69i;ZOO&IAdNenpI6(z7PQ zSh)>0T^d+sRcB?aPLHAz@n2I{#>aq^CRPNJ z?>Kl5_kfZcB30nBp`U*1k zjCXW-yew5aDnP%=u_ws>Sij#mYj#)yX?&YL{z0-b=zhOs&S3~-A&-n_s-ffBCWMpw zOI59}@FYi?=WjtC{0oC?Qt!4{&cL-pN3?-Z(MVP{44}jCKE?n**V!1>QJ;YPuvn zqdF`TO_B0xahvFe)EV<$ya@Cw6$w7@qBDXWTEm}L{a(GWztQ99I^EQO@~a{U7IsJh zFx8G9u0IH9<6Jo-s3!H>#K7FpidAWWXTVm+8#u{2-(Tv=I`{k1R$0pUueJ=|61xwt z6Wm#`{j7g5WU5{-o(aGR@~D>jP9@oeET5>4yl|_SRizVPZ`3lQP+2NBP6?*g)BkoE zira_0`8tQEZzB!Da?w3*>hoW){rUxssCv%d&dy`*;yoOWqvI`-<=BFPha1UTNj5=6 zjP+RbYSU)_W`}kMVwS#xUo2nk-wl91-?D7*&Qn{T`UAC};^ynZ%7$U!zD;4eGu1uQ zM7&}MTFb9ZWd5~nnQCzXNNZWLH-g0+%(OPq6N-;(-gZ#^!Yac ztsFv_XMpkIy!SjEs|%^Cji4H^ON=q!Et83I|5X;q@F{s6sZ9my^U9P9LYsyJh_yPuW1e4m%f1AXFcpQVp65fVrwIf7u9;7m_h1$QxQA_|fzpx+lzxJA#ZqVw z-Ortnts^R2SkbcoQ?;K`Pxk|rr34p0-Aw-^?s*DX{JS)zUDq9pFl=U0n4<_A+8KXV zRa7~E@1H>R;85J?VujN&)3yk=xvo!<(VTKq&?D&xrE&95HT6hvM6rSKUlwdwzjg+}B8JX6A7;g&XfBLez%`O6+vu}uV1krSKD(4N9`=-B@jYp4U-$e9ieYF z=9{4n7Rx4i)#pR1=`eF;I2z6j^O!!U!NP~`JL1k+VOo!#7H@mW&f)8}I{vg#!2|2^ zt&Q7lbZN+{B_!|}%qc+D!c(iByj5xC&O8Tza+l9%)N(b6p=CWG5$p%mQE;)-CgGV3>| z9b2yTzW<$s=+--=dmi?kX>i7##KTKyEWB8f1+?+rJ-1T+dfL>{yb&n@>cx8;1^?*^ z{~m@!&#Ng1j&nGLxuQxGJt`p@Xt{MfU(pwoyJ_{&9UkQecq_h`3oLX_1&pQ8 z%?0v~9h?p_B?QY%SahGb_kl7|;csA(TvE{@A)(LzHw3*D%o1!qUX`jJDKZsDw!&-N zF&6u*ILL~4$vYF7a94~)51#S+_U&TJqBtz~-|I7SjD^^g@`*qAN?gZ^Ac>E&2CO8>&og#S97pi4Vk8ZlKX*%EwlhUyK|%>_o9; z)ic}7T9#E-a5s!$7Sq07gl3W^TeN6Yv3feV?j|IDBBJy^t~vuSK&k+hBtq)5-~M+b zCs{ut9%Xm#c!LGYKbWC>U6Ame#9RB@NIN{Ev{K<|*uKlx9nR!Be~N8%=3hf}Df8Mw zW!#YF-p2e+$KUok<9k?R9>XG7Nwj1DOU{3kQ;&_svD}O+nK8vLS~1^qEPBiNP2H)Q zpfL%G;GNl-Y%KxReY^dYk_ud?4~+#LUB@K;3*(Ir*YUQwiT!qpJOsY}TgHGm~hkPCn>f)`_;)hXM!z7&?vW>&#shJ{EQ*lAtC8% zyE9q%FzhBhApRLP`tGi0MzDLtgaBxsK|>DOd~V^n?LA*FPq~eF)-7Sfuf~ zt-NdUI*rnJC~Dw`PmCjsN)m7RE`Xf_?M*FOLX?ojMXD@?dND?L`eB+bORjmuB7nrM8^)u&Wn+=hduF_I$uD>2QR7Hcd#gZlqG9RtV~d{+o@nHf?ulZXyGqv zL4n!w@FC2j?=7Ca^?0|)I$hAHi6y@*mm8&w@(WA)`Iz=8dMlxLvrrRC_9W4EW|MKHCAQCmwT0Xl)b6w zAHs+FPZl2wXNrL&sPJ;B{*w#`p&ePxtz0))vhqHzOOz%j_1ppqQLDz~EVXGhT#dWFRai1mo+TJ< zbzO}`iFtiz4{-kyT@!bGhd|J=MnYiNSIfADcv*#NI=pyyb3h$G>pNbGdD`eQlJ7F- zGvG2=`3u#ERdpS#{A5+@zKqDLVaYehTr-wIjg`8XvKU#3E2jE>`{JK}hZ7?YR#bis zBR4EwGvD)F8hnbBknS0UP8L?Jj8#;ybfhAWMk=`=6!}Xbtb14nH}kOy>1ADXP(^Z89)cX!_$6SbSnf5KDhv+ zMz9O2+0^R#`>o{W_gNPX91GnZeRmcz@zp}c|33rmpfX=X>}MvDT7?unzm-LLF2x(a zC26bBqo#u?p`mg<`QsIK73z%LHkv`vz3y`mm!h5g2SXn($Cf-;9{!i?ykKn?GfSET zrA1b+ErN4|#d>BEr`EvV99Iz@koRY3wG_3~^81?$L91oVVvB){Qc!NDZMRbVN!ZNC_>J_r~Y>opru{zqP(~zO&Xlf3RRNnR_z#p1o)9 zYwv3c;iUw1Q)>_TLy-yJBK!}6S%@^+hH_)zy*#f@Wm8i~2?}0X*X+t6*q0{nHG&%M zRNW6!27Bg;m^SqC{tE?Nx(cW)kmoQQL!g=H`1U;DnzNB0+;{#r9(*a`AZ8Xf6|y(& zxIskmD>BmlEB*lD2AmC0T+aH!7SyuZ#fKqLJARn_@E^?zssLUD=+eX8HKMxfD1K-W zV_fuZ+7uht10Oz4P zAQn3xtw|98!m*|{!8#kmL@0cq)aNA$V`JktLed13p-1DtYubueqD+OV(&$W}@f0wk z;i&5RhYcMO!2Fb=J<=`b^H&m0MM4{PMlU#TWQ=V8rXtq1dh;wQ9k77Yw{WT}b>k$~ zm8c%dXxt|bF`uYy`bS3&D{0PoWvEl;)3S0z;86A^m!p_$CN7J<-5H{&@LhP}EVfRIA!`=epq;|__! zM$P{v6p9CUpxrBG-*wv1)Ouz>zqyFTT9DTCzY`HU;EwsXh28LYvGH%*4*(ghVu02A zx7~Sv>Axe62ZHu*yMG*bbN^`u5&vI)BzsUzdDK385|0q-a?qLGepV@~G833QzGNP6 z8DcA&vj5D@UkM0}R%rY3SIUpi%60^AyJ2gw>Ez*UwNmr0+JXAH<*iY!hr?7qAw~=_ zK3&@n{#9?(^zZaNLBL9A_P>R^Je7mpF5FP=>&ZhlxC-cOkr<~yLZ9bN`TH!dv&`qP z7t9ja1&oyua-O4KTi``*Z+v0IW?T}=vNFSBnDnqK6yK5h)$vfY1swHxjoyOmnTRSy+|L^lJT{w8Yh@WA>U=b4DAA-2!Nf}Me z%>#QI*Rv81$@#cu=OfXhJ4VknwD-+@|6C=|0nL_367OkA5Gvf)=@n|SKy{4IkvVDK!^yjZ zEfzlspz4Vq@z16|{T5KZmzYWOrHbb_#%ihn;)~f?Lmi}ICXE&n2?iBZHSYE89l;2E z^t989Fci)Sd#hma==ODdNSgPSxNGs<{e_|+gkH~Cgc)k(yz%#=Q2MV;zdpv>^7-YT zYVlQnzjB-mV7IQ#B#{Fw5gi)Vuof-qO+=rLSl0|23?#P*HG>XtT9yc05lc*}Ddb`2 z&b7$Y={DA?_-n`Gt{)h^KU#}B2$*5y?!#o*&VE$U1~f78T)%vFt+~W(L%qdO9%;l> zkne2HjH9crwbn$z>-iLmseNId9-G1zSF*CG^u#Acrqv*YDN^{Ng{)@m#xVmmOaCwzqcC!y^xhjzG18}{+}yL;otw`ws-O7pP6gs?Z|&f}lJhkQOMM?? zMh8wGC-NJ=+|QMi{2;@hS)0*`fbC}q79TURA1ytfvgWTh17;x?mv!;S>h(rJNBuKZ zRs9qkL&Ru(Qb{xZ1z2w`=b~*54HrsuBvdWP z{8a6Jx$bIgHpg8`ab5_ z`A(eA>hFo0=m)XoG!KrA^+*`?WFW0lV9liQGp=e5EIfPh)t_Mx%FTeU@}g-uv$m-! zwgrv)!df>ZeDYjp*n~tY7MHH)Z;=Y@XBHHK#E_*CsA$ zKQAZl>q}|6vNlUfTJ~c{ELXC1LNiCnwfbEFp_Jd>^F{~X3J6eCLKMnQiETTnr7YIS zF`V}9JC2S@j_fkjUc|w^jHcl7zK4iydVBq_6=_Nv8zF_Hdbtp2xjD4ui5>o>4?1m~ijMn% zEiRW_(@;xI=g_RFD&GRHMqZ<+?#Y);mw{z9?$7Z570CF5NX&IntP!ljI#b}-MVCNF ze27!O4*f)(4Icyht1e@HBcPc70{Cio)>dHW4DT+4PQ5(;$J+!&9?BQ)(u0&YAXt8H zIW?zf?uU2^(EXL~>SP8rV*;OW#8b zhvq~DBzz-CnPl1w8c67^H|qu7Tij5>gmB!WBx&df%Q&CTDXL6*(bhVgKPOdFWS#zF zbfZs>@+-aoTfVMOm?|w;O>LI$X)d4*JR1j(g{Gkx$XHT?!@ae=mr{qR)F2h&iXLIK z-mzlcItf2$ia0-?10J4B+al~oC_vg~-WC<@Rlns@EHc!u=h}s{?CGlN^agL}K)x`9 z1YO6Hmy!h6`iwGO)s_#Te};)FK%r!kL-us zRsMr~oUXb(%crdG^p3`U;>d^En(f&J=T2|L;7*!zIz6y1LAs%ZXi?jhdPBKUmvmKc zH;ddAxauC0y1^pt6Pr4yXwz-%ICu}6K;{it`W_SIvwtgRrt?fm=XOUknKMUZpa~kmO}g} zYA}~YdXkuh_3YxM)O0RS(Ks9}9C;ghFi{Q2V%wFe&*w4E_2|S1RwQzjE$ty8J(&1u z$=I>O(6rr^GHvf8Vxz|%5X!J_Orh2OyeQBWI%Xz8R#M?9sVBl3rweLie!pQQ&0R-) zOcEc?$eP)U*NRgx64PbYp4fCw%t_^wfR+%)GWB|TbE>7mHiDm-^0P`_`v|1eGJ{M~|;&x^HxqbjcBi_R77+9!Z{6v z4ToGL?H^rw`#_gI$@8_Cd)Y>;>d>MF>FW}3N%Us049th0Hb!wnu`<#Fj}hl@iBN;{W48x>a)4Zlk=6C{c}l9s#baI~T`FjHBl zO=IZmz)SS`{j_=KCzuBup3<|Zc}Vm0OJ`~1oE ze5zc)T_~f*y0bbn=XuC+7RQFJ4s@wwnl0E_fubI~=1tK_Q4;!kg?kKe1l0LRayPtW zH)}N${b+CblYZ1y`na^#RqC^{`w`!yiwN;Wc5+6$N~v{8Tb3>_xzS(b&9Ib2A#!!2 zBVs;PN*FCXw{C=gGU2+ID@1wErXVhEw3H!(_1-&y2&=LiW+nH{Usomy&f?vFiBilW zGYCeM=I2#CSPxvkX@J2l@B0%9oN2rM`;BYeLsK#;wbEv}y~--1dI3Q}mii;KMw2t& zFN=7Sq#}8QC=b8$(2Wbc9N_D*qhXJPQGz;X_?NHm&o{3PpnM*Ht#=GL>pDAMzz3N25&Z(DxTjHMAwSRI%X?|XLE z-)0G%``8FYKfOF-u-^{gPh8e^LeXna?o;G+G8PjbJ^D~uU@iWOmI;p}hOttM_V0le zR+o>~zUw4>(|;P}^*8<%_Vxg^RRUDC)4PmNyLZ(iqY!L_qe2Alro3>{^UrXd>-W*puNqV6F{Z@J}O+JSuR;lc0e?w@@Zoq z+lXRW&pBumIdG5|Pd;rl2i!hi?~YZ`G^n`3SA7y|h(0m8@tDg5lIV&ioZQVzk;=&? z*9f0?pl})!6i9@8wD(Vw)Ml7%Q`sBHp=_`~V59mKD<$``;w9+leyBz~(l49O?{H855N=Kee zE((dv0+nLail2fR+{@ZnyC?R3V=sK3aL5q;*otlTGia!Se6g?TMBkgneNhO>43pf@ zpgtXspl_qbs;8yfstiRSPb;f;7lJ!-)jD{n7LL2g*A#vGXIH!0=aMWBQ)HxCLcdAI zH;a3tzj@&}>E8FIWO*d1H%Fv?pC1V>0^e1?D3^Wp_5%*>2e=4S@S}xo9W9f0f=V+V zT!TIi2>i-6jC!qof?sUQr3eK^bIBH(PXDN|s1z?VBI*i=PzOlp;XP>O%=|##y592? z)W@6AZ+{K{b0rIUL8oY}4m?zi=jRtdiKo!ylv zr@v5W4D6pGMbeb2XfB*m$1HbqB+j)C`yD#A|=ZJSXPPQg}Sy zbHoElW8iuGFR@_mbg96Qsk+H8xbWO~QVUAv7}s z?aF=A<2}cT^FNm8)BJ!v?oTIJ_nd&DeUV)>l3k$AlKfbM3SNCj(_Cdv=@DN_MIo{f-ywTOuJ>iu8APM z+*S&+Dk+XSzp9mTQ91iqd+m{;B0;gqs?V;Fz{dR09l|_G8{?6FvUW!jn)-X`H8DRk zs>tm461u=_x_VyKA*xws+d5Wts^&{V)Sw}%cA2q8;Y8`1*n{1)eV|u{mH@-aeLAqm ze*4K3`)G|z9Hw}FWc8U~gR1`b(I9=>-eSm2K%7fn6g}(c)Yu>PSTw|2{t(G~hDBGE zxD=gqiwuf#?S|+zEN2|${FobpDQ+|4UALDoN`$7KONQmIg~-4B^fV&$Yo~u6=ZXcv zEn56d$!zc&D_uT;L)tRy-<#%T++NY#Ow7x#M+sJ6_x@!zF4Yc`H9*T@VBen2r2r(O zBn;;Td&zai3G<1PKi@x}J?m*2M+eR{RP?r+=67$_DZA8)D8et6lCjxfoqM@+_goh2 z$#@y;ZbDY@6EO0}zvB7xAiCTHBb8!gmh^P4SNc}w>yG3%hjeG(e*hV7)IuBmnqC_C z`dyg!bXU|DUf+4D{+WgC0N(RjhT}p+8mg@apV&{+^%$N5fj{Wm`D23%Gf^R7&ZaLg- zXg6-mU!_(DjzJklc7Fsj6rbb>ch*T=pB?rn>0V=RvX@2>*FIAE@`u<)H{Sjzh^qeD z*j&JGe*&EkBU$FOE#;j>Z8@XzcY1G_$EgMWb|SYt@x+xVd^Jxl0uoB1Mz198E#C$k zwY+Rcr7G^LLF2&J*2)}l4vxRSv7;+eWJmLyiPd$B*abJTq&YT@TXF9V>S^At1y*)i zR@badUmL%d;MR45ApOTRah^hbmTX+?XCzv(cMA(Qd8a{qImjd9<3IZK&lhT*m$XpF z(ZPsL<-b0jbv7CofRZnarW6HtPT39P;Ncr{hV{!irgPX6Wj^bcUDdChRO_EctS zYTv20o)L>>%w-G6wNx}euB?Q=b}>-dXUt4&OQ!HqwAhmB?%KO;xW0Ddj=r!@P+5`5 z$;F)GHb-Ad#oTb~S2O3>E(iCU?y(CxyLHb(+tuN%^J=K+;I6n6(S7%|Wv0`gi}bA| z<*s{FJP^iGDOzLfOGUS}s|7_3s^CLrbl$7VYZ{^wSN)&o;~TCNLNCmK^)gBYP*zEO z>Uu8bP`q2Ti4aYS0kG!|90DN3H9l=DCcMz6KW+uI1M)K#6;n7nPL`UJ%v@XL!N z&@UQ5ft*K)ju|^&>Tli4j!dLP09;1xd*tvd%PCaupRP++Hb*7)1H5IOx=(Q%lUVC=uHkM#}JQ=HkT z>boj+qG+R5$QbhqoGxzsGvhc8V{W_TC*K$lD7uTb(f@oMq3kn{)0U8@d|O{!4Y|x~ z*{o{mOsy5yq!f4TBH>;Sl)DuRr!ONYZoFe{6n0&|F;TKFQHsag$c~|Wk0HqrIqh4{v3!IVG$IjRj~9i@>{bne%CtR=h#FkG?@DA>$cjemdI!!!u&pg!>?BB zNI=pCh~|!td%I~{_4kO1ermj%61k}_@rC)63{#fSz?x9C%=hy-uVecYNT1KgXXhEa z&l$l+1}QV0@|$hncj=E9hTNF5XbojHB$avOBG>|o_aetsic2)l{SIx&u9u+aucjLq zY~cHB@*LK*6&!HUr0S&3rN#FaOlx!PMN>^E8jg{<3)u{Xa>S0D>MHJuj^rnG3ss`HcG@{*n#(Vm~&RS_!TQ7%h!7@K)y+w#7$GxjH@aE}S*AX)OG_-~kP#Wk4P z?;BIYuLmb*r0{I-9id}_&qgSS&)|7iqWE#{G5pSaat@1l>dMcHMI@$qv&+tmf^-#s zj-j25w5*p}VtqM#J89G=)!!|%;f}Z>!#^WFJTum1L5=~C;J;zp)8PkjMVJ2do1n0t z+8=J~^YvqUAF|tfIbTnUkcF!yFGmGW9cO<2GyCU3D7}&vkOMb#zU99T-@eMXwp$|A zm-*|jk_6d-fZ~DiXG1`!Nwx?g<>?Vl9K{f&#Yz)X;x7K}5_a+clo0x%CjgJJm`k#A zEdc*?Cs`ydiUBgUcPcOmZC;%~ehAIT#z%oXY(t zGx*XJuyp|RzWDeEZ0ctDxMXZtWVV~YYn z=BKPHITy&wx&hRI@a=u$(5s#L&n)8Gy@n^~fbDS|t~Ho$Pu^&-&tUc`HjZKT{JN~Y zVixDv8h3fLd$wi)dnhH_mnQ(hhS2ym+_*bBCv0LGEZ|nu8~$Zz20bA2cm-KdP&mK0 zdj@;+`~{#K7ibmY^}w=UI=JlT+K-sj)2y?@L8~1!{7v@+9#)ze$%S*L$P|+SmiDwP zP|Y!T;}9!XnYX3CtpG*w9^;lbyh85aI$lYyYr(LMdQncCg%*=7`*xACycwX|5SBOg1RM@H;1(a3_EE?nk{9 zty<)%K~_A_D*h>EhqoyK7_4pJjC`lbm10qFs#dsyaf zT>uRW=)f(-rD4aWWw|Eu6a?axPL|z!fxp2eX%YVOg+BIM^jNd=l zCkDR5&&;x#QBTn}jSb*yJ|?&VARh~0rAYu^Qwup7isEL3hrNzC%;)BQSw*gJ8Rv}= za9@tNaa(hBHIlzA^1AgULI1i=9KJMg*m^Gw?D6ogzGlK?I5efx3*zt)+}*IBNY z{Q`x}!<>iU?27F!sSAE5Kj5!=SX&k}mL?7eCPthX3E5LPikSLb)_Pb`xL@&s;+@MB z@$deQ<`~V5Yi?41C#}m5M0Ip?4{o1oMk7MmeUxk$rRXrlFe91F~Nu$x(_5DuMvP*$a^;_QelT6PgPWm~a!QUXor71@` zn$j_e{>M)V%2ChaFEUa)UtfQ%g`Vz6%v~C|vBi@ww&1CSHJ(v;fMwJtwhfd|cCO8V@4;Bvdj*tMS4Nt3%hQtjn}Pwbx~W6|JiIk4Fb$A?D`D~(x(&CtJ%xApVY zU-ugf%N4JUl88;bw%j5FN$0$l|IAe3`sd%4Yft3?J2!EkCh9zb%HwRYhh6*|dX^`ONi9v)K*h73(;BsLW{kVBPum6eSRViYn z82-pVo8mqnu+|lciJ!|KM>D$`veE|s0M{n9h>h4n`}?|;uQG5S_cD*zZ(8~|U43XV zE>ydUTCRW*j{1`#1E#k7g?Toch|d#`X;r%(hGwOJ(T1*J>cOV+&ME7OheMMii^=uf zbncI4!B)=LpuvV3qvH~w`(gi9z873Qcy@Xsxf~RWt(5Yf)vpobvpvMea9jLy)2!_C zt{X9z6BK3TocJoAX^t>8JJB*$(cu z!&lp_S5cLsP_+lxdx{}GEQ)Ea$=M>+y&?vW$jg?0F2V{uA2{y{X|9ea>~@@k;Ga)b zPps~~|3&HD>cB77D{$vq9pXmtr8sxLI1cUpwqi67ybNqLAqYNU^inRI~XW9 zmH^no?((y4=Gw@l+7Ig)tlYY1K-#T0?MUfDS!(x}>aI8!2d4`I^*tpP6~4f-o<5_PYHZxuAhpzyXRcS7{|DS(>!ics)>kXj?Sa9dxXS;>5eN13@A4h=`5!-h$IsL@0W=qjBgt8rvTi0jrDHy8 zvj&J8Ab_l_Bh~cw_fFI2EA~Ft6KbQ~36X33AkR~C%AhoUPa`Dz_?jAEt*->mGFH$C z|8b_Uiw^8z12%pn&A`p81eP$4gZ{egLW%?y_w55bv}a(fxM!VjSplPQ25M6N?!>tp z4yA=S*#eJ4XMA}d z9XobX5T<{ZISf=#&5F=EOvs zTU)ow+tBM8%j#$p=bCp%p9@`F!~rU9&c(P%k)$J=g#f z2Eb_9!`4q*_|Gkd_khd32TP+Erhu0`(IKEP2-AlEV+E;%g+!FS zq?fkDP2!Nxr4ks}m0won^jcRC)(x0>fh3^uJe32pSOKQr)=j3c;TFlM9dF8E8Cx>M zhe4cT@n2wDtk6|;RsyB*6tCrnLN{C4CJTb0Wz+*5Xn0UNS!&B2kreO99%=%;2fNEB zz#R&Tt2aBE@o{Ks+jwkL_l^B*$3h5!;q0u0aACURT{%Bgd_Oh-KFwK!lK}>?;|CHl z>mqDKS`N#b_{3($JAOnuLrCLSYk}|HG=`V;=|#hYl#})>NiNOo=MI6g6CmH`l6wzG zHg*1M0HJh3x#QjR@jEdxWv&RMrH|6O^B6H<>Pz~jgv|2XL`v<=FT5bovFYT}*Hzot zs?C8TqHS%I5qbDtlW8IBd_mx*E#er+PN4qb#u9O{A>?tS_TNfayMu~tq4fRc3~bXl zi>DgzVD*wb=de89V729>{*0iHPr5yTi!Vqi4!L!wSIcs~p(NU`7 zY#Y5h8#W6i4mE52id4dvwu}9^<&nN(&4I*lnob2?jh%Um^>xR59g zQP0!n^lTJ#*;kjcS;(gdr16+P7W{aGus>l8zCg^Behb~dfkMjk-Zr^d8M{($X&(9m$$W3*i$N;5Pmw14zZFj@n z9meGisoqDQH6j$_P4^SBHZo_?v6JZ!aZd-(U7^3{(WEiwM4$G?zWS?VRN4birRjPd z&z3HpevR-2dC;9(jXc#0AsqEC@s%UVpq(wpPW5Oi*(Ar*;+SfqI6~2IN!)BMf6GQJ z;}e*rhBQ4Rms2g)`)ZU)Iy9E?@O6LmT%n@%j^VOy=$@7$7y%HKap#Q`=j68Oy;tfqZrVtMr;Y|_yU@vB;=hq0OtH;J!?5k=BPd$!Bx zd*|fEDAQ}1UUe3#(t^tyrQ4qIqq|-AU{DpC#}=U0C%(`>7&b&OLFUa|!1m1!+Mh`- zZrw^?PiHe9h9qDb4X(?+Kcjj9WaopI}HeIkNquMj(qH+g^L!(`t)#ZpEZ& z?NQCj=mEKmVL{M1&+_Wh>jy59F4Wv7JcR!36GdNM#nNdUVm<+nE|I!ya`C8<+mDuX z7trmi3QWEo-A4Nszhb;fE*3qsv7T9PmKG>7Upi?tKu#8IK72Q3=XNq$H~Cm8cYv*N z4gxIW-gs@6LgyW6&ZiIW%dd`#2|%(RtPdyLr@4Z+JB z^Jy2L*7d0`R46)D)4(at7vnZkOdANi=NXplVCkH;*1Mn-eizU|1_vc$2|q?Z%W}KE zxoqVwWD8s`qW)dt*qWGc`vJ&lmG(%We=BVI6A#Py(G}g=BbK82qt1j> zui(yxpGS`LI~FGm!T;Pnh1fQmN`pU<3RS2X$^J~gW%dW_o$j>@5TE4@tap)M{a(48 zLZZTneI`9uz3_J%zES7Ga($N~Fy*R(PD7iAa832iCWP`l8ZXBaiu%j+sqf@p8taxg z=ci5`27B}|n-{LB897z{81SA`(2wL(^N20?suWz+4>dQFSEvXL6 zb*s$U3IuX!SkA=u2J5Cw)$sE8s+`HaEL{Da?vuXeif^DdGl9YqfI612gl6)~O#Lpe|WtJ7u zd}HqEF|0;T;An|yZ_pXVyQ>*aIW$`nn9Y|9=RNu5*!LHdx_1ew&CKLP<}kotN>6Jo zq@+E6r%)O!N{=3J(@nP|x~1k@MB~EeWn)7MmWJ2-;~T7=W}4un(%(tW0aj;8Nk!{T zNu$|Anc|sK(XIVOQ!-w$#)YmDK4Q~skG@Z0RM^(60NNoq3sP!&Rw0_&XSVO}6EC}G zZXuI00Kr~)SmiNs!v_Jrvl_BtSuj`#KDtJl{YdqeYm|a^pwAf%lEnZP?u}8tJzO=S zG{e0#GpBL1;Op(`@9c1DF92NnwYGD7^fVhIAZu`qo8`WoH>ZlGkTC`0-)zaDR9G-V&?TzHO&YcXQsG zs*rjx2_GN69$l^d9D}!(5sx<53try#oo~VgKdz-~ERJ6C=M{9?yW^O`ebC=Lc2n~IQyo)A}&0WXX;x>I)rQ?+ZbiJR(;qx z9%UnQPh!oxv(B$6?~!k(Z{O9*5Q9CnaPONTq-(oV8S%)_w+TlHJNCVGcq%Vp-yIQs zYM?64ix7}k!|dUQa&P;*c06?dYE!$VgYSDBP+Bh;XSB1)?Wvq90G+6 zhyRs7o*~)vQk@~rNW%9S)j#I$LNXz?WN!BPBkyT)>Pu_&Ujl->_~ZNaNUwB#e4uY` zA*%D9F7NXef9wwlhxk-J&Qtj)Wtth(U?`wup|02@+ptK<_JN`O8h3iPQXgywjcUl; zm^`V1(_PZp7rb>Gbe|i}+G6KN0m_pB+cmhp`R!++8Z*&3HQ&yIxm1f6>r=T}9{fgj z@wi=|DehXgimrNb;HsMpyjM>DT^>?1`5F?ce^9BR%%pmKZ7zQ7)}Ivy2R#JePMe z)U|K&`xa@64Kq^Z$g7#jHV|yGYjs9wF=ah3Ro0A5e=SuSCzbiJ=^?B<@tk*WoSy^D z8<{5kEAg}UC+F5lVGMl4Mptj~%eLLbHG(gfLnMiko`V(C5Sz^O)ls@(>89Fh9Z`|v$FZZ= zq6wYw)8>Ozi=uj&KMn1W&kP5UkLO_}eqv*=GH zKk7F)8`PqCieln&41~MhovUPPXbs*j}>?#$)>UO3fQ}e}rbu4LDB;y?r zX|j;^VJ}?r(e-+jqIuaGXjKEQBSKO)MQ&-TTb?3M(Kb!v-sB{rN-WH7^&8AqH_UtG z`AKp)7jcH$Nd+Oza!dGws^X&pR}J>sNi!4mOnKU-;=PmSoS%CUg1sZQt9oYI8ycQKZmcIioFB={FrgjO+SZaQS(ceAjLtPJ-T(|IJwcwhX2KDhpJ> zo&g+4-Kaj)lggj>Tu8MZ0SQj}|N>Ncs zIW&^-ap>L0(yz}CBMcPJt`{Us*8~?FhKJUPn4L1&>J>SEqu|pf)cME}LyxUssbMgx zF-6IYElPg%gZv$UtVP%7aoe@oUG{t&5$r_N%_F{{7UH#%>BuQR9Cz@?3XdGwx`A3B zo{?s_?U$wPE_b1x>fCqw3itv$d zS2o;eN83qXfcfR@toC5C`Y-ByW6{2=ufS={R+HsCj>?N>5T&Zb3uQke8rg;m&Y?Ua zQF%u5^MAGa#clQssqcnrI?${0KI=Y!@RJWg!;YC+-7MyU?VUaJ;u%R z{u zrA=x+0u8P7^#Z~VDf7JKJtf%7pI1d!l2K^>{g0)gqn!R`!Azng{w@P=JpV;l)i|aGr|GSQ33Rpo7QsRj;tRw?G4A?N_b*LhOVqye`;r{ zgImZ3B0q?DTuEp&e7L)s=~s_XZ0Wj~UvQS9sL@g_jO-G>|A36rL91E65_WwJX%Q)*J-g~2vjqQ@(awPZ* z$=N~JER$2Hqv6W!j*R$E(u#{-3bwr^>r!T;x$nTQLq<_QuZ`uwt4=1Eu;9@61+I(?|#RRu)o-XOo=Rs)#o_l52bD%-P8(ZU@08Gc!Rn8x7b0tqWjLKq}_|R zL+>SxeOuRdx6l{DUJA7fVlWrE zbEF~hb(07*CB$CsHbfCNF6u=mtrX20HPw*?panf$I=!7!owe_*&wH_|(oxy0whV8b zG&^cg9rDpSnIG9dq5sx+C`)Ao;#)Q%yuhG zp#{q}Gz+|NJ!QzFccGtKyHXo^QG=s8q*BuU((G*Vwu4U=INyKyj-D@TLdNwVDqDNt z^B)Ba>wEf|9imGoH474Or^4GSMMtEsA>IORuo)(#%Fu>DG%6|3w*Ei6mT7o+%C`^@5+d5m==%s7-{e=^J@ytzyLOx!e0u%9Pf1>kG< zF?VM@^Oz7 z2qTm0NB>mj*g4FJ#}>s7T%iBl6YC4^Yq6*iI*nJwJLWV5Z`>Z~e`0*;m|=0rw)ZOF zk@xy3{n{;oco9uH_GGnI2bzVf6;HKbhL)>=2?#_wJ5p)K(q>t0C7%` z8~KAu7(?p1CN-hdkdOWtf$8fc8{l#R5YZWxy2~LxPgy3hZk=YzD}Vg+aLoY-!;z!? zl@B;F`MABKrCyHAYuS7dC^TBoP`jjWQfub1^ql44&Pkn}OX$4nALyX1I}9(XgKn?n zKJ<;U4eZ-yEJ0$zrB6{puU9>EJEv1cVA(JWns&vN)D5o@EQScc9rRPr_V+(ngyVk> ztDd!!xdMTcOlbWh(kA!bVOtz2_U}i_)f`?g2A$I@PHAh#@TzLQF)E1?J51qn{@t6E z9uHP$gZVQQCdy)tY=>F3HwxmhS5B*KZEf76Ir@qOw}ibSx+wBVAcjTUbuBN=PWx!O z!sVS?Dh#gDX(o=SD`KR4gHwrWJ09=$WSn!();voHQK9c2cDDLN;c3%}A{rFmWyV z15L#IqA!|U{`QV&Q36lk=_*hh;mb(i511c+dMO)TCe>WgRJZq)c(l(5MAOH>W*`@l z6+e%kCO!GAEKDWq8mmJCk!)I+^eh@3)87Fwt^5XvJU5)r_u+jXi-6=tHWzcYzNEi3 zZg&W^o!bc|fbr1~;v7qWq}bB*{B4J~3dR*8h)L`MsR5VMNecIF)YS$ea}ZuJBF5NK zS<3zc&yj)Fsl7#i`X3(D==PA=ZqB`tZ}1i$I%Qr!qD$Xh=@O)0qngWmNG{|gg{pA=6nN0(Q5Zx)2Ru5CG`!Zv{_XxDRBPzqc?K< znbH;?OAN9=r&8($>d-!vKe5==uFvnMe=vu1^=poJ+ulpfFLiUdZM_Bar;pj+jWppq zZyTSklh8+S8~Kc<`VedEdFx2z=cXE4rtAZ*w6)G{h0NF>J6GFpg9)$A z?WE2nry?5rhKZwN0JPa`Q?wCQ<@RZ%T0D8Zm%~~S%sE~mD>6*okFJJt3QyE}y)>-A z|EOb5;&gr{#cmnvKzHj7rik3ou3=&HJ3rN%8AK15r8CR|)jQWOTxcy53w~(F{rU6j z-;F=*HyFM;wJUYc-BR3|D%Rhbi0nu+QV!Dwyon20UdWLT)woX0t0Pr8CQu)NM%|Xh zkBd3H{>@m3wq$Tdx^pf66=-`^7(BJ}XsRt~JUnJ=(DPe3b8rbLiU>TiiPVtir#0siY@=t_4ea zeMosJiZcI&qz6o~2A|%pIkk^leq7%wiT|-Ni$3KReV;15{ZX^1>QMQEC4%Ee*XP64 zXC(JB{4bMc;jZOxjR%mX*Xuir+~58fa6z*$usT=eCU1~T_R}P-*=1`Q{YpJ3)lSsv zbi=vN)$?OF^b5?k_-*N3ZUg8wdBd;kVo|EACq|T!5lHK^t;QW^XA~ICQj5kVW`n% zj*imfl{glZdG*?`LgV{}==L*74tiE8ZYg~0X(|h8m7Vf@mwH~i zFr`q{H;e6zoD7y)b3=@}F~!*}7lf}>n@^?bAdI}SdjoCrd?F~6@~UCIruK}`7}@=h z&wN}LtIEUT2;W@+zU=jyF9UCl$S4C`3DL~;=72Urmzt_RXK-!XqnPF-rA76w+s1<- z%Dt}1hg$;*?jaF#HH1R@xoT`>lF4juzL@2&1#cz=6TX7P;kUUX9Zpz}N0uY&D+)!1 zHo>>*Ov&NCpt{jE-2<5TMmca4SV2#fv#7ETn*rbqZAYYk$51{*zlHzT%}5CV`SY^~ zWKt60r&R}|9>AFh@zT8~K?Nw?f%hI`ebw(iCWSB#1yOI7)abR(Rz6bEUfQi1ZLkcz z#h|zd*Ksg&HiFw+_w#iJs!&Im!)Bijgs(*$aN%eO92_0{CZofD))HRsd5-nzmPE+} zDt1N4uXC41Ra@Ea-C+CJAYOjk#B?Va`Dx5+yMOzQ&!hTy2ap__8QJX+zcx|K%r>3Q zfV%%tk!zAD8Sl(CQmQqYc`bp3(fyEhuBS})|7H)o(mF6+`XMrKsRjz|sMpO%ak&pu zjtdWT5?MoCNetjftALsK<-mq9C2fyL_h?bg?xFS8bpAf8!z=}np0^s3oYWVgXrj|K zr|)@?@Ux#u2t5=#iQ~ZU3$ROFZo7Gkd&1F2^>xtWp3Fp4#d7z9KF;xJR#tqZgM>{**}0D#QZAEg31#(P$g!1aFk()L)-^vd zfwb#hHbTRJ?aoCxG97$~W=G(2m&%#48hg$ICk&8Ulk+F3yk8O>!OAMUpvRBrj=a_V zHk-7iAWx*E=G!tZpQmWf1O0N<-|&Gvs(@;Qy}Q6~H%@&E1bzU2caJ%h|9#&;C(!Bt z!`yp@HMMo&qS&{6D5d(vjW*QUcPYgbuMQU0Ucwr4tBJV*(@=dMHBZ zA&Jrg1QO|x5V(uIzwexT@6Yp`bDukZgdeP|H8aLoW6tr8cZ_*n_ z0<+w|Vt@Q~95@f>zvJp%=Y7roGp+~&V*T%Ub@>0rw|Ngt`M>}8Uwp`&zgk?WP5uEo zX5G=b_h@=$JUG)&8$X)lR`Z0^WJiDQQTCtEtTl*eV+#I=1L9?7NYpJp5znZpar5x1hx0DF`I?LMuv~vzv;1+L zeM66mk~)URET1dt)`McWa6V~ztfEf}?}-ak zB!0C)m8Su^W?A8pXddsEGQg%stu}d=(bIUWLO=DL;1qN=42*!T*Ev})-i^3pm7efa8X1 z9a5OQXKy;XD%o?xMZe@6L~z}8&JKz?U}uFmV#ND%69<8O@){T1ZsWQ^ zxvRMmoc;@UxmQhaBt(%>m0ZdH=|q4ca?=(+Z|s}7{RJr>+=hILkqCq$hq&@rvpj}% zyTG5fGMZ8B?TpAT_B~P;9XHb2WMEoDDJsX)POs)1t#~^@WcBs=~BMRpgH4fXo!UNY$|wv=%Q z#p%u)-$%?U34@2&Qqgb3mcoihH&V8Tp#wE)Rs{{Mo2xqxkCG18BXLBj8U2Oup#Yhg z4d+!XJ??eyhM%9#T|(#v_gkoAoaP2Uw|v`|o9*X%TDV7OyO~SjJ*&-=_|)Cdlwg5q zEMz*#FWh0QH4%**8Imt18iJbe*|!~k;Np9k%6%ikt;gJxHe>>ShW{1IJ?v-IxYYDe zr(ke_Iz)~9r4A*d?z*^E&WUF~Qg%g9Y5*xu3C zkf8}(lM4LWWD4|M!Y+;Hwlk|5D}K3Q8H?H;R(lP-{q2{%)VHZz!latR%SH^_O}FMz zToM$dro4&im_!}pSUUswMs`WPE*GC?p=WW&jk1(-PslwCKE%1icxSNFGX~-HTnn^b z{PlOS@l6J8CzdY=BQWYHp$1bXR@nwQt|n!8$MjKur3{i%LzzW=H!3wgHXx1aG+9Ne zF_k+Fs?8f_6u;mca}|OQ){rZE!iremnTW(}xi4H4|A7t6fehRZuD-o$S}V~KBXL7H zX9Qk`ulA49Z>}?}on30OszQMWuDkcD;LR`pJpD?#M}BTQbmV!qj3pfVH0|C<)ljyX z2+!7bn6NXimi&bng<>>Ha}TF`AYil^`dm~0ni;& z;^yUK$i~fM8S!R>Ey=evAE!2Bw>ARkMcQS<)k22g2bigM8ombByM9QS;K7Zhicf_M z3(h~yJMEl|A!7J0-uzUeAmnjE|jT0KNq;fpd5ZYgxGxg>d%C|b*XKq3!M+Roa`5uHQ>P0{b-2d+AI&Jw} z$SCj1f`2%6r$=k}c!8VMc`@tPMeo=@3>74^d#!j#B9hcZy_#P=^^?Y7WZ6rJ-m-3P1?2Uzr8$DE-LmxkRw8nzRruF6Kl25)Cb8o!gw>04G=HhcMri}G)=Ep z$-|7+j2UO!mjt<$n=eb{F!L^c*=$rA+s>O_3Tqa>v61W*5x2@X6z<^QrdSC@j2_!Y681T;)0 z4bAAk@0-XBzA@9a&U<^=u06Z3Fzn5!Q00_ zg7SEm`)+rM*-=dv{@uB?EPR&g?yPlm%xX6t<#V(xnl-valu=LVIuZ6W4&1rk^xXs= z*uLV{x2?z6H&E|nV2^EFq32;d^P;RNfcs3vi+A*L=}PO8x{RLp9xjBu6<7Vgux%=M9R>8VxXyLj7;{)v51nEHOL5BzdFYTSm$7|sPt9zIe&t?^(DnH8C zj6jPJU)@Hf4R+F#qv`ibvCdolf%LB4HRrn|i_&}PR6V(nk0S4&&80dEWm^{Sle;dN z(j~mDr|yZIPl?9-O2sGwtr*?Cus&bcBQhVrYNf)7X0)jOgCi^T0_m_1l<(4}DdA(? z8MdkCoo`>z+MJz3PT#q@?)-Jpdny%q^Bv9?k~BFK zS7`d-*%rUJMPD(~*CSDAj89oUx@xVRQ&R3j>cl1F;oyENhAIscYbmd~0wVfn|Q_z_r3EmCp3)Eo#{8ep7K8W+1`Cf_ZZo!<%?2AIhxYmG^mjq+XU+cCBqd9_l?Ioz`Sjg;#x zr7XxC?n-x%*RYyLpJc6i)$&Ox$+btaFp(~654`V^@7ADMCZL0%6(MN)p zOs|md&1q)|_-Uls80n^w<K>nf? z$kvRJ+q6rC`SiLOW69`%TMyqXwF+Om4Rq2Z6`Z=S^CSqPPXFWnWqiZS7+w3FD1yHmXtDEavg&i4ZqD_~n+k&Vpsxr0@VbCqrHq4m^$-^?)-sugCag#@?OnfQWMyIFFH&3^13qMe>=d>z z=quuTf7U1?keq`8o01FT*@ymS1cG4py^?9x1ie6~7mYKy1tIN$K$>NL!+vbz)|I{3qs zu|JOD+(BH9=cDSw{2DJm)mId3tXl7`ObaiA6iIn?V)3zy^TV$6?=_I3g0VB}At~Kf ze`ou0FS0HoIPx8oh|dDSt~t6lY(PjGlIT3uxtg2+p5&@ir%AGy*YQizn6Ar=dz)|f zwnjp>hFwI5xzL?*KlH-6rpt9)O+*MoN;!ewHKsP486{X>r*N&M+9Xi~@Zw)vdCl#NK^DZ;W2AN%zdfEy zSs!+KI}oY;tistT=Vqqd)j>b8BLcN<9}<7_yr>9Fi(l55!FsgfQc~`D2Mss5N2wa- z;&~M8-F!`0(5K!*)xW)AGx6jB($Iq5s(s^JSJA0yr(r{r3R;gJ47}JA>ixM;`Ve@_ z5E2sHNnJdWG86U`H;1or^>_Fv%VV>ehbJS~;<5Z82RO0-Pi7K2f7EI{p7XIqDNS^R zezyqdr8-{T3Nns6ac~2oV>UU`&>)K-z6o`*L8WNm*0VxnhaY7=TKFdqf2Q_X>QB2`s4Y$J0RgYgqVy9r zU2i}7CK{!za08K75jQxbyIzG|vQ4^6gvys7{@U~_&j`uF(R9{wy4L&bUM?TAzsd(n zpN#E`C+e4_wY9@*9`Ir>{{-8F7bCRlarAeBE~c%1j`6iga%FZMMQVxGY`UO>+{ij9 zZ~hQAV=pt~^_u?#zV6hvMM=oUA4AY4w;r!un!$K~TMqiIIn7Yk=O!2y;ul8W8(zBp#IAPaE%OSM?`u@AZz9N} zoob+A?@~XZ!fggxI!I14pSDj(K~0qP2EC6SzBW0B=z1|pw#!^h%%U5TAgO|RxxHv_Jl zlDXT~Bv6s}rH>_$*>tDzuG3Voetjc+QmHJGE}7z`qvXb63PkNaF1Zyj)$M?+P1U9c zdu>ybM=ZVWSdUNz5nVOB{1MG%2e+1%*X50Z(*}zSVTYyfuc($L7o_)OwWB&ypf^Ur z8K{S3jBcrKniePqn-6hz(l-s^zVklJfF7a82 zos~g|_hh9>13YzMKFTP_0tr>|h(NBKekQ>7pOv9V;0iYm^aZDklFzeXUJ+)m{ne2= z&d-JV?GhO2Zy1pEBFOvX%p1tju*R2B+yr3U;Lnwz)qvhLZa0?2EUi zSToj&s9BiECNR+~G+A0d+lSJs_o-YuBnL7P zN6B?5rJ>-znr792bvoQ{6x@nE`=NthBVb}DFA{IQ%B}L#iZ@H{e5rwe#M&3`Vh+1_ zE>QlGil~|<>fUsYH*q^?Ma;4(PtoP^r1Y}J=}DDmx37`8Eg!+F4)B;CRV5#~uCWiZ z-hQV=thpR-PnW43 zKlR1h%xsq#1$2cxP50NlP!dQ>Yuc<8?mx^U2Ck>j09_Ysac!FV(WN9*&@v%rU3Fvps* z?f*fz7WWQ$S&VD7LBBit6bDcCr_&?n81=*HrgG7Vi%pL;&jdI%P9%F=t``mIHEaKA z;j`hgW@AZDsftU8u3^=oMX zT=d{2Gk>%1ZS_fxE3&y;^rw?JWpYTl)lr=$Wjrlh{noj2LF>4ot~;9Ce(sMo@Vk+l zHKi<0iG?C9(vY-6ie@{pC~Gq?67HjMKLi4!tKV%Rh*g$IrKhDKv|>fr7j*$N^7YUU zd9mjMdbsZ11}?8`A4z?2sI@yDL%Ga^+60rr$~7;qTt4V z=yo3MKjmB&g&PR5%bi4zr)t>-M6<8*J6>ONC*bJsf#{XCNH4t&Ea)O4>B z08Otg5k0#j6d3z`i|%{@Z287h+l3;ZY=Vz|0%!}F+Q*x!Fi0 zn9>k;>@OlRUiRK(>4Smbie-@_v(=|@jj-7`TR@(wT0F!t9V1H)iKI4kFYh*1uPtML zV>H?$K)<1mRIBr=Cirtw*U|xuS-?l%d=k}=)%9dG7c{~bCy=~RV=7)PAlf}~-Mvpy zuO34SvTKMgUQfw>>77RswLpUZRK>ZXabm-RqD9N=PaPV}mGL!vDd!WB$l!XQWdo$% zYUQ_7>K$>{`fg96t#rYjQ8B6@u1_}wUtVGF<#_2%z|OScj=tf+`010 zW92Y>R^K;~q7BJQne;=cD1y^4LO>VSQ~CBb&hVG~;hqk5R!#+_V@$a_#DdkVaF*0c znF^%Z(!3X)!`i$z4TJBAi>i&>jFs|$K{iWAx*M*TA_Zuhwzz$5+z9$d8|A#5Ty_dH zg9Ep>(ZMR04b3ymeV=Z&0&O>1B@=*L3cvJBO;Dwm_p!!bjEkhAle;`oom-v<>9 z_3ge|Q~{XGYU_q<#%VksW5n+vFC(NO4V<`1VF!u$e@X3SIKXzPWq%rlR0;14%yoj)ywT{+p zjDVX+C|h^Ne5vRS9Mt$UYeTo)++EK+3y8ghgflD$|JAiv_!#Sz;O(Cz4R+Siai-iL zM%6ApF@=xR-D`-Au-kv>-zWh&ougbKB6lR{zABz5G!mTv(Tf;6Rc2rp=47FC3l!Mm zw~J^xz;R@V8oF1FZI3V$hi)Mjwr_$gRNAx)A7mHx1aTHoK{5pH!Ok`L_1sRwI$gWC zaHRZ5oe?^1mI-rc){%w~a=)&>Pb7$BVCP}7cDD~Lm2lHe%;{B(4;{QuQR@Ee_}A>b zw)B%MLcIXy?^KzxS5DEWjbgDX`X&4D3+HaPa2lBY16t!-FWJ zC8cH2CgA5kyP60b$o=QDnW2$ymd?osS%ylj5tzFvepQILik{qpsJ$ReMUypIaThD8lRJ^+H6Qq5S)EgEy z;^^DniFDjV9!V9c?q;p~rTviSHXTc$f@nX`DxF9P8^Nunyu!7hlTRR;mVXyVC^Yv4 zb&UY)yJE8evhYHkI>`;^7AXBPJ$GI!rL22sCYLrlZ`mVk53D=SChr6O`iZp*cj-NB zqum+YGrCEW)hV5|BVVHUx-W5Zd7^iD44Ie#z zlAvXm5pEO}%t+-q;?{PkJXyML!zJ#`aC(3vzOtqi<&yIShORS?^0KL{xGjE!a9KD+ zL}X^*oVr9A>b-f8mrS0pK4n}y%x)>oh{B_m)fagF8iX}np?gI|x@SfB?UJtS%k&mc zSOHqXYTjG=I&37S>#O`uUzBuIB>WMFo#w zKB*5fyfCeI+EGJ+OQxnN$m~XQJ$z7z!=a}Y{pr&K;?jmUfdFsOAl{`54-vYBw* zCXWh4ljT_9TQ#FbhoW|M-Z zqN<}kB&&&Z-EbS}1o}JU{nYa-ZeUmNTQ0D`yDWGeh1GUVF7e8LCl%RX1Jf%Q#1z|5 z85k|ctjherBwiD_Mziwp2n#umD>(Dq=nAF@Gj#7Iwf5a6uY3#34c!-HQRIl&4;RS3 z`6X;IIy+oETbFii@K(|Mo-f_#XrtBxMxvSyy8WmS793i!spG2{f zn&WSamBMUif#{_N{c=boOC8Q$A3!9sgGQoQ6>^~S6qK$Ww<`~?&fdm`^^IQEc=0yI z`Q$BSp!UZud8~@pCZF13UzKD9Z`^LGFmCk0i1?N0>b`$QDGr#b+=y#<2DaWrl{Flr zDX3us?RFFn;SiXmtv}Z!ZALKz@r@SEWAg%^^@b7aA2K4=lPW}%T%L@%T$^{@Px#+R zJM|x4!w;Rr99*hjmgnx7OXYtYtL;V2=xo>w5qHzDAwSF%EpVbqcmmQTeYyXf~0AN}|KGWk48L%|jg54@W6d3VFr4SV$fZO#<%S zCdWQafWw6E-#7>me(2nHNB2eL0ro6Ioa5k~{P}}$Y)aM5m5&Ex*Y+Rq^xwlA^CBP2DQ>HmDeq~f1<>WZwW4ziA6Bkkk1v=Bwh zO9kOlF;s^d!I%li4<3(fJ15P99H&H8XK7#ZX!|fjv%+GHGv%1c^cg`F-(4dtxO|%^ z81&r8@p;}!c0PvMo5k{y(7YBxdRmD-%i-kzFCtQ~H(6=-ak3dX%8KBELlFGR{8WhP z>`MkTiEZG9(N}iY5QcEP8Zt@P^u^S>`K8`ue)%vJft)$O!Q=fukdqsa*DNM5S4tbl zJ7KE=ps>*q8Q^T;?IOv!{J$Q4ojajP3Kz@xvV;^i$QX3$=I7wKWu(u~zXv(5F_II# zN7&1avf0<(MZl!*X(iSEx^Vaa$IB$h`g$nq(F=?1&0_X-^}TdT+4*~z^;u}o?@3^J zie}GBOKPY|D+HoR>&I?j>+)Pla#(S%Xjpj9tn_Wb3 zj+y^labsizAo@VhBmeYL`)aZu+n4^_3r5Q5Ep8{Q{Br48SrB1~133-V;|xJF9aKv{ zs04iZS3jjjCxkHN+v-w3Se^2q?pJrxT)DrgoCC?Seyq>+X_=i7Bl^KGT|-2D!|bI^ zg$Ht-J?oQ^$^NI)*DEeyayMl3Dj9!CQ%@yl8(-}-6=?t*GZ~U3g~eP zBqZ_Mgv<~y1BpvyVuG2M>o<&gKm#$q_o7#Jsx$MFY2%Zk+sy7u^JnxjOSbr^!#_QZ zxvz_=QPIV?2vniZ)Y^uIjZ(iF!$7yTNd@!hqVJecgkYnUlFkzKU<;>qmhYHo8pjn* zW4?Uhv$j)NB|#00_i>v&x&g*6x zaFj?dndG_qPbv}+YPOlqFUWUrqUJ~u&eYTzaB%l+B?t&{Gesduq z&aZ8HEnjCEXpoqZXVbDB=ZC#k4OhmSC3Rc{O#p90C!ql!Ke1DuvyfHXyljhrB@Y|cH;f0?ws#a zu@c+bv@n$r&m<|STKJ)72R>s~ggjE!(87?Q?{h!D>xz1$HC`V3pU>W#5W zW6)pm%!tbP{^L6@LhnaoHg#3Pkaj7Tk%`S#*v*scdA5Quz2;rh(urT}UAyun?s8uB zJ~+_?jN^EGy?^S%ymgfwi0OB_XUQ$QU~im%3qub!6Xaz+Xdjr<7~9KU|5-)dW(VBK zqa>k=mD@Q1i9FvAo*qR&`hKiz;pR@DlTFbLhWTNo+Fd$HH>whNxRQ^D+?MLQZ6P~@ zG1+pfja*$e=kn%wW?(83A}<07!sljK87N9a!-sq2H%q2Hy6gMl6&Z>^o#5F|CDU~f z*`lrL-#@h_Kl+z}8hpvASbUwsb-1kvCJ$^}XJ~Y^zH8f~c5%rRDv1|K`Skrf$I)y+ zhQ;l=tCU_gi|Cd;vbWj#bp(RS@gf9~vc@iy<(BW|Cl^%SJ^sm8Ww4_0dHh40?T0j= z)cT)w<-@zy!kMq)UbkP+Xs+8n1wFO8T^I4$jg^Qk4BRU*B!W{A>O>A!*~^I%zcC!_!G=}!Xb_WzIy8x^&BS&RT`T?YD zup<6th+#7C`czEnbfN`odS|a%?B;mkw{E;L@`u(sX@n$MpWlbE%3pzOuX@%!f^|1g zt9;?ic-wq9>*y!oEZW2WkscpOucV5EEIKbPUeB0$9F!onH~E0JJ6{m60-^bm(|VGL zRaQ{SxEKp=On)#p-A^^7eOj=wIB(8B&nHQLvJxUUD2k9onpO2A=W#EV9Bj#+E%)$r zMUd1%_yDiyWtWlHO9Ae$qh;8U0h4^nCB`)x`lJfE_t_#BZw`ZyghO*7nAXH%&Q(=$ z26hSiBlcsx;NG19FJ`d|HX5gpGy%G5Q6Fd!e>>taJhwjIAap6rL#0yhAQ+`RC z+rv`sl&0%K$R^9SChBPw^pbd>W4M(YEb<1rDuye^RXA%ud&evfs8E+c>IR?XXK#G6oo!`njAK@qNd{xp^LG55{R zG5o@99Me*~8oo-1$r#^TdB=BaL`Vpkb8QG7-_b}`6*@LN*g*n7&j5jP`#)P5hq{h9 z!c*^~zcMHK$d}g8s3TArK#BVh|0`366OmORafA)mX=v9^_V*#H7>jzIR4b?pUD*EC zRWVAVH5S@+S?p^({Apytj!RrV>q!~;>AmQ%op*d1;d;^AKUg!_dzb8ac*E{DFERn| zTTyQlyfiA*ZnT&zn`!FSxCqtw(Dr%iw788|A8Si?I_rq#y7T5YcEC*#c(`w~(@d78 zf3Tz@dzf>DU3nJYP-5KCmq>?=VJL!2B}ssC107t`vS;6xO#ezuaLab#T}%H>8d&LQ z`-ObYaYbKQX8?r_`=pto3XRn2jjnRIykQMmOQUF5iDpLFT;|oaxpaL%3cqGCnord8 zmm&AIb(Bk#4aTH%=M=T3|AIm&8ieqh@*#-^4V<#u7tyTaDih4Y2^T6w!V2MHh`^}( zSIu9Op%@|Ur0g6mLy#4w?Rnfoa^n6I6@z09NcELDdQ0_VmS z=^4IZ5^_u??>)P(b$aEGM3%Z(YxQisdX2Y5ZIeIRp1y-rJsXYD9cDa%!IwbZDa<9J z0IXyO^WIF!ZOh{##n&uPrl7tFmawoIb z4p;-Kh)NtCFafo@XXEo?ealuuj_5CZIWLpy)j6{OK^*}t!fqkU z!30B;a6;6F#+u_n%Umj~onRZ*S3R2>5pOPeQCAyZ9u2Q=-aNr*(jNe+&;!^M{D=k% zK9uJhqhTtfY?STPCiG;lV7H#75|C#&HyWoUMNz_~a~i@fDHdxm5Bff&RWsKV^8 zl!LNZA(33*?VI*gcGIbWuJf~QDorlfH0n6BsFrZqPaBzz*zKC|FH4q|wXyOR z^W`lXh*q>qb?;M_c6IJssJ7j^uVM3;1SOu*iC2A@j4n&KrLurmxa?cOsZJm$?R{K|jm^*^a+2tHu-@ z8{6%%gUY`wTj;vW-kRqg5Y`+(hvyo6R=6sbR3ex$yEyM?U6q7!=#oEs@|?2s1DK1T z{ix7Mx8C=CRUT>0?a^1OuwvJg4Ux%Rv=qq-rf;FS#)L$BKGu=GGhHt~nN*dz{1<&I zN2P`!Q>fZDVJ?Ik={??LxPx1a0i1=AeqN9+ulmCcsD*!2bL_T}ydx!CGqk}mJrWcm z?nXI754FD78~@NxyIh4e#W_5xTp-$M$TeHGgD{b^Qnn8Bg7c|{KQa>VQED&fBKqPz zZhv^nb5$r{0jxMOf8auFV!vt|%MTjbeo9`b1j@1;@X}0R_cmFE3iY578VC(yz(eOM zb=kK@h+`tFMNGHNR-13yX@f=7*fo#JhnJU%}v zvBcGl=2xkGH@oJQEvf@&k8Y3k8FlC z&;B-T^d{BmU_`FDXt){&ks@pP?xNIATErZG-0{b1ZT_&Kg!DC_F<#RXaFy>QJQCQKU`c^|nsfs+SVe$Ol5(xVo zJtS9J@NDU0xQM)VMVpRnR~C0Se^P!eza_rZOWUrqBA$SXC^=?wL+~;fY?a5uz~!+* z5RBRgxJv3;cA&4O%8yL1Fgc4>L;hQ;`5BeGIY9GCPG2~XR&@m`fjk#;-gJ zbc(X`JbFN1Y%}2QWFUh12QbOUrTenI5ajfTAPwQeGzuW_`I_sP8ozE5u%FOG>Iabq zYIZDbevXPR`Pmfo+DA%?y2Hcncrv`xf=M&@bl^Q~9*cLsVJiygU?lMKBLQ~UC!x%I z0`C;pbKkvw7m;-2mzDAd+^0!BE7Q*%8npGO_BnMytvbW!Ev8Nrswon|MFCS3+vC z2UE-_leG+(cYGot+`g{SmxnX7k*R4@Y3`}H`yANOcjFL`UCPmhY4bzHF8VRr7Ha|y zBDKKpZKyZgo|Zt^wNFuC(8xALnWEt+y#|dsB0W)oA7TGNQ;fK;6JFN;(8&i!u-^Au z$N4m=o_9#6bM70{y7BBtqc<7&?_&Ay)$lTL-Hods!lWw${0&$UsE=!Z|mM3%*ZZsbqjDL8y%TIL}0JOvysIX zgvfWJU`u6 z#90%}6wWGk-m1f8UA5EMfn1a}=06uR`u5`}eS3E6=8`_~q{+uyrV>_~*HE;n*_@t% zKlA>>)h5!Y!0!Izb#E`Kwzr%j;O5~1cdpL2#QPcw2C?QWpiafxvlTUf;_l&a2ARrY z$%}caTE*_FRaK=KeiOXOP7;$j{^FX7t*U~S)y0#9&92^zy&w5E)Il;|T)ID3;E(iD z7ix4JHMjw)h!3!jT;m0uE2$y_c{bd#Mc4cY0H)=x#QK8dN~`7qXMfwX^UA*8kSr+f z$Zp2HcONG2Z_M!zsSyx8Y;bjtCj$)yAz^$(0SR zRM+`Lc1^TxfVh0k(?)M}NJ@NI)x$no)x%AALTW^VhIpLDK+YpU`F92>3(F&2@A5Nq zeO0cyJL0YjNqSCusg1ji@b_}1j&v>MY<419p03}AgnCwR%xqhkOG3&$I7ck*Q&;{O zj`Km^*$j9@=fsGW^JYaJmvQgh;Y7G*SwUW1yZz7O5$c-!)R!r0yHgMMc&-*yWnE8Y zfUXjwOA~p|4s~Rnl6GGKuPkm4b4`r&C6A2-y$nu{5yI|CAQnn=78Bdy64dWueK|!fEw9k zkzxO>W5(SX0h^d!NI1tAH)J<*Fyy=o-BtcKHY(upQY6}=BKDth3>BlKl-|Lk0I0E(Alu|A zu@D5#$5wGFEo(Fk1>Q}EW+S@^1bBS2N3-TiM)5%t%@RrWO3L*7v1(9YVM8^ju)^Vt zMq}oSOD3=WldZZSLoPNe4P~^1<_-2+IkQwc!=$g570eel6T;2fA?kwad93E_=%qg| zbU((hIbsO_OgR?d9PZaU#9ASLewuOe%+BNLG&gw2u^Szyg7#5tpmO$u`Ssfm>rp10-H=&YB@8&oqZImKXDw0^7s*rVl+2~+9 z`pH<#=6niJw0p|I26pmEC4g@R+_CcJm}E90j+Wr__ot2=By{qlyeY)J@j|CapiVDB zs0wR|}wnnCi;abIH;awRKy{k@Hd_#w~bILsxl>d^tt81Is*`Gt}p>d zQ!KGlVqZd)_XQX^uUl&X+2nq%9Eklxh`~c0obgGhmA6j~W)cxFw*u}u^7U_RU>Zzb z>0pjiJfOQJCq2hR-GZK*7*lSBG@<7=PxlrkTFRgRp2G2wc-Y?0L#nvq6MjP4_{`YL z+vACx0q?)_KD#=HG>(_!=BrW*ze)~oHxye_Bn`-$iGWOKe6$zOtZtLOoF-2JCbqs- zJzHfoFda@<+lGEgRkcN%@BOGu0~!wBap(u6K5@sf{}@NBbE(6(%2ZkC-h_%u|GHXg zQx@O0z5?K99g<3B<12%o{1(ninHeJP!qj|KJFBQ?IbK>+qelB*oM(^y1-*Cdj@-xA zGtYMSE3P>>re7mpML7Gu-bSR}g7h`JVjKuDm&D2n>_%O42K#rUL->pV<9KHB)4xes z8MwX>*!}~5!U`m(&d6p817K!b9v zdlvcSGl{3EONMC7C0#2s+tGV+!-eCH5kMi-Z7o+~oimB-*0|x<*pl0hXsb59 zU<#x9&W1c?%h-5;#JQ%d^ai7E4X%0Sad5mpw!aR2l!E<82YC#jc9`FYMn0m23Wxg=*{hQy;k%q3< z6dFk^wKE$9Z&~qCnx7qbNFi?sSL&dt~l zT#*}7ku{r?d=}Lj=nGHJTj+^l1o=XnI~p#dYs(1HTraKAQX~d*NonLEJ|IPH&K>(D z^gql-TS0Rq)TURx(fS%dsYLy9v6wl!&U}C@4Z}vDbhf5Ww>AV!kmW~84w%KEpF!lFa@%e(;9(Pg)pOi>)Yh3i>s@GY{nVaEwy#Q_*W-W!1=}@Rki!sX=%C@E^-{d0Fe*EniG#G{cMX_maJA za;?)Y*s-PKBk_X>mpg8{_yxd)G)ECjs4Sjcuum#kvD?&ZXm5(8q2>W+PC%B~tyyi% zGi0!ygX}Pa+Cu$%VR`PortZEr&tN>>Z=}VdM&WQDFYRv)gKLbQ>AS# zo6_88OLZlK|5CM*$2;TbNzm|U&fKlZFdU+JzQX5Df7slJ<<>rmHs8e zF$6WK*^e6T8Lth`PKfdS^$*E)9qYbOVfmn+(dL@0Aj<|7KJtvB6h#qzmN&ELXH+kP z>k*$3CnfQNst7ec43WA3D=s{7oMbUG1GUb5_b5?nN{iJX z$_REQk6af)(pxSeLp9RfeK2E9&bq{ZALVvt7;6dugjzuTSop zVEeQ9gD}PI(F*M5Wij7{sfTDjhw3h?7^>s2=(epsod~Y*cs)+{a!qbFTz7*H;7b|< z5j>O&dxmFaE|ui3THOv$O6tYbN>O8 zCY`?X4PxY-mpU(l@hl8{&O&qLM_ISySTcSwvM#rG(VMHVDrRr}N#2+8j9MnTyE8p) zu-cP>27LJ6%>wITW!q;KU}ZT28to1`6=wXW^+Zw(H$9Rc!gQ}_wHx(S+oO7W5*)X3^jbC+ zwEdp9(2*_Oc6khK3HOI#KyQsUWADnthGF3JtSUvfUQsK_-040!+Zi#U^&sXV9N|iTp%ajlCCgjP+m}WFqsQ5DGP-ti8zsPfOTEy$HZ)urV4XXD{30$Nh=pY13r3*gBez+e3$akuT=F95$#14X&)%FS$ZJin;-<**dxWzEcrTUWQpa(2Yo@VW!~`u|RdUbf5$i>R z8gHQv?U&yn@B2i!GU1j8KUv6WKzfb85qZOKBh3I+oT zGD?#qUhEp!L|^*&mH16$${!{4wS=_1WE6{cj~Ct_`^{8@w~Rl6f6u@1&Yc zQnub`h&2tz50sIMFYBOmMb;#~5jy%^jC`xCV0na@Q<~^|cdDhD=)CaW51Iu6uHwU3 z)@7e~f5zIaq}yA^tOx6YJotnuQzlPtvZ2i^1Z(<(e=q#ZPK?B0a=r!;vBRh{L=D3J zb%b_t7TgQ!Y1z@$r!R(sIv~&cSh7XYzG3IT?u^6g6cW7$U|U1!IW~8aC3rIWtaP#m z$_os68t<7~eOz{R><+j20_cAIBlJZolG=Nc)-^|H#oMl!^9LtAdKxwl#p!Wh+Vadc z66k}obM$Uy-s;;(F0xf54y<$$l3cpW`1B_?J9jRIx{%k0?`c_v=j#`X)f|(jtdRmR zHg5>}G7zn+Y_wYCqH0J&T}4bl1ai$Yfg$HAIy)sQmla^E>~pAzMBBZ8>#sZ06VT^Z zV{8p}>3IQ%@jmH5vV5)Ol>x1-yy4pTHm6^YNVWTKTCR|4YmxrtrStD#FV8#-qB|gF zHfjT539nbY3v)}q&kIy#`g0wIq2$r`K0lH`qAb4%9UX(PY#=+k%-*=V&8X2fCgOE5 z`jSx88Na9CQ}e``D1wNUd+;TL+8K*DgmB+0v$!=$LXvu&dBjFX0QAb6%LcUz7E&b% zQPyUzKQ9$*oV{xKb5r>F;;1CF*0|x>xXJkJ=ZQrIk`i1_pl7*x)}bsZ=0Y=RqJchu z)`y{$4}lrS6Z#M_rEB)0uVP@Rf{`a%CGNA_eoE5xI5$#7J{nR@p;`_=x`Tv5fs@mZ z0Gyn5r!VdAtSHy{Z5S+H7L?{T)LW@dVdvN@c~?<~Dq%n7c*14aVPcgU0LGw03}s-r z_$ceLo1&Utb2fFmQEE5J5~k{Pe!o89aRKx_4A6=0vzF3`rSG|xqiAb7s|BN~)| zZtkPrg?+R}gH}+_A1bk-K4`vsQq&mmob;jL*kf?#^laY9%~|YxJ>>JM+8x*palLox zi+FRNMd%YCkw<~k==VeL2Q3QaEBcJ6Xt=8`IMtNHCk;!=j8d{MQ6vx2D6!ay>$uK3od=%F+&>rjTG z@IsL1jJ2tdu}kl)@C9?X^*7vmF_4y>g9X3EudC}i%d05g)v}KTv=bB2S2SZ^3aHzzAv-I@CA>0E zSVKuuAy)cPx2K+OS|^`@kX$fMAvr0GuN}HK8%w`Ml8ke)3ZDUSK47$Rp4Uc5?v22D zP=Ly@5jvFR(`QEun$Nljtb|4}--`6xd$OAb&^;ZK2lNH8FBbD<$7^Gv zhg-VD?+|nNIBrZC2FG*&3*J2*_pT*{OG4KcJlryu`!PX6l7gGy1xuNA=>>$WPLO4i z->B-GUDSynrLJB`SMicC8nQa%+6sA0dda@m(7-3RJ4_Fq7CuCZzOV;3_4%2ij$lZo zp_R3jjq`Icz;5}bnx7smij-ncrf-Pnfz|$^@v%DIc6Fru0S5$L|+lXeG(%;nlW_3X% zX4;8-2Tp^DoW-c_?;36$u}WmC2}b+6mMVF(KHrXYzApWFh&KY>Q8yP1?2X8rCoIjN2u{lUY`y4wd4hOC!6T$ zuAzMeqc{gnts-G>*(8}QsKH(9WyZ?R^=CvdBaWwHdPUCvBIe%BXGG|-Il@(rC&Oj^ zMVqmN;19F`?n@^v%jo!TUe@vgW#I{58R5ZeQTrAI=r(r>R$5=BNX^=KO_aOoW69&( z&Y5@nI>Pws35629;Ie?&AG#^tyODi~vjFA{c^$4xZ3?-+U_WUlU3O(cQ8B(-oB zjshyXLm5v~I2g(=uEI82JZLbgh(U*ytuR0=!!o>s$)vF@f1b!yBaZ@5FJqUnmda9a zOaH}g6RX_vH+3tc!eb5@{XV8GwrBlG(|RSo3eL@6e~y0SU52t|UX(N24D?BollS3< zU-T@yi<0fpc(onHayqz{`+)ax*M#EWi?N69bFMVJV7e@7>z6GW5agO{)_ug5MOkG`SD))^VF;P4Z9Ny z`S~OB^Ka_x02n zY#V{v^gl(?|DA&Lzt8zUp)X$40Ztr(9Pp6`W?;>x4UctKCep3<1gNKa)GO;!o<$Cq z$^v@DHFUOvchcHmhf2;HV+IQ!pb-|ZWHtNiD*FA+AA3rnj({=TJ!{yyk=DY~%6 zWI+QLh0Bqm);!K}=pbOa4SrJj_Yzn%dBYGWZC;hq!HE-!1+R%qVW{yBBn0(QkI%(a zF}YcwqOK3j)j+k`D(>OcVe8M>`G|F-E~9LQ;)GDE_8HO>hCr6|jpYb3Y&oprnSZpRw zty-4wrPf{7`9s>J_Nh=Uz<*O?`~3tH@dLf){R2UqHOZ)~dTXfHcQhsSL2Q-QX1u+r zN}s>fL-p0q>AfBEW+HAb4>a>kM<%DJc?B2`1-kwxLkBsfKTjTd;m>1CgSG0%dJDBlnUGQTKXH@ z?HjV4w=-!_0N`J0QOy122QA-(G64p8*>ldaXuCTdIVaoqs2s&rT+u7z54^RePP0E4*zoT z*!i`@Be#Z=^d$ERFfM@ZT$zJ!UL(jp9)~qOWTfq?)*S}ikAW|fx4Kt&?yLY}{jc{q zcmKsp>FqlOqH1$)tR@BK$FZI8{m7){!tVdMd+H=GNbdc|Ss0kC|I2;y|GeP;1pj97 zKRgj=^T()C?*&G*cjIP2tv5LynDH+20=S~+r_#X2L^WmpWsG&+&f-@lfB1_Dg2^5) z0Qf_uO~k1})*t{qe6ybybT(BKq>J{Le8I5`44eNqarm?T`Ha={+TMW3@+B!v<*hOa zKRSl!+PELo5)K>pQ{PNgD^u&jJIt{Z#vC4#w@jFa`p0=D4@W;f z60W@c^jHuu_~fhSBc(bbY7a2oQ~u*!nS4WLpXv|BxJ=uh@oZ2g{hlz%eDS~k0&l<& zdK3ukR{pvDPZrd_|MkB)vkA1OVhLKi z`o?;^&b#}+K7sya$@unGq%Va<(d(rEB#B0!;yr&uK}F`CNPGe`VI=GMQ_8wJS~AW&!yW1bSSnWLm% zwZqvPxC;g53Fd9$k3V`CI#*B7%sZcu&Q&_z2XDS5gS4DZKA}~C-87A=rU6l0vPN7d)_~~hO?Q-n!cmyyVobk zUC+%Zz;2zBI|Ev7Ma&NVWdsOnBQ^l-nvGuE@1_jphx&&>hs3#mKqauXSy4N>uaFnl z^ime0Y5u@xXbad1odSOr-tzCGsx2%rkfYvXXDS++C*?1B~PBTt}UJpKsp;Ky>X58~jvBUkX+vB~Ymp@pq0aWEJ6Q=wj zZNG&EHR{(^>3* z#r&Nkw*h;4YqVFN2IDft(X*axtBV#@0G8=U4nW=Ulf(60);sYCid(!O+x9(q%Z223 zGp(m3{1+e8?lidLdNb719X#{d6{3`IEtAt2ZbaD$Y?{(aW7lgviSF@X z^@?3$b<&RKt;9suKglvup|dFq)18q$>j_BD@UFMQrAgwvS=SSUXK|b}x`{nMmN+N% z17kj+A9uQbF6RY34FC54K%s!L4{`h&u38E=?5nSixlZ8JZPnW&onUxmKWMZ29xy-z zgo25BCVCf2v)*U1jR{v-c~(*Oy|{7*_U#i{xYPjBp){`)A}Tg6BVeO1r~-D4ecv-^ zA#Bs{S{Z{4Sxg@4qCfnx>59gW#i~`!s_0Oh!SlZ#%4^v*faSUaO`=(0CCN> zB5-e4PTx(`R+dkJlfb7i8ro-?-R0p{iQfm5l!0yAhqv|Dm-bu;@7m38u(~%GPm(aF z`SQ1`!|itJqiBFki*!7B2exmDJUtHpuBgobiFE~E$Jn`tmpd)Zj znYMY?r2?tWx%p^M-{l|FunZi+IKAy{4@qLvZ9y?4bDw|*HQp0u9)^5JE+?p57 zMUziW)%H6#8%{D@+Ke*^;*^5OpudHB9|EjAn1H}(j4^WS1yl^blIv|%PASY~Ad!G- zMhIX;hX5#|$jEEjfE{Q?j1?*y2r7hRH$lgNy)3ss&(!P?WNj`OF<|2`79OKkBvl%l z@WvS6+m6728P3lU@reNaQDtwbTYf!fcWN@k1lER3IE*Xt{*1jTdg4J430j;dC;aTj^zot z50IIaQHEhn*+}+sXpf8Et#s$c0lw*DO86g1KIR{P@lDyNSbRG_4!UK+-w~t zq~S3>xNClVsi14DIOce@)>1hQd82%y%wCS+9~)I?)-(fGZ)=jV@$~P~EXtz4&8)(~ z!7D<-)qCQnOBuJ{jF1g{7J8jY#f=iMa*3H4^O9s`PtDFuaTsuU&AiHf)Zg6h9$!!2 zsfseDi}@@jR59U2_m1wZnR^-Dfpw2#cIfP$HEXZ87yFe>H$1X<=93TTDW%v99x||v z=2>`JMF?3N5^EC;SPYjkKoo*5M+MW8lLFH$s3|k<%Ca=i8G?cNiiN3wbMQv)_TuNr4s|_&=4tW>Uo55Csrg!|n~?`& zU(xN@Hd3}=iEOa%+F4rE_VD?l9s7!HssoVBx9T=rwfCAUpv50iXqUq!b@VD!apN(1 z>YH#m-FdB-TCnwc6GIwWQ7U)+;U?#Mk2|!jA15Z0e$Z&{(Eh_O0{wS5BI@l3BEnU@ z=WAvCw(AT_tFVMXpRxzui;!I-_5cz(z;-a!D$zz>nim`b8{;GWSYz2wOhg<`5TnTZ z&7au(ZpqmASV(+i)5b-ms2vk&)?p)deFNKjxu$>1BIvrkJADXoIl!TPTc>~Y+Iz!PjBhT$-dQP$Cv#)&9}ZC z9gy$<8c%N1D4%(n<=ggc)Sd1~0JcltfYuf0I-h2-Eg8>8?ZaO)^{;?7`7EaSn|7b? z*87&H(MpgvjA9S^Rw*Q|5lfI_1D&m4i}sJ*G=D2PyoEpZS*?0bxNHx5df3Ok_Bg`^ zpweM6i;G{Z@YdpFiHIF0s3wffG$ZgU- zImgE2B*5%@p%GXI(v%hQ`V1nL_o8z|DiHp;?=xU>tYJ}v+B`-z0b0BOPX zm@Vftlc(7$seye~=CJrl_XloUwz(Xi?eY?nOp8*pvlkDKT=2*z)E72HXYr%N91}wk z7?LjhcU*m^E{3&cLUgQH1`cSrmC~|M%d;!%&)!0Yg44m{E)^|3VZfZd3 z<<4Z|p3|iUtBDOlrNe;B?^WKwy@2*5+redO{8$gIo7PKfe|LJYZJLpt7_O|;9#vSe z_VI(blUmDLj^9<--nt5B- zb)4%kNY!aW_JV_;qVC>jIjm@WpYJke`WVB_N38{OpqcKs6fy&(pOc*6=DJ>^jphxH z!2)qFCLdmN2nqad#>=Fh_Gt(KxO-PCnB5n^K$(nz}?%^IJ^=mlRHc0~@b9 zSl)sudbi6Mc@0KYH)}ndU7IBpDT&wKB$fX*Rg%76u{iSkOQ4OajvHhy@L8194sU5Z zS-79Ud$MK#Y-h;>I^TO$KL|sZpJ~$Zv`W}3QBv1k3|flHJX#aEP$|!Ip7*>6*p%+F z{xV|Y~z$B64+ z78iTzf|^jMZqbe5;V9$uy3)NQE~BvXOS495gZ@b<-1=9N6m>5U8maU+ z=4!t6n}!DOdpw4;ep=9%fx7*mkNLnQ7NHFBZZ~7cg|Zp|1-tkM2VJrf9D2>Nrmv() zcr5NqLrat60F#5Q)3p$pQNIe)i^@v6P5vCTLcRD)Dzvv3YRtefN|oIZaj;On4_!r& zH~nfKKoUB#RYh2E$DL7fm%HMu69}fIZ4H)BSLvs@6s&9bDW+c6YV?SG@aCPjI&a*F zMnbzo>QuL20kE*ol2lf0L5~)hFj4`b{P!DJMtJG2H|8eBOLIGLuUW4v&Tce4Ul{(> z?P~e&z0F8%-%>P#>Qg(l*DxMgZ!kbq)k_yuTZf2P z)$H-4S$H6#e4yz{)cLn#hM0Rk+^)$|GJ>4F(+6O!)rHF`ZEV|jErSrFh9I>9JPtW4 zt(jj`w-5&SDt{a>;LlB&iX~9z&6ksf$KC4>f}Z;Le&bIVGrd%QS#K2K=J_$<-d4R? z-`M^W$DXSu-P{R)FJxyYhubaa4P-qwqDJ#dhn8LOK|ibm&@Z(0M;@qSaogh4|Xj&E1jW zJUAxW8ymXtm1_Z*e}t z-$5O0rezpYQbb^}38&r3WTTP>&)l(wYSRX=Loa>j383z`&(&^#g}E?(0o;1HlkIWH z7iJXJKOSBG&9rR>*CG|JlRu6V_RMg1C&CB?Q!{Op?5c`I2Pz-_wz?Cl3jQ5Z&joB# z28hz2)$gr2CM!PpsO{!a7Y?EE!d&w)+150vB%Az?R6bLqf?DEW`E&idW(z=NmBXNJ zu$9pmLJ=@UOl~`I%+l`W^euRdP}&wYoWlCAotRnxTxj9rftL8L%50Wft0(>;W`L#n zRWC=Nju#edP8mbf5*;Hx2`|2yYy0LTbwUG(rgPh>Ih~ycG>Pu)G3`_)ykBaA$McK7 z;!wL=T%bGa-c6YlO&!5!-umi-Zr-d~J7D5`wt@rC0zRDySQPa1#s90i{tghY1k-?8 z(FpyRI{3JgeA+?Kd5g>k(Fr9zWoClUS9N&#GJkGEWTIBI|CV#lFq?1|AGaoaknMQS zq7Qw`edR%2?&F%3$Ali(T?V>yEh*NQYy`Ol-4@R8etf)qMV#%)!yC=wKD!l>Q}WrI zuavR8W59!4H~!PP1GdMffbDmVZtooab{OTF4)};XWC!&136t80yf5Aq5Y$kLeI#tl za=&ZD6ezBpXS$%xxiib(YwF)hRR9;GTSLI3yqJ9CvZ73!-P-zoE9+LT2=v*&(I>Z< z;Wv%q&A_|NXSE5dWA;SOpT9dh8&oUza31)@7x+uy8&LL&aVz?SvEnNND3FQ2#K@n2 z|3A5F@ZwPf(?J?&zo-K^MAwe*_4AR$Rv*AN`X3AFe%vw32k~J3rq#?i@4$h3)&?Bs$>cK6ptxq47_Rsr(sxFe~WK z;DIx;(P%=?bl&`#SB0dSW5;#x&URcGwOWdFT!#JT!NlVv);l;CqP}jjU=_{^ItNVF z90JWL0S9#}4Edoby7PUgSXPSH`qBgtu{SUt$#kQxlQtZVU1GN#92g@Ty6fJ=)pkhr zmMd-w@iD{wnAWJA6Z?^;O8@Og-DXLJwY58u&NRHrtr*K%w?W7dc{lBhI-fUjZ{?MY zvoCkmSLy-HN~?v?wi8a4U82Tu))OSpI*lXFb)E6EvP0KVJeJ9Ub=vaA(weQ+=@V^; zIxg_Ov++i91pa&mfiVy47YR4Yx&>Boc0~&TfU)R&T}aI0_8@M3L9=%SVVdkyWWwpY zFBBHMwXO{*=1Y}V4y4GRQ7LL4`;5M(P+v&eI^u@u^(-s3n2@FbO7xbFN|QNzX3 z6l$`+P{TgZ!y-+*Yw_d5`0C?H_l?Re!BNRlI0^K?f$#ay{C+p#B$0g_*rZF;1ON+& zL+c1hSK)eW$nhelO*cYQjO215)yP(<;aF=9rW5o$x_g-quq*=3k2@-l!*ZXc=f;qc zcdW?vv1OCqrthocu|cE?Xrqrg=1-~}y>nDF3(2}DapMM%kQ-qq`W~Qr-j!?Yubn%m z#h$sG=T?+(uK`{=wa_%$6h>dWI6U$Z|D|?vcyNESg-4RF)eIb$)#Yvw!cM@M;uau> zx?tTo3AdMlB8dm&H*D=D-PJyrLKOF?%B9ux4eqGUz+3A2;G~_$Gtu8h^DT?J066B1 zcUVEyScGHdnw=7{dmeIbFKN#{z!dtkk0UN%hdUc*eR zQiR>}t{?s#A$1AkU(_)=A|mE2nM3LC-7K_8rh}3Ws#)H{^-hygML>t*^QYI$<&X4gW4jbXvEE$>u&c`BoU zX2eh=4mW3-kJuRZdi3AKNu|5-Bt+jR=%*N75_YzB}*Hs)1 z?)9hgE(A5EY@RsNCCA7O38B_C)R_{TlkL`>I~!(#V%;yTiXnlfy&M&2taMsdLtu}TDzaqv&GkjRg;UgSQ zFuZ5i*QAFBg#9@O#oi6z0ADh?{=!um|N2UeBvU~=V-$t>qMNBx0Sn5n`1}f5;kT0} z4}YiNMXj&v>tp$u{1*AT-Qv6(5zkNU2oYcIS?CwKEr1^Wl1<~_^895=nO!33*3Uqx z4plCifw4}Ip@%!0TbKa!?x>Ymqh;FFR@*+7cMSQ)Nq@bf#ak?wI1SDtQ$zzG85sm6 zE9-G|@0Rp%F&=82ZV}>@PlESKi>w60KUnc)v7YII20G*yPJC|sA>k3?R-~v5LzX@- z!V~_<*3;TfF34c5A{JqEWnQDT!k(g^&kQG*IKCKvD^;aoo5NwX+OgP$jEn?4&%1UL zAgHX=)}Lj_h@yCs&H<*?-jL9mbt&PKWX&VX5_9K!^Cv$TT{#_CCw^LcN!V3@ zvhe}4St%^Pf2xXuo*6{f-j@A1r5PFdvCK#UVs)1SuyOv{P4Ic4qO;HmNe-bR8>2V# z-TX7DPk1xD=IvFv1xND@uMS(paoy;UIGT4V;l)eXN1Yg-MBJ*TaEx7ECz-v>7z^N} zc<#bgx%YdDznwYYz1iVvFlgKN3ILdSTn26$8YyWz>o#v;6*f{He>3L34WEAQRm(z| z+YVSc%$x3&icHJa6YKOUhB)UPsl~ ze8pr&YhlpuLq2|DP(r>U5Q0kr;JM67ftFiG-GZ5 z-#C|5w%LOgf=;U(a(6?cgqVqO(k4egW+Eq+1iY+^Fz?LY6NW_NKJ3q?5i&D^US%fU z0><;;Za7>9vt^ZSTB!R~vhqc*AaQggXu%+-WZ~YU3a*alQihxHI^`3ejDKCz2Rj_o z-I8;##Cvu0CO=j7GuRQ)o5XJNe9I|q#Q0)%4OnJ?Gy{E9xqcXid!D{WmErUor$v?C zIS+7{OBHpv+z>sOOmJDjHOI{%@brg(%nz2^Gg}H+qD`>Z8VcP*8%x2-pBa6*d9wJ_ z%%%nL_8XM>&xeG`_C`B>Qpt$Sg~Lb5vLdFL8SwaT^KT>{`{~Q+EIDvz_1f{6COsn| z&u6%zvaX44B9miwW#7SDar1U@&U?2RUv!6RP#zp?c#)$Ixi*W)_<+g#Nh6IVkqwEh zX9pWDl^SSXnnmD6#_h^5ibmL5N^IyG73f*-K4q#;BH&d0Xe9K9OGsk3OO3ZUMWzR5mSDN)DUe(yIwB;r;&S|R- zU2+?6X-l}VvT4|QHE5s4S1-y`;~rOQfNs*Ok>yEX%XUbg%I(mhdd)wpkoc+2&ScqN zW4B&<+R}3WA63mA6@9_iGm%^YcSw1{9c}rygY6w~q+{b;ays-i5u?3{qMxtOw!hh^ zE;-xjuQavlwLiC1-I_gOB9>p=gh;lmfv@Dl7Rj~y1dc$GLjao5Xy9@#prxVyO#(t{lI#|E~$?_EKyO@l1;SW z#fS?mV`9un8`veu8Ge`5zT2LTYGh@({2p22g}q;>`c4FYTc#|_A9=7k;aowO84|G{ z8t4Vit8DE_E^h}XsB0?X3h2LpJk-1(S$(ysY6Q%lQm8P4R1BR ze#QObA`A*C8UDzZVRi+yT?JdecFs?*|Br?`TFO|*No&>Z<<-MK_7Q5+%0w37#MKQg?w(JMrElq0 zPaTmKi^2pnA{Js|YhQ)#OX9nL$=m;G&h}k@i;c>2Xh7<{Jhz<4G*cg$sc!H@WEJn+ zjwim7yv{n@$9Ueo?#dktv~``Ez#%De7uGz917LKdsqRiKrR{;RF$+|Q9Ak7YB)iCpoOG7urSlY&*kpNF)(qdTTS)(?^(`hUySKAk9Zs%2gN^f^UG6bj zD`3<>C4)xo8Z$!*pTzRj2&5deE&a)V(N(6k=9PES%(f+Im+}e7rUMj0-E4s5RK=u- z9BUE?X_}+3S%B@~j>hh|k9JYk%?+&u@JveyuuaBG=?VY|LkltB9RXOO&wdHE#=Pw- zcQLL7k8+QpS$D$X8ziP4)|fvrWf`M6(&X`;Fx!U|$E8s>uM?e)9SYFzUC3u96v%Q} zfl*QE{t9fx(AFAv#Qv=Mo!T_f11CcU0_NJ9Q*~wv*=bNw%-aD9e=b?;|x;zKW@p1H3V@r&XM98atO{-54>XjX2I3?-pDbDrV@fUgca;WQYd4x5dLbu*wTcO&b?MEu>B{;j zjRuS0>t!z3;_^ives+dJ>alYH4uc zOm3482=H*T=LIvm7X`naKgKtVzYfuww>2}Ky1GGz z!;H2)mw(*F-XyMEE1+jpjc;^Ii_{8ByVpq@S*!%n*N-u1{jTa71;UL8emveaYvreB zCS}|yr;tDVT-!pRQ@P^T#BE zN}%e?RDo!X*_Vfd-`nTp)b?Z^4n}-e#((ybcfP!(_?ws5F9BAjds?Cyi0xi*Aog(8 zo4(AhSuPq-Oop~A)k%o2KWbXkEsDevUraszy7@&pWdPu#GuJLX7li|GQ2bLQ$=L40 z8HTmeptz9uxL!iyR;-=lW+yl#uglm=*lRPEj}cm3*RarY?-XD2me((-S-yN_M(|_PdIlfq9HOh@6fH9 z)60zSa%}B;s*k_k>8-z$dXVslcdz2Vc?ba&(JMBOVmgdZ`Q*^$yurr+jac@8Kk9}n zEDQv){i{2@{~%-WcXXJfZIyH@KIWq7Pa{B4_*$#(l2mgVKqT-09V6iPYzm%#_U^|0 zBAtugA*(nAJMwO{T+Bxn;1Lffo$RSik&OXT?_z=Qx1T4-;+&u-r=I?2vIfWXfy$nH z=Iu(e*j#vX>ubN!0YIY%Y61$kz&8-6MQ1^?=zODo?)s1IX9;gsrt*HNrz~MxnX^?& zc#yfVOxy@i;QaUfk3{@SQ19I4rGFIYNGJm9FZ1@IgiPrcN|u2Kbd-Q27MoKP2(NGN>}0_XT`g*f}Qm{h%G zckCG9bCt#qs(sP;B7d0Y>9~gv^6KGzfTjxc@8paZ$_rai%tNi9+)L6y8HDTe!>`jW z0b+W}cZBkdqi5SSCpUoXw^2Iqf&4o#;XNlwD}9RaMZk?=`^zL?zrbK#6lF`qYyS}d zvhiioF3ekyG4+?HV{CQWinl)c3&hwRsI2)bW+nSOKC8;>n;JweZ|!qI|E(~B1~VLe9dzrH&T*G!U9f>Li$4a zc0fh|k%5g(P*9{rX=p3m6uVKy3q0VTdh`I9sKw%!6ZzJf?@71+f$~kO2 zb^2+T1o;V(DA&N zG0gM{K;g)|-FXPa6~Qv{$Gm3&q1L0!e@5S1-zT+<$KW1%qq; z9=*u1UwqgOVk=5pDr6rh>|b#(KtS%&9V~;myQ@b9da!M+LmAWz)UGX02w+DlUK;eQ zKcIaFqwImu7TwgMae-bNi8nEr(KJwXvDC)l?y}uww;E$(aPZIIL!j@@{{hrmea95! z$2p(G0S4K)kvxOyhg zgS)!mVqTwXQ&annvjB4ZZX#3b4>Ys^LrDbyH|X|bnj)LZwi-^zX>b?j z#}wpX7T!4LJGzCX`RI^LXlS=zKa2>VTN|<~=7I~*?ari_mC7+-jcqycX9IWkweB2X z;HQh9vyEwxYvl^hR)f{fY(x9{<`2FP&MBBRqL0aW@iMbI|HEHRXCX7an$5Zq?%vMa zDp`3R$W^>|ljWnyW=Ha;*?f#cAFV*_Dd@b}SSz=+BCyo>18q-$R|LzOelj0?R>X9F z{7GZ=*9E|dAFO9YV5@fsfL?a1`?@=;Zifb?q>#j1B+Z!3Qent&p?i@KWtFxC4a(0( zR(e^razD^p)>gPKw8?~kn`09qSAZ2=CCM1sX9KF#2;Gcs*0>LU&T`{DOW{B?<(`O< zzB&ztD_~KY?Jkugl#_>4K3J?U=IjI|EE0!kmq_2R>7)UzbpzF__}kc@t&x7C0`@A0 zLFr!E6qUU}@p?xJGs`Do?80wZAm;5BQ-sY^N+MUiO$+ z8sjd3I=4wEw(RRu=$p?79%I~lf?C{(H+pF$9{fgeD|cu0Ne{Z$QhNEXsF}bcH|nY< z)6yio*Y7%Vz?JIrq<|kFS55oIdd~8t?SK8&z_0Ldk8VnT58g0ljo))MXvad{KYOb{ zGjL7p|)#^ zfYQ^+5j&yddIs}M?-_sRY&~khZbaKC*tF{LdN!-**SsyR1!;AkGeCueDTw-=`C144 zDlK87Co@tBa^o|3^J*>F=T0K6Sshs7MTB<%aDwT$;i%Ws7;VX z2cVwLFOQ60qq1@=m&QCCmYQD<5Nun`;KO^d02vt!>9%-GK}#rN-C($;U!+IfX}Z8~ zt-Oj9Rku|DKSWt_i`WUw$-JoF;p#vA^;^(|3bu$DxH^&3DUq`sK9x4wO$w z(oedmlAHx?XAjUdmr|a2gl+eDj0Wih{|8ut8Z99z^B5?7lue86|GUbWc9b zZsfk}y5!EM*)_@Da)hOm3hl)MVtI}>IoG?fpiN9fugwg~g;}Af$z`o50lWWLpo{m) z>x}fSa0MZ=?7X+98h8qts2OZ$@nkpLOj_zG3L z-RWC~wdM;oQ}w#-b8U4W&L#QF7jnep^u6jML>hRFe^P8 z>0*_N0-iIL0lMo8xHWYk3&#DDqtdJy+sN0_a38r!*PKj>|7ft{9ZRQV#9=)RmlvD| z?&I7;_F{s>zVSQP6cj!gm)#{!7fm_jVY=nY%Khb@cixDtyMA~OZ_-K|TyMn}cBX2K zwWZu1?Ym~ZlrBe-xL5D9(zI0m!3|S+m^)l4XKHM{^?UnZ3~(Ax1E=w$=ji>qRuKsH zTSeM2+xbODER+ZV$-x!=mNcuf!3v+`+FIe0S&gg)9JwXr;XD#*{h){c7x%$( zo%E|YVBETK^((yM|Vpf)NR!IFY#(Dw6&iNdnMHOtC zQ-~$3I3*maC>d8qWs!xAt6E13QMfa+3ccbY=Cv)0@?#rqK=yJ9V(=I+cZAI()Y%T3TjLz<;mw&W& z;^?eSI>sKQmTv|B8fL9z(YwoR_a#*US;ir=Q1BUBnn>XK*ixLxuIMYc_ zR$X!b4|V??)kOcckD@3lkD#EUAktNOQ;=R2rT5-JX;K183j_ixA|k!_qV(QN5<;-h zs|1LY1eF>fAdnCs1orrR-}krAIqO~Pti9J>d!I9Z5GHG8&E(VOzOT9N>vH{0nx>+^ zGq1=20aFuD;@VwQD)LVtMse1@uw(j|)LbU-UPpsjJdmr6^aH{Cch~mH9{IW~U(c>N zF(`oK29m5=tQnDY+rh1}Bgxj)`~7%vQXL?#o>i@><-MSDI8Up2w}O>f85+olUR@_L z1ZC0z`p)0WI_CLvw;_-B3&PcxRQ1zxRoIfh-vLz0=T*$JY=tyWlR6x_kRDx=buY!{ z1d|zCy}_z!&t`C*sqbdxn}QbD@P~Ubk}ych+5HV}uav0RTg$`T3j)Op)m$jf)YQb0|l&=Co;lNF>*B}qXXj6~);N-Bw)=i<_Rfpz~ zuaA<`*-PnK_b}gcXwkMIzMA09yE~=OdlHhE2bFh&;zG@jjT^(4UP!^>I(BVHR#*+x z5af3M1}e!k=yrwQXc$|nYi-rZ7JAbaf5l2#oioyRwm-_1?E{8|1mc|v4S$>2h5 zPgmbJOEMuNqkVE)sobEe$o7}#3CRhoZy2#lkbcl7TQF1nWakwe1~#2fpIynvO&b2l5WKwz_zZYG>ib(t!fiy2r-XEas6Q7r& zF4pC9#$is(tKIrMD>i;eA|mJ!V|zi8W5K*wb9DPq^~w#_P>6kE>J$-nuqfiUA4-~N z=(FkFom(9|hxp>7N6?TDUQgrj!rnmyJ*Y-84Y}A~J+Nrzc;3w5Q`t3?2p+2as&F=g zaAStj3h@Xr)mM#Z=TPj@YyY{UsUNS+KIOk2${k@`P|5C&8t2!f6<#+uAg`?`y?q*mr< zvbp3YD`jaQljH?dhaKs6p-4|>_K6osGoA>crL0XgZaJ|a4h2A% zc}Rg5U>OwSJ&1CiTaOc@GIH+Z9tK}mz>%%nIgTDS!=8o2eP~pr{PMA`ci!A_?Eg&R zkEyGVoyV4B{L+T?b^X)j*ZM)Tc76XF(yg;djrG~H2nM!tT&B6hD&X;TZ4axdyG$L~ z**KGq?K{Az&c%JDh%)gDQ=+#9^ zicj5O8M2_lEG-6dxVxVBoEDcaWvX^M3X>YEy%Lq+b6p)@2+}0&y-kpYeuOtD9g7`T zkw5qpcqz*}96|SOom6YL74qdo3>cVCx47|NF3KO`dUmO%(+Af8;MmY{Z|1U4;vOY` zG3*^lW>~3SwRuoa+!-Z^AUX%yN=-rN*Q)gzZMYSW`x4(wtVXdL0AjDykdNr89pkZ( zU;XUsu9(EB5GSwZS@M1bp4`tGK>i~91+YcC%486}5$-=KYB}8xcb2HYPpwinpU8I{ z*@WCFDm@wq4CKefu0j>7uR9VnV8|~%_Dk~< zZARz+gFN38#Iwi&DXIu@B7US;CQr!$lsQhlj}Hv z{jX3z8%KS6djT&WzuM1Db1v{oIXS?wTIgT8TPl#IH|jMp17=H+$pLjoX>7}F_&;6`hy!4OW^0;&SnY>^pYVyT6g;i;>QR!t3Szn!B>7>4Oe|B{f zIi_OCY0r2R9?Yna3EiK;w32O5fyt(tO7HAnK(tJ%%R#%$GvV6GJB`fRW|$%RW2fYR=(5RvRwtdgOgMGL4SsoS zjh*CiCN%!i^3RW$gN^!&eO4>qo(Tk49g2n|`xly6)^Kw=-Ig?Rl&Sg_gZWXb=SRIi z{Qc^E18Ld@+h;9tO{)bhgZE97)ylaOb>p`}e;DBpH(ht-=crb3I=(jhcw(6y*I_jb zaKVbam}a)%To8ylUi{X=uMVOE_f0GcxM!}Ul~IDvii6Fj2U3s*Ka?aX_=C0)Bl0Qx z^yXE-7DC;LuKU&E<@J({riZLY_~-%)RxY^nPL1LUfsQv_Tz+zXT`Au}%)C)AZIG;2 z7g%5?Cm5|nC4(ITB*mXF_bO)d)T9 zwm)&t96WI=ukeJ0wQ68kl=!?bQQ*kwJKP*w3??@goD|=8c;ve1QaZCK7-~W5@&y8-Slx1tF!CHa`m4}JbfdY|1qLocXoPmkn@J= zNH8PkXoG3@s}l60)8{<)yzj5sfRTm4uZ7fjQ7S!Pm8bj+(;Iln>_YWYGF_-FavOF# z8`jVAv+%TSm_iiu!{jaRZtAw_HrZj7CfZhDqQ0n7#Db21urd3uoO{2x9FIKai9+nx zwQiKG4JbiU_=AQR=<+tSrfTSpKeu-WY3bIgmE#>+9tm&hS<$kExJOB$WD$91P3wPg z)7SV{#tlj*naDWsXIZ$OVY6F>WjOJmJvzF!!G&b&7v<&TC`*Z1bejMYx?V25h0_C{%28rs1Y>+xNS>KNUFt>dX6AD)NN;Y@ z%t5w5NvX}3;JeXZMsHWzwAxh#e4dKwb6xK8R#%tT5ey!}<({H#QK~*xGvEFYin+jv zCrSCjH(K=z6omT@_D?Wm6(_AJ5ixlrY}gok)}HT=6UyRmbm74Bqk@eT zbwrS^nOHp=^Y6EeC*ElSg*M{k3svpZhsmiIFFR%?d~@~pQanA<$Zpyck{(OaR1fsQ zo{z6cM_Dh&Jsdw7vG?Qek^9M+pSdZu@r8YYb=eeq>f2yNitBtz`6kFsATouc`|{$$ zNDCH26AeJ`#s)gBunBWXSz7q23fCW#p-om`LQt)Gn-U0trn!(c_?|1^@lxsY_3i}m z76yhBxih&KLf}ss=AW2|KrcPAqEC^gqeM%z3cjQfpG9;~#rF_Z@<&J2cn+SWgj|Z% zGN)?HP>N-j4rDjGZOL7?)tPLJ`q6R- zSsLbat2ZHq{q#pC^KI@utu%3cB?=YlrmD$R;oqCPL+>4(t~v2`@b;aa%FffAypSoS z9lXjMuUq1~Damc~(ZG|5?Fq+K`+>H(IjRXH;q#ZvlN+JOMJ~1Xk)QKlS3rG>^TIVt zp3iC=CUcdq!1(=r$^CEDO7nj`k!smV*Ctn9^>NyWRs}RIvOV6>n^<%JH`r#;9ml)7UY}3#o`B zfBUs^sW2ZmV^yL*IA@stXte)h2BUzl6eyl;e6ki8Aqf%K1gX6(WBKX2!uN4VY=YR{ ztoTgJ7@F|NvN?>J+m_3n=v}@IBbUr&%-mq@YyUd6cWS+V?%C6H@Z4v8QWJqhM4rY% zcUyal_oFmtlucZZO5}uWPay4&kx*LujTCfz;!tz;{u|a$6>jmOQ_j^0A4+G7AuVe! zd?19jFFPzae2b$$e44}c4e_WxycXf-5BK*!t6W{JA;1Y1NKVDEBeQVPv09J$m>`IN zmdyyCG*(a5GCSKFnb80q9AD60)XZ9YaX6c(*2uMXP zJ`P@T=DMF<5`!@qJXs}8Ipqz9jkBHd_qTIq80aB6-{J1GO1oWNiW10(^}V409&(Hr z@*tV2?7dc+l-y2|T9pK)rXL2XYshr^1 z*DLMV(GZ2>ckKBak!5uk7s5aL$B(Nh7z^vqmQ5s<#rr8t-$dFPM0`a?5RLHquIb@^ z)&TuMj==EZ%4bN)DM}0G~C9RF=Wtih;5h>?iiWnZcYV%(7KLpXPV) z%M;etUUb%^{-7f+gz@dG0@X8r>t732j&a!7I;{ch3PEnW3ExHD&JjeHoAqafa%YM# zSLIL3t1Pvg3zIv&n9MlvsGrSY@t+K{R^cZ8rJcCVSB- z>@^tMBw1r5Zk1Jz2H8u^Er$z;UdHTAG0BcMSFJOz1Zo@!BMm>Tcfm|*?kMIXTyc-{ z`70jyPZay@uQ(}C3haK6Ds(WD516Kg2G6%jhWz%s?;0XIk}jn12PF6Twiw*2PDj8j zhj<98q@BN03zOvN*hUt8SzIy-sEN}p9)M3aboULTjv0(1`PgFa zA($Di;kNFv;E|CI8NSn68wd&Sqk5GPI0NlF_U?x~3)k>UdR&>NkgVtt@df5)82-r| zXBhJFMcp3%`LLUS^`+2g-YOnl^4MRI)H< zu#9t!JbELvf8fTVYj2K4s(2|PIxbC4tiN<`ZnvQer)NwqSZ}g@K-dX}bnX`9O%My# ze%P>Yp9IVYXP?YSH?8I!VVN?9hA$&rSLcsc-_y`^;I0BM9LodLG%yV(dvlA@deZGH zfmPAs!~Xa$o$7lc&#=U`ZA7GhXt{1F^~b~VpLH&E!yj&BoR3cxYU6vCCnwaWH#Kc6 zxoS)2N}Z=?JA9a2y=|9KS6y7<25JslZI+Q*P9+eP&F`8=?18N9O~s$6*Xv+%GnbJ} z3wI2|-HXixE;0XdlnJTVg@;=TOOcvJ5KkV3{^CN}?RPa8ugtS0|9*;fJF&#Ug}?gL zruXC)WQ^^%v|-;XSR<9f!uaePU?HKAW*OIG>`YPA>H4K!Jo|Ded!EgEBzRK#%xC#>l19u!9l)h{1W`1y(9&orlQO+4rHliY%7 zkwqtcmLqXwBKv;meoPSAc{iWL)c=Fstm?=soxhWEhRqVC8zg?ItXWoP27BY05M0=D zG(RmPvv`6^xte_sT+9)?bKh|s;c1@AHl`MVqSOxgks^EWeXYY z``Z|?q7TDX*M;gY&Ui;(o!VWB9a*{gzJglbPD*cwmsXTKT2X4V?IPF0ObSXQAGzI@ zJQZs7B?amer70jb89Ty2T5b<)v>q-Sxe=B_V4-AxXIPFgXXg8a@=g5yi#tf=Y*VA+ z-HOF!v*}w|*c#W{k`cLZ)_}T;3d(CoNZX}k6qb)c<(J{e<@EgsUy5Yq{l)DHe{*a* zW8pZDVj&Ykz|zOWBUOhLWg=zpAzE>D|3*50zm@>fT7gf0qDVhfuWi(Pp`A=RIzi(- zA8>m>3Mw|H`tLI@`w!(Tbq_#yT`rSb0h_{S{ge+-MyDjjut_|sc( zsu)(!U|3z#S^LnY#ExZqL9<;Finl8s4t}2dSeIoG?C9-8<8$dI#viinhYrdwSXF$^ z+?im<{i(^>pw?Ty-WDo5gge4{3eXlwkiZZor$2zQBMpyPD1y^@b=u_qS3q&_LcnL- zdX-_;DjdP-%UdX(hZYmHhuC0ib1Zo=OBoEl{pa^wI<7}e^=j06ENsWMS{%YqJQcLW z)Henw%0#YeTIyE&%{4o=AXd~p+5_61F{~!~Pn5fS z?-D0zG!EAk>Z)C+M2_WBtcQuog%CQ9%}D>a~uuXCXaf)8GO9%i4no(sDF(W{LI zD{cGv5UHB<^i;F7aNACrc0FP%m$Ez{Y!gqTrqUrM&oBXMZR&8#i{sd_#hZ|SSmM?* zp326hG)fP-tTwt?E5~>NY~+4y68Q#&qniiA8d-go=0cy-tiu=*Vm;kPojey9@JFNl zM`c{tW98GLdJ!4UgOIH$k+RsfHI}m{PYsAt4*+kL&-eqmH1Q;6S9n!Vdmm?! z1)IP`0!zI~LJz?7ya&*T*k9d*Kcjusb^piTkIx^7Tr?NxfPcp^|8j)>L-8`=`S(Kq z*}4ADS-_I@zqa#ly8pv@2KLon^ECX2M+@xy-*}23jq%LRPccb^kf)=-OBYxi37nu&qsv1}eEQb_cSK?S!er>%5r@FT0u_--6CP^^d2@-Ldv2cm8vV zth($ugF+c`nn$X|yGIawuguuwo;bJ@AI(&kIjW9yjozsvU?j?~v}x;*`_Oa(@f~-+ zKN5ORsLj|w%T$3H4ObG|>KT$}Wpr&kU7KYIqFza~jZmy;>=fy#M*ktUF)*YzYG?Fi z$%L@4ioUAZk@Q_d%)AptFp5RVtjR}Yw!iM*zJ7_M|mzcO}~IF(oxoEf>P5mIA|Sj z(uBV}W6S*yZN-MhmrzV|Y^~qsqgrpqbC@a_?=)cw2krb?R8x@#gqJ7g;dZ}Yc4MoV zO!RfQ1*nK;A2J@)X+6j~RjvheLj))?%~4JmgzMI@jufrKCy7-{b)57i6eo2z>7e$P zYWZf2mvIqw(iSBNHZwa8|;q46Miqy zZYd!2Y}y}js%HB{UZ=>*`QGWMebbkDXjfYA*0qCwgZF>aO*}d5P4rp_V$jZ|ZdA5e zzIYQ?5t`Rco(H}3j`H8kA-HGA?;PYy^-`hA_DvfOKX1OTjcu;`h}qX`2feT@n~Po# zetDRotvs++B=myf5XDnlT3u)?{_x}Q{=d!RoAe=yfpQ^hu6y03r2jr3Gv-tc^; z`~jsPWNkSCTg^W#`{Fd;Tk)HU<25_h#nlx|+6L zDWu)<0ja>FEoH{ezA|MEKhLSZ#T5f3H%uR|jQK~Z!H%!|2k9kphN{~s>$|)+(`~Km zX_ZQn$FT9+>dt~7$fD-Y*T;kLaYvaFRP)Z5{S%WJA4%7ljpJ;1WBg-1P~~&e>Uxow z5ozJnRoKi_Hh;TDwv;~7&SqASvx{Ps@39N!YmlE1Y*tAX-qjB(z@<1SbMf-Lh6r`D%qCH%e~S)DHI=!*v^;SKO~(s$j8!$HUf%;+qDwX zbKcsM=sX9^Px|EmSP4dP`WR;$t3LuxR{}*SIv|D&k>JkR?A~xoZV^bKvj0}tF~T!s z!rhHlQb}fHzi@db!4s<3CcfuV6Uh4q+VljZ2v&jEg2gXO2KXKRvCNV(8%}olwvwIal-G*&xT``!H()Qc390u^9vq&B4$nN0 z2RKV!dg~kZ6>EHf$LTtEQ!Vsl{+Y~{`R5$XKerobi^jhBzUMSgWzK!xPB6<(%F%F? zI?BV55~Yh}hi)S7w`KR~ z<1Q5rHdN>>iWP*0nW7at824_K91CcB*7T(fJsVTVw%NMK_Cv4YuqKc}-&?HWXK10} z{JvWbwIHxLD#RzgzGUOZ1nEtCM(Cq5kJ;Y&qixH*cvhVm61^=QLgI30%^E4^83SY( z{1qOjb*I=Fy~}y0O!qCL{Pc=T?nuyaDk_B*=fih)PGRBLo?l-2P_pjhKTABmc&PX_ zdS)|)e05oIKE6gX5g{<=zNl#HwxBi~Tp0pUp9tVBRm;g~P${l<{V?m+=+ia{%TFYc zKTK}No;M7*jC)IysPlC?l$N%PMy7E;XtW7?f$e2I{$$I)N@h*X>d)*3^4&Ti`Q#|i z7`~x+QtkSBTOsMVKz&3=S-Inlb0jT8o>>9?Vsp&HS+zR<^t5{F|SjcUs_Ot7RX zFq`wRbmJZUOz+Q&f^!*9X3!zsd9Fik20$s-xvExQjmbC`B(fAv;s^ zOXtab{T8Fr9cSfQA*dLel#keA`fnvpKfz^^`0I-u?%(N$S`O$N&Wr&y+F$O|&|qkR znEU8GI&A^GmuIv$iWhzi#-^r>e#_KPACTWy-b6kH+xRJMBVLoRR-v|MvS*+BtlXD3 zP5LQhbe}2xSI8X@sLMp?;?R}lC;V*N-#j{{yHaX1AsC6IGY_&g_K;5CE7pS*8um_{ zn~f<(=<(}k-AvcAel>c$owABU&o$O~>U@Det}3e<4s4nYR9+<{^ah}4h&f7SWLN`r zXd~mp0DO1&@e$8!ch0k!cTCq-L^gHv#Y?W|?1wNQJ*i@XWn#pd2zX%sn>w|RUVq?c z3Y>Uj#rtE#Oe0%49^i-;SPx{J!X>0toxMBFH8RQ-s&*K_2+^N)5kg2mc zmc!z(|EqfQ$~8f4fu0ZrzF$h0zweg*Xq)OYU%MGKkhQ=lxYyD)$>gYONb@T8Z*=+8 zGltKlE$>ZX7nj*w#Mdp*z_07q4&g8Q8|N6?DXgb=?(Z2r_p^~`zc(Ia`1p)2cXL#& z?p=p|ceo=BM7zbqR<)db6+QA^oFnF#N?jp0GrV{l5CVSmaY*gg^(}cUUT!s@;rx>@ zs%}ba1O8%anPODH9H?mYdcYBUXs|0ugdN}hP?h}!-lxf;E{fM`d|hdN`r^|*gfbX* zx@NE4YmPTBdzN6T{S#^%)4dRtIhSwqGx_#fQe(JcJ)P6ZU8A*vE*g|VNTxS5nB)B3 zE4Eht#->||0+&w@>M$`mzL2(BRh|qBCJ_+ekfGs3r^el|c;l@re?afu@$+g8lw0<( z8zv3>bw{H+u_yfZ$`G##8nE)-2G(~3f4IJV20s&nmOVjEm0CRF=lL^txI!?f?AwqA z70<51|A>9viUyoKpIn*lc}p0ZvyD`-Vg@W{FZHke&{OyAV*vGCYjbWPR18iYczL@u z>EY$}%-Q~gUH7E%s3e{Q7oaIcPD5=CIRzT6HHu)|^-kB^AbI;f=~AI{L1)$6IM0en z>d$5yi+uI&sV~Pf=;z%UgVjVpN=O zLM1z(CsXfa0!t)wAjNhLMo-|GievH_7RSMc9liT~)V?AogoZ9_!`KFFB_P5rA?D|S zgm#30>JcHl>dLM__WQtrvi*GDCwXD#!BPC2DTYKkx0J22d{O1(oeE=Bx))-q`dhGPkH5E^)do5ANF0 zQ*%0m469zL=CFPWuYZBi(P?uKiL^(YYpMO?Q%^KuI>_d09t#+Hz3eC2mI|O?t?d#o z%9Dzmy;56XXbx+xHTa#c&Qi4e&IhR|64NJ8;=;kre>}7K=UgT0)8D$9+)i$RJ{RyF z3(FHxlN3h!B8)O*kP)gF|G^-9n|-PJ=#1x>``*0Cs?KismXvqA6sVZP>TX#^#Fx&= zV=T)(A4^03wvZL~(JAk~7cVk49?jCz#|-&i=q0nXRJSN%fe2j_^p(yu?sCyYT>57g zRUl~fg<}GJllqc7xWBd`Oa;RZRD0@|FK%2Djs#sf3Vqmi?`0+GMzr;Q)6XoGnE_pR z?(c#-p`P5^ah8+)ddD30%R>Fb%kc7L2nhV9<|N(ZIJ&nmzeW0feP*s-ayZKTIP^$udt$LSx{Msn2A&DpA_cAguvG9B4_Tq@b zYNKn+9N%1q+U;wV5eoR1OPMPW*YkacLrmpU-+}bK%=dhC-Pg*#w=Y*p5$}e)Vr?uh zyskai+2pz`G>TR|tmd+3PBp=|&!rcFH_Ou|L&|MOOBFBBI5hykOc5sgGx%$-{C%aU z^`p`{a}VDDtazA>Ky;u~F^+w=edi?KGPVZY`Z@HGYuxnA8>Q8D+fs#lV^x=Z`&Vw2 zOOSs&fV?o-&acQBa~R`6j}~j+j=0}rkaVXx?C721pSk_Tg6i~O4x zwYwYUIcDOz4->z!%QHHn|QQdDg9gL<@-#GX~v zD6j10X8i9Y6l#ndVuhmOvz8S$iN=LhMSa)fLM9T;KcV#~AJc=VNR+d%V+mK`M|9>^ zb+j+%lype#>Fl_I{L8{~?T8S=`dG$*x$WANa&w5QijGh!C}|*kn)2iFPuQL$R+Q8t zajH~`(B78cTonpwGyD-Kac7@n>U{QArypWV2<9-SJ`r=jSzNnyRpoYY=k{p<;TA~Q~pB6fw zd<*vp-dfDxC=V}zB^pleD!Y$LD<%7Lu`*!MlI_O|2k(b-iw?GU7Ad_2M}p_aqe z;&9^D-X9L8^_y~`b=GAq=j&qNh?$(;AJDKlrkv8wDg{zwExHYpI_8CKna{1yauA(} zpL0RGq>>vw{F?TNdZPLS-fcOhqo-SZO*dodXp)@%7amW1duSUnc6X1J4c?)@GRc`< z1%(BuM}8^uVl=UOyV-g=uI*cHNGK$>y_g7HyCR2|GXcQM1enU#zX52Gk!hqO6s^mMh5`_+>iTqp0UKFiYIH&DZu?Wwo z%6&)^GM>2@a>)ShRzJ7QpTvSuF5;1MK1+HK@jGB(ZR1u4_l;iCddlNc?!Bn8>dD#Q zp=UJRf$;#C>B5V1>r7$?k&ukDU2`xye4sIr+}uHIRj3Wx^1N}$=m+R-yrB9ra_H*Vbe|mpvV3aCbYdfA~ zWPMKea^2gwZbU?!$-NG?y4l$Taul z{=$J6;6ne6)fTA%-~9KE;1%GM|K8}&0nd#8+FqS~==8r#;{Ly!LS6meLDf53{eEoz z`98UAH`@ENZq)9ZtHKl7?;8o~L0;rSlsfc3{kI9%-v<;84H5R-G+#7ErvEi&A<2Ki zQSd4yJTZ%&R>taj=()2UAJJ=lz%woNTkGIpg9qKC7q|Z2-@WI+J4^tVOXp<5-EPjE znA9(9Gaf~D{RcsOV@d~zP&3{_~Q>#TqH+9sgC$yF_ zR%ou12VnZG6ODmv_7DE`O1$vkZ(tthBYkyyu*@LnZAPQKm`$fW?rkg0eX)B==nm}f ztc8Dql9@S%`r>Mv>}H1@DbTr`ukCTX&MF5O-Ujc+g&i=Kxta=6sZSSUeXP(neWc3Z zm-)Rb4#^n6n^qU7_aX${cAY-R`1+3v+L#4V$HP660)O>-@n{j+$o z66FEjPq7ajSIfD35~Y#-iz?a?AAcS7v2?DFhC^r!Z(%LHVqyL4THL$IRim5-LQ+?; z_p}rgBxW!|devisK-LOuY7u`kSHrbe-Ep<0P4d&}{{^S)`$vn50(Y3)8w{4Eu$TB( zqQ(uG+G_3aO0dUQ&@Z$oH4@Py_O`_ zY*RX$-)l<=1+ZZXq*+v)S;%qHTV=tvP+#D&XEyKvYTi?6sIarico%>1muEVmk@Pad zvTeHTpNGkeBLSCXhh6$uQN_TP`3bNzngaa(;@)-+Z|na4T9VK*?g#hQ~= zs`DYMX-9SVn2#(~uAyQwydohcKhxzkbV0PeVmp_{@$pK;!id0)FEfHcft;a6>MzM5X4GdQIC+e5?8`rPZkjYYF2 z0L&udYm1q#R&`Gq5CHQgi2txfp&kwrM8sw%?~1|yU=@Qt1HiA3F)W~^RiU*-!Y7p= z2JwCyFX{T8UB+l{5YicGGs8hKXcaX=UEO!s1dk}Z7j@XUNMGS`CfYnfuQK{%vpL6MVM%`Hc77#&^{B;ht?Y5137zds8X0)U1Y%J`P;=l8=4KTjNT zNMqL3n+Ks#?}I*gG-ZM3tH6PAK)sP;KW)0w5z1D#k-j|FC6z0 zeUBKj%0UmJ#y$t?wI!Z$2{LdOmRQ~YU^C3)5qGDmosRlG7p@VoAWv5a{Y#JQW&WFpjP$ea~8 zE+%~(6Tg8vLK%Wxo&rN$?yx3nsai(zYq{UO)tbKa# z!g~`m<`Yjl-zUnr*tLJxz%>b==Xji33+k4X5-(3(^HO^7N^bGjgZIG*3z24Se&g29 z2CSf@MrWUkah7ReR7yH$q;t$S#2>VM{Taa*@`ZD7^KyZBooVW`is7>Z|BeQtz~99{ zON&(rPKt+C;kSH$+ZXmcnM=@#p3C7k0U9Df$F^!m?+uoCE?hvM_|7`Hd0V66^l@oz z?bo>FROpDGyIqcd?iRC$M_})_wOW$wp7M3c1q%<*_rAB{34y(xTGPw9{$c0fe};1Q z*rV0MiwVKaM^;cDM_Mgj;73ax%C|Q&gKYS1OCGX}-~M+UzxV1d?}IYmXcb0FZ66#g z9odI{jbroYy?1XPNCk8f$E3!lI}!p}+w2m0j_6JInigIHxLg{c@lnsWg@Jfen#lh`#GqW$PdGK^y7%190s@7piXQgQ=S;AFEtX95bp9rw`kl=RRDJ z!ll@D*htqu9JIaV(&m0RzmTwY<~z3T=t1akaJEPI?`;0Jhw)z>cd730fy&yP_7i@V~uSI!wplafzLI}FP7}@ z)&zDQC1#(bM-dCGkNc&htYGf8b=Q>pQPg`eqqVJ#_&!mnqfBUTsTS(wYPM>;SE+=zdBPQ zgVV1pU-+c-U8^!!p&y0Ntr)PXPJ0f<3{m%E`C0%qH=ClwH(!+8UEIBJ^#K$ zRf}NT?Rr*7dvl4ATlwjU1x{)JFzO^G>~kyN3B*cjDlP@E8(rW*(!Kip@qa}@|F#qG z=l|>z{lCutKN1A||KBNBqypBA_Q;kf2XY*m`I^QglSU%gw^u>U^%$$t*l{(HDO&T`YACUU+Ww~=95pO@@~ zsha`J#*hy&E7cv&d123klcD9l$^W071_VPY3VUFoBY!+(HPeOW49{4=J44KpNc{Z# zcDBj{px~tZZ#Z|UgvizX^U?onaCWcv|M8da|JD06|3AkH_@8g=KYSsY-D)y?*@U<{ zK^m1;w+ z+p)mo=h?jYEfwO&t1A*TJg4(-T2D4vq5)0^gd496_U2RWHF*h%4*rrkY<$3xs6=zU5 zOTmL~{_RlqNFn6dH+Wm&AT~Ks%XL6=Q<3HcbZz_Z^!jV54&8zQH7`g-gX~8t_OCJr z)F~3{p$by}&d&V^#AJ>OEiz~`ZN_ivQS3nlN#;A z?OIS?%y2&NSCKfem|ynQBUvlY7pVZ@XY+aE;`qb-qg6-Qu|S|4&Ebh?783yR+W;Yy z*I#*_^7*=8E;!VsH!92lb+C-;_4H#-zwqj{NFmUPMKAChuh}QR+c)5e_U(V=bkw$h z;7d@>=jj53ohd9GTq1Q+q&?lr~$J zVbIX>4+>k{(MopLNLRWUMkpi*dn;r=pdCs}Lmz8U9XPH*_acDR+rdCVwO0uv26;oK z(i+I%+cOBnwLpN%V@^>gqyniWaC`LJz`{xUu5PNF&SEMNsCeU>{E3eAEp(I_00IeI%^ zL{a>QtZB#5sB28uyy#e6wg^D`uJaxMi*3jn4kq+*r?V9<@EcQDXs!#}r`po(V0|E8 zh@Ozsm51^HvnrWGO{d%jv#Ye~+B0%&WhV)pzMu47;Lg5!^D7~LF`>G6d&d`g^!SmH z19)uZ@)q&KnLL~&?q%ZM5*D-c=*tUr?8HeELSK9cZyF>23hllLH?!z}`*9RK9H86R z72mY>F=kgD!!aXw(EwbOBmpFsNFgV!ANX_%r$L8Q#m$DYRFHK`d z7f__3`Uav%P3-ztsU{h0nD+i?4m&MOpsi>Fyo9m4AK)?^;Z-&tHbZHQ{+S=N!MzML zIlsdVhn8epL~vPDR+nE0fJC@QndJy@`mLvn?*PVGgg!qV*~P{)xe0sq=XdY8FU4K9 z((l+S5Us!AJER-hB}Q0d}Pwln-4PxCYeNsLdVPDcqBw2X@c^LtW^ri2szsH`W?I388&!PEj>MUAi1Ub_`NI-X_|dvr!3q={08`X zZaW|g^f!p;epMs|fs0(o3@0#F%{t!ZE8Vwd`QYV>cZ~BdDD+9+Z_g`-H9Ieef`S|z zo~N;u)f2j{6X8T`SM<}kv?7{BOn z`}@XR4w&^}3f8pA`DN|Aw880CaQ5-|;>0e)D&@ZC;cQOE&{y;(c}hLexupW1cK5-f ziO6^LSt6+-n~-@&2}J|2?i~FpX|wEGonT#y^x!A!osit^PL7*A7rS45>Kodbc*ub@ zPo&JV`4j9OVU(5kO`13HW)Yh60_lJa*~N4N<<&N3O=eqn8%vw%{!R+P>Yqhnmwo0D zKfWikw`8cxq7%=2XW4ako<+XI3?wjQmM&kE&7Z_?-SUvqc4*J@IeIhPp^K_V&%kzD zGlo_+?qlFfn+~mE!Xp6_AX0~JDgNU|fcYmn<&971aAj=N5^W^7Z~;_zW2)69LDgn|b6WiYPOyNC}zZh+kH;28- zT$498@u_ZX0`sbty*WD0s%fSYq0dxLT|^47X1vVaEbE@`)tg4-akTT{nLudP^1LR3 zNOIi-2&_H(qT@}I+SO1@u2*JhZKFy-z0roW^Nx%>XGg1#ZAkUr;Rg%63RZA$xK-1> zm?&e3sgZXJ`_ARiY_h}~M!EMQKJ00anfpUIz1g>s7>Tdf6{^mqXIQ-x^^nURu~YWD&k|In#(a`;+YvD+)1B) zt&{2zOPgC4vN0WoL6fS&wgxDHud#t{hgAXja{?l$A8SK-8ep+hKHJ>oFH=nY{fZ(k zo0_r1avB6%?({?b%uTZo4w-aZ>Fze8TA2Fi>_E2tQSF(gpI2uJT=*2sE(9KBwrPhF zt8&1#W(h(W3qkAK!zt;SDXw#8h~=T+JjsU~oE_gEa`+nc>9YRQb$!IwsT`<_FuiGJ zCjC9&wW)mNH2zCjtuwV2x4(n^9eiV~la+&v!AMAEW_jlG-1qgn zE-Y45m-?)zb$I)2|MY=lI5FW}iCg)>LZ0N-_jeJKf7Y>rVI z2V#YkEflq4ZvW6y3uTj4J5?{nqb^pC=Zd}^WeZCX$vD36`mxmyV*LgyZ{)H5p@+M* zD%~NtCaOsrlTGiZgnGy}P*aTysY%y%7Ui7rCmtW`K3yHKY2@|<>cwPS>a2h+qP|V} zRh+5mTYS;40h6sh4cWSX(oo_AnpmHYCIZ*Nm2-sj`r{i2HXra#_oA;6uFR=AoH>ms z;+rTc${7$m@hHo0>AoNr1ag^WTxoNOJBf3hRhhfh2*;D_`ATM$PQd&J*A}0FOm^@b^tzL8L9mX=af-0^B1pS^Y~&!9>KJy=IHeaN55c_*nTAk3_h z6tHdIV{l}pWS+zIK@6D>m3o9!Si#pM^bB&h@^|kn35?CHB|K{B;|*?W)oi-4!90%p zHE=0OjH&PThJ0RaZ<)B@^;%vrrcLnv}5*F zac>7dr2ye8*}L$BmHa`o(!JN9+MAClvfP1a+#4%PUkq+9!7k-Ym1gg>gClcWgC?`L z8B#{oyNt!KBHTB%W+*Rp-bD^T{06#CN&C>_XRH~P~+#0&1p7q&N4Jjyhty=JKQOvRm#ahy8SMox|*d2Q%ExnPLY^kPj6+W#e zeMGeFF(Kz>l&Enfw;c~?hbBOSQCMFjCR=^+7?WW(6>c0I^gZOFkdeFGVukZYB#(0! zCMVB1(kEke20Gd=kn25ytuu^op$+Usj(`<1ovbG?nWQga3cjlbDq}odYQjOz}>0(S2BUJl} zo^^Pvt!&BiE?o|bTYBDfXjSAcc1tcr5TAHNpGSDGP_I84urR&#)*ENi*w<@ugNiP4 zVf?%s%;1a+mxgNFr~MEZkCKt<4Kj`& zA%4yKKKp7&=fUn=vQ*m*m%CG;hQ0X1gdYqywO}%#UzkIn^aLf?Wf|S~mv%3;Y4OYR zm{%<^Ie)IWC>qd&OAI3%Yg*@?IGhw#+nGX)c|6r$M>%)$7_cuU1svcCbTgG@ixvWf znX^0E%%kk{W;`$aFrAVude|ODpwDID@hCxGatOlJH0KFenZ+oE+w-=2=@ z@pX+8MIP3#AiA|y83(Xes$Z7hQ*t-CJyx7|&JLA1lY3Jojut-TMz;(>;%N?^z`bqd z$SFnr_MF8dqMP+=R+i1bFmvM=I@u?w3@Nk62H3bop0>-{h&B}T0BJpH$DN$xX1!4E zz4s1vp^Q?JQko;(ENw7?W$I+?3_K`qAW*;0M(7V_Gv8lkFvy1n3|r$_V-rw9IQnQSA#Z0F<_@X0w-)AUV@c1gf&TzO#>ob8`M5>1ZAl-U9kGH<$bK6!t2kAu$RnL!J(w zP(aevy9Y|QL(#o|^aldMC^M_RyW+NWY@J2{^V~TCTta6GJrnl1I7<4Wvm2NB?gi6o zMd@_CUdRy^i0TX9Qi1cvtl9+pP+1WFNm>5rvDUCDu^vMDDU@c^ZWRGJfoWYPYuEiP zTRxeW5~Ax=DBfW2uJ=YQPpvSf<$4}pdi+v99E9$=>zRI*(VDGolo`HI`OvCgz~K4$ zj*iD{`)@0H^9JU9cJdCFlhx?G?J20rlD?EC3;qAF{`mH5@V$Ze>gV(GOx8Zskyv%I z9zJbtyG1bhH`u9weZ`98o98<3!y*0$uT$z&e6fe#rp?bd|EOzztFbdsKOzeAv%3Tv zy|{Ad{w|oUV$_K;Ha>~h6BoVsV*9I%Ou8CoS_yXb6l+HigI>+n{HD~jes_II%tLuW z>*-ySrH|Ee__m6trZo7r>DyZ5-_-U0EQ z?d-INT;I!VaQZLz&n1{}|6z<((0{B_j=HmbD zXF+8j$daeTq!_q3zUo_Wve3R4%6%B4c%9Y7^DCnv<%iK^{U@tZa7c^SWTdIVanx6J z{uv%=R3DQ^l){_dFCs`9O@s2ZEXfsB?)j^yRcQ{8YRw4}(qHStou*zJTKRINs+IEU zou}iTIW3%Kw-0+>`v!a$eobZ?PbyhXFuvx(h8=B(nDZ+>5g%IhNZ$pA8*0YGwMu7P zyTi^Ut-%`~ZEnn}dmkKp*mo^VoX zZhM%q!IA9I_c?ag?|JgMkkJi`!JbLdU~uJOykTeeskX1yi~2c2m!UqXO5I=)3+iJ~ zS)F;MkAA4_IY}MA(;k-W$-tifQyF!g{xs{OAgdbOs61dEFgw{J)P}(}3Qm^J zwd2o>6n>GCD0%We_mUh5a3?@i<u&EMJhn1ucahEirV<&NSX zjWk@`;*oq~m7*QWowadGL4)o#500PGaQF?O{pd$t_smaboi;v{qPooOofVjc=Sve# zYnHw~o}eoifb!BwyGDU?tO868HVG^1wjVylCCgNHyh2VMnd{~Ik>P6r_Sf94&H*qg z5?o(%@WX&3{ceBNduXp^-eh1JR)9QJ%aFexP!wb%O=Pzf_f2)(UHM?2G&W{1(B@)o zcmxjVFT6Z^r*mD^hLD`Tw7V}k$Zf{xpla~$e{Zmd^sI87p4;uG?l@X7OHUO zv)%rn$<~L#y>Oeg8ByK*Cal;g)_;ON*@aeR4HUJJI4NuS_W_qyuY1!C(g8ClRTSvP zF^p4o5nB|{zpE>=yL(}&4HME^3d&#if@R|fb9#FA#`=gRf0|+~Vz2_fc7~O3K`S&6 zRqGk5YT*TVQ4rqPWwaSdr|ke<6qs9pdc$(KkE)WtIs>nctNyyQ< ze=0A^yeS|?eZ5t3NuOAtlQY}woH!d>GB=Aam?R%(l0WcbV#jisiBL({2w)uR55Ac9|aTcGpWx};F#UA;bnOkXG>?Z<>-g}P4XwmfL9ILdoU z9fjD&#AjZ1qMBTk*o|4i?*rAqV_7?X!@z^F{MKL7qyGB(_bBfBD-BPWp~My>b$R{*uE#6m+Q~8-5DAqJ|R76XVIa=O5$KoBnD0D98KFFTprmoW; zb{a5UXh~n*-ZH6M9x(RrW=_azxY;h|>4A%fk8PU>IrXI>Ag?++N6cyynw&U1sJjm@}Esxskj)z`$&t#TUQ-`$TP5am> z+@~v6hk-kA$_mumNC<58Ten$PC)d8Ujv~GQ5ge?W2_}lMExM00u_V0(DF6-%SyURT+fh8i&udP@-<#y zlswRX0<3c{f6pGu2DiCpUi(X(+wxo6AJ(pdKBLbYETEQOZ~d%{yE<}o=@6z1IicLC z4of_O)_3NV8g$$LlHB%bVrjQpx8fgdW?EUcR#@&TF9u`gfsfu5tnD3F!8$-85AYM3iWmuU-v$x-M7YU&7eG>`H zz2l){u&Nzma*~9@y5knsSzBWJB#`<=4Sna}Vp0MGG?l;^bYWd*v9DTtvF4w7C!LR? zLh}B`@oi-VACl$f<+_SaN(jJ&{*&lS(9Vm{TG??ptV}VT3Pmpu3 zZcks93K=!o!ZwcI!kj;bEpNjKp(PR~P~9g7H6M<)l>gICASeO~)jF2f>q1NQEPhPb z{(AFLN5?{ZTv5!ueOPGdQp%ciN6zd}ZmQP?hi}B3^4-x$)a`CD;&7zmJmKp*=kJ`j z+TT(9A9kcLMz=}Ly^C6T&iH6uQ6v$2JHczeNn}s`iHE3hW2N@u2P5~!2uK;?;M=pZ z$oiZWClcvJRA-Lw`w!KLatUkcB_`YIpr4Dkgd}>^oN69bqJ2_2n=8u@$~@L98OU0D zIxU;iG*6#${I5Obl!mdYZlK-R+%=Nb5Jm58wOGYy)J`|qMFVu-13iEhPgbN|tlluh%Wu{nV@qN{fTGE;ob#Lxqf ztZ{U1&z!kA2H?-q*zwYJ<$deRGyLFaxFl5%5`=?_D;~r8cWhK>o_-?yX9wo!^IfYy zPdma$u>r+U?|Jb8W<>y;f zEf#tfKp^aEtw3Ak`B~uhLvu#Ux+rSxX{=2!oSeO{D8!OTX__|xPXkotQBb!0&4~7($3~ksquJP#5_~sZU#&?9418Df@0Kd#e)`#n1;nQ#M8gpjMhm<6qXaXbpz`U6e?vVPS z#*$wlK^nQD9rq*h4C}T&*lBR;Uru^V zZuGwj&q#e3YsIWp0VQV1Wk?jwr+*s$Lu2}| z=zyn%lEH5j-f-pgEY~1~#Bu*Pfx(9acI=2~2}PD-T`)HU0~R;4+~1 zT2N?s=kM2)WkkDBXAd_Mau99K{Rj@9gE{Irf@%=G=`#dd9%1`-e6S%HT_z7a+Ke45J#&U%}v zRpcyA1a+bym4>)_3)A(qE7$#jwTWHI^!^Z?9v-2x*wn5=^asUpI})b>fyLMSlL<<< zl{3y;NR1eoXqobU+9~9F$oXr_uMCQ~9j3*-6sqWH1wq~G&@`>>_ZvsQqX76`J3zVk z&cs`p@%=@DVx0=~h#@7#N&!74gu~bU#o-I4a$(mW$n{bxffxN3-%7-{l13D?@D9>M`k=4diWfx`$ zo861qx>rS0*(=(tJipj5M>Y-oON8qC`3Q9%Wt+^m!Y^Ol_Jb(Hh|;OB!bthX%7W^1yvpw6j@7W?Tn3`qV|oGo4RJE!DE+ZAxMGh>Y2# zFmipw!dk14XCljB3&}gZbM%hn%kDT|_M>yFx*VpKpW8VKG*z|_#k9-vM3_cO>BrcG8R2IYb=Iy9vIE`%VkM^+kf0HZ)aRw z5EGlS$XjYn+tKixE%Ra5FoD=`QRt)4A>kQf*7_4MY?R`twH6s;eyS{`m$A~^1oNB9 zu(71I&M=U`yKqZ3tuo3zY*^DU60IOg)}TYR+zSTWt%o3}#XqaM0e>vau)?$Z@gI~--y(Zb`aG4Lbubf1$JCV&Q($S=iOtXn}+PCHl61&z|W4GRCz&RlIVjng%m=fh4tb z3BBFW*cE^D9^qLsq3@Dx<^0X6$bjKJEqvJ3Hypetl2+%7bvIex_GYKVryk+H_n&z=oQ&!Cce^p8IpZf(5EeoWH~9P+EMr9pSiNp;tYyFa*_5+4U%#m)3Ci&1GofB)OD)u%#*-r=&XmLNj5~{*a^$`M2u)9Sp zeJ}N1KA?H74EXClAWGJ-^f~L89h`OxR6}ehL*c~(S8Q+o)B4amT^wxYl$W>I@i`#) zj8EC-wc#!X8Y^dtc^W=kBqv9zu*%i&`Z(?6SNdZWO5 zuWOD!48QzhsyKZNs4{D5)gY3r3`J}ja>$QCCOHzmsyUs|s;_!WEqjn`$BG#N@f%MM5WLdOk( z*>x`c=6i$DHO3fXy@!fxz|o~Xx9KcZ=|=7#1|0?4Lsq>Rq8gQ|4A1X{A|4iE=0_11 zTezwMz0Ipk;fRcf?`KEUM0; zC}YWGHNElaKS{j>`Nc&DqP0Ov`<;qWVBP2%lwT286kMlZ52B(gJ#}krvX|OJ?N