diff --git a/.gitignore b/.gitignore index 863349c70f95135ceae5cde61b0c3f1ef1f72609..f94a7969f76849406b61fae8a3648e4e01337862 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,7 @@ build/ ### VS Code ### .vscode/ + +application-sec.yml +xta-adapter/KOP_SH_KIEL_DEV.p12 +xta-adapter/run_local.sh diff --git a/.helmignore b/.helmignore new file mode 100644 index 0000000000000000000000000000000000000000..f7ccba7339b7222d2c9c9ddc9b7e944f689fee64 --- /dev/null +++ b/.helmignore @@ -0,0 +1 @@ +unit-tests/ \ No newline at end of file diff --git a/common/pom.xml b/common/pom.xml index 4957c67ed3eba8beaa5c08336253fa04f76955fc..2ecf75c372beec835cb2ebb79c28871765a1e08b 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -23,16 +24,14 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> <artifactId>common</artifactId> @@ -86,4 +85,5 @@ </plugin> </plugins> </build> -</project> \ No newline at end of file + +</project> diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java b/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java deleted file mode 100644 index 17ec9b5f4098836e04019baf4a4733294fa089c0..0000000000000000000000000000000000000000 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataUtils.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.itvsh.kop.eingangsadapter.common.formdata; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import lombok.NonNull; - -public class FormDataUtils { - - final FormData baseFormData; - final Map<String, Object> modifieableData; - - private FormDataUtils(FormData formData) { - baseFormData = formData; - modifieableData = new HashMap<>(formData.getFormData()); - } - - public static FormDataUtils from(FormData formData) { - return new FormDataUtils(formData); - } - - public FormDataUtils remove(String key) { - modifieableData.remove(key); - return this; - } - - public FormDataUtils put(@NonNull String key, Object value) { - modifieableData.put(key, value); - return this; - } - - public FormData.FormDataBuilder builder() { - return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData)); - } - - public FormData build() { - return builder().build(); - } - - @SuppressWarnings("unchecked") - public static Map<String, Object> getSubMap(FormData formData, String key) { - return (Map<String, Object>) formData.getFormData().get(key); - } -} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/Application.java b/common/src/main/java/de/ozgcloud/eingang/Application.java similarity index 84% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/Application.java rename to common/src/main/java/de/ozgcloud/eingang/Application.java index c4604af02e546e855723ed488e8df97a65e8d063..0f72716897c0a3f2ae7640a2126f1652880aebad 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/Application.java +++ b/common/src/main/java/de/ozgcloud/eingang/Application.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,17 +21,20 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter; +package de.ozgcloud.eingang; + +import java.util.TimeZone; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; -@SpringBootApplication(scanBasePackages = "de.itvsh.kop") +@SpringBootApplication(scanBasePackages = { "de.ozgcloud" }) @EnableScheduling public class Application { public static void main(String[] args) { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); SpringApplication.run(Application.class, args); } } diff --git a/common/src/main/java/de/ozgcloud/eingang/LogRunner.java b/common/src/main/java/de/ozgcloud/eingang/LogRunner.java new file mode 100644 index 0000000000000000000000000000000000000000..5774d72b3b4b893018d89ef407ec58effc7b0975 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/LogRunner.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang; + +import java.nio.charset.Charset; + +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.stereotype.Component; + +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Component +class LogRunner implements ApplicationListener<ContextRefreshedEvent> { + + @Override + public void onApplicationEvent(ContextRefreshedEvent event) { + LOG.info("Standard Charset: " + Charset.defaultCharset()); + + } + +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/FunctionalException.java b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java similarity index 89% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/FunctionalException.java rename to common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java index 5f56753420ebc01a6442095c424d5891eba5abca..5b9623592074fd843c8a2adcdd40f48042ee66cc 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/FunctionalException.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/FunctionalException.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.errorhandling; +package de.ozgcloud.eingang.common.errorhandling; public class FunctionalException extends RuntimeException { diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/TechnicalException.java b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java similarity index 90% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/TechnicalException.java rename to common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java index 5e883305b2f5d6c0046b27b24e11e959b5c5d810..6fad5382907b54392527cf08f5778bbc0824c251 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/errorhandling/TechnicalException.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/errorhandling/TechnicalException.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.errorhandling; +package de.ozgcloud.eingang.common.errorhandling; public class TechnicalException extends RuntimeException { diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/Antragsteller.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java similarity index 90% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/Antragsteller.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java index de6ef6982781c5550b7c44070ad8ec9b44dc283e..b5568618854c4f2447d999696097e3e64b341ebd 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/Antragsteller.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,17 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.Map; import lombok.Builder; import lombok.Getter; -import lombok.ToString; @Getter @Builder -@ToString public class Antragsteller { private String anrede; @@ -47,6 +45,7 @@ public class Antragsteller { private String plz; private String ort; + @Deprecated private String postfachId; private Map<String, Object> data; diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FileUtil.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java similarity index 53% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FileUtil.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java index 6dfd59eb51b90040cd54da6b5d394c066b6cee2f..e34c8fe13eb853d9db337e38d564f99ec499100a 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FileUtil.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStream.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,28 +21,36 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.common.formdata; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.nio.file.Paths; -import org.springframework.core.io.PathResource; -import org.springframework.core.io.Resource; +import de.ozgcloud.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; +public class DeleteOnCloseInputStream extends FileInputStream { -@NoArgsConstructor(access = AccessLevel.PRIVATE) -class FileUtil { + private final File file; - static void createFile(Resource directoryPath, String fileName, String message) { + public DeleteOnCloseInputStream(File file) throws FileNotFoundException { + super(file); + this.file = file; + } + + public static DeleteOnCloseInputStream from(File file) { try { - Files.write(Paths.get(new PathResource(directoryPath.getURI()).getPath() + "/" + fileName), message.getBytes(StandardCharsets.UTF_8)); - } catch (IOException e) { - throw new TechnicalException(String.format("Could not create file '%s' in directory '%s'", fileName, directoryPath), e); + return new DeleteOnCloseInputStream(file); + } catch (FileNotFoundException e) { + throw new TechnicalException("Error opening file " + file.getName(), e); } } -} \ No newline at end of file + + @Override + public void close() throws IOException { + super.close(); + Files.deleteIfExists(file.toPath()); + } +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormData.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java similarity index 79% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormData.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java index 575fb833d60fef2a234f533f6a7aae83bfa9a9e1..f803f2357301aeda43284a0328c238a5c844c2c3 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormData.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormData.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,13 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.UUID; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.Builder; import lombok.Getter; @@ -43,12 +44,15 @@ public class FormData { @Builder.Default private String id = UUID.randomUUID().toString(); - private FormHeader header; + @Builder.Default + private FormHeader header = FormHeader.builder().build(); private ZustaendigeStelle zustaendigeStelle; + @ToString.Exclude private Antragsteller antragsteller; - - private Map<String, Object> formData; + @ToString.Exclude + @Builder.Default + private Map<String, Object> formData = Collections.emptyMap(); private int numberOfAttachments; @Singular diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..e7872a32130eec0163db19469ca1c812031eca24 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormDataUtils.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +import lombok.NonNull; + +public class FormDataUtils { + + final FormData baseFormData; + final Map<String, Object> modifieableData; + + private FormDataUtils(FormData formData) { + baseFormData = formData; + modifieableData = new LinkedHashMap<>(formData.getFormData()); + } + + public static FormDataUtils from(FormData formData) { + return new FormDataUtils(formData); + } + + public FormDataUtils remove(String key) { + modifieableData.remove(key); + return this; + } + + public FormDataUtils put(@NonNull String key, Object value) { + modifieableData.put(key, value); + return this; + } + + public FormData.FormDataBuilder builder() { + return baseFormData.toBuilder().formData(Collections.unmodifiableMap(modifieableData)); + } + + public FormData build() { + return builder().build(); + } + + @SuppressWarnings("unchecked") + public static Map<String, Object> getSubMap(FormData formData, String key) { + return (Map<String, Object>) formData.getFormData().getOrDefault(key, Map.of()); + } +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeader.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java similarity index 86% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeader.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java index 30c3aafe1edbe3c8abb623d2e6b994110301cfc3..5167ff81e37b76e818b7f05af27fc437c559e16a 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeader.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/FormHeader.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.time.ZonedDateTime; @@ -32,20 +32,18 @@ import lombok.ToString; @Getter @Setter -@Builder +@Builder(toBuilder = true) @ToString public class FormHeader { private String requestId; - + private String vorgangNummer; @Builder.Default private ZonedDateTime createdAt = ZonedDateTime.now(); - private String formId; - private String formName; - private String sender; - private String formEngineName; + + private ServiceKonto serviceKonto; } diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java new file mode 100644 index 0000000000000000000000000000000000000000..aaf0b15c0f6528a496280ef0caee328746918cd9 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFile.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; + +@Builder(toBuilder = true) +@Getter +@ToString +public class IncomingFile { + + public static final String TMP_FILE_PREFIX = "filecached-inputstream"; + public static final String TMP_FILE_SUFFIX = ".ozg-cloud.tmp"; + + private String id; + private String vendorId; + private String name; + private String contentType; + private long size; + + private File file; + + public InputStream getContentStream() { + try { + return new FileInputStream(file); + } catch (FileNotFoundException e) { + throw new TechnicalException("Error opening file " + file.getName(), e); + } + } + + public InputStream getContentStreamForFinalRead() { + return DeleteOnCloseInputStream.from(file); + } + +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroup.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java similarity index 83% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroup.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java index 70f2b043cf6f2b2848e6db88379b25f9e53ff3c8..047b135183492d73b21f37b1d6f35f264b396df6 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroup.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroup.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,13 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; -import java.util.ArrayList; import java.util.List; import lombok.Builder; import lombok.Getter; +import lombok.Singular; import lombok.ToString; @Builder(toBuilder = true) @@ -37,6 +37,6 @@ public class IncomingFileGroup { private String name; - @Builder.Default - private List<IncomingFile> files = new ArrayList<>(); + @Singular + private List<IncomingFile> files; } diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java new file mode 100644 index 0000000000000000000000000000000000000000..fb83e41a30e3bd0345a922ad682dfcc3ab426a7e --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/PostfachAddressIdentifier.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +public interface PostfachAddressIdentifier { + +} diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java new file mode 100644 index 0000000000000000000000000000000000000000..8b9047ff578156c795f9c83b3401a06dee6d5326 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +import java.util.List; + +import lombok.Builder; +import lombok.Getter; +import lombok.Singular; + +@Getter +@Builder +public class ServiceKonto { + + private String type; + @Singular + private List<PostfachAddress> postfachAddresses; + + @Getter + @Builder + public static class PostfachAddress { + private int type; + private String version; + private PostfachAddressIdentifier identifier; + } +} \ No newline at end of file diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java new file mode 100644 index 0000000000000000000000000000000000000000..fe9f4724587dff09734976adb600dd178e8d19ef --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/StringBasedIdentifier.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class StringBasedIdentifier implements PostfachAddressIdentifier { + + public static final String POSTFACH_ID_FIELD = "postfachId"; + + private String postfachId; + +} \ No newline at end of file diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigeStelle.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java similarity index 76% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigeStelle.java rename to common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java index ccb7e4f3e435ba2a44121be6fb0de0be7beb9bc4..65f8e2d3481fd3257fa1ddb9ef379341494d78fe 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigeStelle.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelle.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,18 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import lombok.Builder; import lombok.Getter; import lombok.ToString; @Getter -@Builder +@Builder(toBuilder = true) @ToString public class ZustaendigeStelle { private String organisationseinheitenId; private String bezeichnung; private String email; + private String gemeindeSchluessel; + private String amtlicherRegionalSchluessel; + private String hausanschriftStrasse; + private String hausanschriftPlz; + private String hausanschriftOrt; + private String telefon; } diff --git a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java new file mode 100644 index 0000000000000000000000000000000000000000..e370bd4aa240b56cce15a5316d7b80a1e8628482 --- /dev/null +++ b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.vorgang; + +import java.time.LocalDate; + +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.stereotype.Component; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import lombok.RequiredArgsConstructor; + +@Component +@RequiredArgsConstructor +public class VorgangNummerSupplier { + + static final String VORGANGNUMMER_TEMPLATE = "%d%X%02d-%s"; + static final char[] BASE30_ALPHABET = { '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', + 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z' }; + static final int SUFFIX_LENGTH = 6; + + public String get() { + return get(SUFFIX_LENGTH); + } + + public String get(int suffixLength) { + if (suffixLength <1){ + throw new TechnicalException("Suffix length must be at least 1"); + } + var today = LocalDate.now(); + var lastYearNumber = today.getYear() % 10; + return VORGANGNUMMER_TEMPLATE.formatted(lastYearNumber, today.getMonthValue(), today.getDayOfMonth(), + RandomStringUtils.random(suffixLength, BASE30_ALPHABET)); + } + +} diff --git a/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 0000000000000000000000000000000000000000..625980f8393f69927238961461f815b9fe835042 --- /dev/null +++ b/common/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,22 @@ +{"properties": [ + { + "name": "ozgcloud.xta.actions.status-list", + "type": "java.lang.String", + "description": "A description for 'ozgcloud.xta.actions.status-list'" + }, + { + "name": "ozgcloud.xta.identifier", + "type": "java.lang.String", + "description": "XTA Identifier for SOAP Request Header (f.e. 'gae:firstname.lastname@mgm-tp.com')" + }, + { + "name": "ozgcloud.xta.keystore.file", + "type": "java.lang.String", + "description": "Location of the keyfile for xta accesss" + }, + { + "name": "ozgcloud.xta.keystore.password", + "type": "java.lang.String", + "description": "Password of the keyfile for xta accesss" + } +]} \ No newline at end of file diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/EingangAdapterApplicationTest.java b/common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java similarity index 91% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/EingangAdapterApplicationTest.java rename to common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java index 17e8aab73c9baab569bc73504b79977d56d3e1d6..0eac02a2e68923ae93beefb40c27f88f31260098 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/EingangAdapterApplicationTest.java +++ b/common/src/test/java/de/ozgcloud/eingang/EingangAdapterApplicationTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter; +package de.ozgcloud.eingang; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/AntragstellerTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java similarity index 81% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/AntragstellerTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java index 25176afe87c00ce6ca2cc01bf68cf010a2c95c2d..aaf00701fe3a258422e89e104c49a8d721aaf167 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/AntragstellerTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.Map; import java.util.UUID; @@ -37,12 +37,16 @@ public class AntragstellerTestFactory { public static final String SUB_VERBOTENE_VEREINIGUNG_KEY = "MitgliedschaftInVerboternerVereinigung"; public static final String SUB_VERBOTENE_VEREINIGUNG_VALUE = "true"; - public static final String VORNAME = "Helge"; - public static final String NACHNAME = "Schneider"; - public static final String GEBURTSNAME = "Schneider"; + public static final String VORNAME = "Theo"; + public static final String NACHNAME = "Test"; + public static final String GEBURTSNAME = "Toast"; public static final String GEBURTSDATUM = "30.8.1955"; public static final String GEBURTSORT = "Mülheim an der Ruhr"; public static final String EMAIL = "schneider@helgeschneider.local"; + public static final String STRASSE = "Musterstraße"; + public static final String HAUSNUMMER = "1"; + public static final String PLZ = "12345"; + public static final String ORT = "Musterstadt"; public static final String TELEFON = "+ 0176 888 666 222XX"; public static final String POSTFACH_ID = UUID.randomUUID().toString(); @@ -60,6 +64,10 @@ public class AntragstellerTestFactory { .geburtsort(GEBURTSORT) .email(EMAIL) .telefon(TELEFON) + .strasse(STRASSE) + .hausnummer(HAUSNUMMER) + .plz(PLZ) + .ort(ORT) .postfachId(POSTFACH_ID) .data(Map.of(GEBIET_BEZEICHNUNG_KEY, GEBIET_BEZEICHNUNG_VALUE, SUB_PERSOENLICHE_EIGNUNG, diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java new file mode 100644 index 0000000000000000000000000000000000000000..cea434d5e5538484c9536be8769ef4356bb28218 --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/DeleteOnCloseInputStreamTest.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +import static org.assertj.core.api.Assertions.*; + +import java.io.File; +import java.io.IOException; + +import org.junit.jupiter.api.Test; + +import de.ozgcloud.common.errorhandling.TechnicalException; + +class DeleteOnCloseInputStreamTest { + + private DeleteOnCloseInputStream stream; + + @Test + void shouldDeleteFileOnClose() throws IOException { + File file = File.createTempFile("Test", "test"); + stream = new DeleteOnCloseInputStream(file); + + stream.close(); + + assertThat(file).doesNotExist(); + } + + @Test + void shouldThrowException() { + var notExists = new File("notExists"); + + assertThatThrownBy(() -> DeleteOnCloseInputStream.from(notExists)).isInstanceOf(TechnicalException.class); + } +} diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java similarity index 95% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java index 0b18735d8315a3155c9a0151687939f3f33fdd1d..ed7657c17340df1911b0a91d2e293ee49374b5af 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormDataTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormDataTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.Arrays; import java.util.Collections; @@ -59,7 +59,7 @@ public class FormDataTestFactory { return FormData.builder() .header(FormHeaderTestFactory.create()) .antragsteller(AntragstellerTestFactory.create()) - .zustaendigeStelle(ZustaendigsStelleTestFactory.create()) + .zustaendigeStelle(ZustaendigeStelleTestFactory.create()) .formData(Map.of( SIMPLE_VALUE_KEY, SIMPLE_VALUE, SUBFORM_KEY, SUBFORM_VALUE, diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeaderTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java similarity index 73% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeaderTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java index 1a6e77068082d435f5ba52957907c1881f8b11c2..4c55034bbe01ff2354d6f6386223248956a1f93b 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormHeaderTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,21 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.time.ZonedDateTime; public class FormHeaderTestFactory { public static final String CLIENT_ID = "clientId"; - public static final String CLIENT = "client"; +// public static final String CLIENT = "client"; public static final String CUSTOMER_ID = "customerId"; public static final String CUSTOMER = "customer"; public static final String SENDER = "sender"; + public static final String FORM_ENGINE_NAME = "TB3000"; public static final String FORM_NAME = "formName"; public static final String FORM_ID = "formId"; public static final String REQUEST_ID = "requestId"; - public static final ZonedDateTime CREATED_AT = ZonedDateTime.now(); + public static final String VORGANG_NUMMER = "ABCD-1234"; + public static final String CREATED_AT_STR = "2024-04-01T01:00:30Z"; + public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR); public static FormHeader create() { return createBuilder().build(); @@ -44,9 +47,13 @@ public class FormHeaderTestFactory { public static FormHeader.FormHeaderBuilder createBuilder() { return FormHeader.builder() .requestId(REQUEST_ID) + .vorgangNummer(VORGANG_NUMMER) .createdAt(CREATED_AT) + .formEngineName(FORM_ENGINE_NAME) .formId(FORM_ID) .formName(FORM_NAME) - .sender(SENDER); + .sender(SENDER) + .serviceKonto(ServiceKontoTestFactory.create()); } + } diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java similarity index 92% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java index f14139f0c99ecc8e93fe50487b3ac5ab9cdc3af0..848e5998bd3847abf86716244469c44d313ac238 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/FormSolutionsTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormSolutionsTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.List; @@ -41,11 +41,14 @@ public class FormSolutionsTestFactory { public static final String DATE_COMPONENT_ID = "Datums- / Uhrzeitfeld"; public static final String DATE_COMPONENT_VALUE = "22.05.1996"; public static final String ZIP_VALUE = "TG9yZW0gaXBzdW0="; + public static final String ZIP_VALUE_DECODED = "Lorem ipsum"; public static final String PDF_VALUE = "TG9yZW0gaXBzdW0="; + public static final String PDF_VALUE_DECODED = "Lorem ipsum"; public static final String ZUSTAENDIGE_STELLE_VALUE = "zustaendigeStelle"; + public static final String ZUSTAENDIGE_STELLE = "5678"; public static final String POSTFACH_ID_STELLE = "51522620-03d2-4507-b1f0-08d86920efed"; public static final String FORM_ID_VALUE = "KFAS_KOP_TEST-yCkgCdqG"; - // TODO vereinfachen und in Datei(en acken + // TODO vereinfachen und in Dateien packen public static final String SIMPLE_JSON_DATA = "{\"assistant\": " + "{\"identifier\":\"" + IDENTIFIER_VALUE + "\",\n" + "\"panels\": [{\"identifier\":\"" + PANEL_ID + "\",\n" diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroupTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java similarity index 93% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroupTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java index 51860a3bbd50d1180ec5ca2030d9f92b301a0124..338486c0bad637a251cf2918d48ddaee08190feb 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileGroupTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileGroupTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.List; diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d5dcd368db3d768206240b9038629eeab64b3866 --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTest.java @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +import static de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory.*; +import static org.assertj.core.api.Assertions.*; + +import java.io.File; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.function.Predicate; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import lombok.SneakyThrows; + +class IncomingFileTest { + + private static final String TMP_DIRECTORY_PATH = System.getProperty("java.io.tmpdir"); + + private static final Predicate<Path> hasNameSuffix = path -> path.getFileName().toString().endsWith(IncomingFile.TMP_FILE_SUFFIX); + + @Nested + class TestTmpFile { + + @BeforeEach + void init() { + cleanupTempFiles(); + } + + @Test + void shouldCreateTmpFile() { + IncomingFileTestFactory.create().getContentStream(); + + assertThat(noFilesWithSuffixInTempDirectory()).isFalse(); + } + + @Test + void shouldCreateDeleteOnCloseInputStream() { + var file = IncomingFileTestFactory.create(); + file.getContentStream(); + InputStream newStream = file.getContentStreamForFinalRead(); + + assertThat(newStream).isInstanceOf(DeleteOnCloseInputStream.class); + } + + @Test + void validateInputStreamContent() { + InputStream newStream = IncomingFileTestFactory.create().getContentStream(); + + byte[] text = read(newStream); + + assertThat(text).isEqualTo(CONTENT); + } + + @Test + void shouldReturnNewInputStreamOnEveryRequest() { + IncomingFile incomingFile = IncomingFileTestFactory.create(); + + InputStream stream1 = incomingFile.getContentStream(); + InputStream stream2 = incomingFile.getContentStream(); + + assertThat(stream1).isNotSameAs(stream2); + } + + @Test + void contentStreamShouldBeMultipleReadable() { + IncomingFile incomingFile = IncomingFileTestFactory.create(); + + InputStream stream1 = incomingFile.getContentStream(); + InputStream stream2 = incomingFile.getContentStream(); + + assertThat(read(stream1)).isEqualTo(CONTENT); + assertThat(read(stream2)).isEqualTo(CONTENT); + + InputStream stream3 = incomingFile.getContentStream(); + assertThat(read(stream3)).isEqualTo(CONTENT); + } + + @SneakyThrows + private byte[] read(InputStream stream) { + return stream.readAllBytes(); + } + } + + @SneakyThrows + private static void cleanupTempFiles() { + Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).filter(hasNameSuffix).map(Path::toFile).forEach(File::delete); + } + + @SneakyThrows + private static boolean noFilesWithSuffixInTempDirectory() { + return Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).noneMatch(hasNameSuffix); + } + +} diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java similarity index 59% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileTestFactory.java rename to common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java index ded6eb4bc97dacef2bc37134eb1453dfcd9b0c0d..0cd5394b3ce0243ab3f4f8cb82e9d011eebd572f 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFileTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/IncomingFileTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,18 +21,25 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.common.formdata; import java.util.UUID; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile.IncomingFileBuilder; +import org.springframework.http.MediaType; +import org.springframework.mock.web.MockMultipartFile; + +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile.IncomingFileBuilder; +import lombok.SneakyThrows; public class IncomingFileTestFactory { public static final String ID = UUID.randomUUID().toString(); - public static final String VENDOR_ID = UUID.randomUUID().toString(); + public static final String VENDOR_ID = IncomingFileGroupTestFactory.VENDOR_ID_XXX; public static final String NAME = "XML-Daten.xml"; public static final String CONTENT_TYPE = "application/xml"; + public static final String PDF_CONTENT_TYPE = MediaType.APPLICATION_PDF_VALUE; + public static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON_VALUE; public static final byte[] CONTENT = "TESTCONTENT1".getBytes(); public static final long SIZE = 12; @@ -46,7 +53,16 @@ public class IncomingFileTestFactory { .vendorId(VENDOR_ID) .name(NAME) .contentType(CONTENT_TYPE) - .content(CONTENT) + .file(TempFileUtils.writeTmpFile(CONTENT)) .size(SIZE); } + + public static MockMultipartFile asMultipartFile(String multipartName) { + return asMultipartFile(multipartName, create()); + } + + @SneakyThrows + public static MockMultipartFile asMultipartFile(String multipartName, IncomingFile file) { + return new MockMultipartFile(multipartName, file.getName(), file.getContentType(), file.getContentStream().readAllBytes()); + } } diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..1fb9cdf70afdf7e39387f7b45652bc6d170b11b4 --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/PostfachAddressTestFactory.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +import java.util.UUID; + +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; + +public class PostfachAddressTestFactory { + + public static final int POSTFACH_ADDRESS_TYPE = 1; + public static final String VERSION = "1.0"; + public static final String POSTFACH_ID = UUID.randomUUID().toString(); + + public static PostfachAddress create() { + return createBuilder().build(); + } + + private static PostfachAddress.PostfachAddressBuilder createBuilder() { + return PostfachAddress.builder() + .type(POSTFACH_ADDRESS_TYPE) + .version(VERSION) + .identifier(createStringBasedIdentifier()); + } + + private static PostfachAddressIdentifier createStringBasedIdentifier() { + return StringBasedIdentifier.builder().postfachId(POSTFACH_ID).build(); + } +} \ No newline at end of file diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..3cfdae3eb4c3cb4f679c94fe73c6d4c2cad51d29 --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ServiceKontoTestFactory.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +public class ServiceKontoTestFactory { + + public static final String TYPE = "OSI"; + + public static ServiceKonto create() { + return createBuilder().build(); + } + + private static ServiceKonto.ServiceKontoBuilder createBuilder() { + return ServiceKonto.builder() + .type(TYPE) + .postfachAddress(PostfachAddressTestFactory.create()); + } +} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..bef6ebf983add6ff677135f19e55c520f4099b06 --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/ZustaendigeStelleTestFactory.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.formdata; + +public class ZustaendigeStelleTestFactory { + + public static final String ORGANISATIONSEINHEIT_ID = "08150815"; + public static final String EMAIL = "hase@loewenkaefig.de"; + public static final String GEMEINDE_SCHLUESSEL = "1234567"; + public static final String AMTLICHER_REGIONAL_SCHLUESSEL = "regional-schluessel"; + public static final String HAUSANSCHRIFT_STRASSE = "Musterstraße"; + public static final String HAUSANSCHRIFT_PLZ = "12345"; + public static final String HAUSANSCHRIFT_ORT = "Musterort"; + public static final String TELEFON = "0123456789"; + + public static ZustaendigeStelle create() { + return createBuilder().build(); + } + + public static ZustaendigeStelle.ZustaendigeStelleBuilder createBuilder() { + return ZustaendigeStelle.builder() // + .organisationseinheitenId(ORGANISATIONSEINHEIT_ID) + .email(EMAIL) + .gemeindeSchluessel(GEMEINDE_SCHLUESSEL) + .amtlicherRegionalSchluessel(AMTLICHER_REGIONAL_SCHLUESSEL) + .hausanschriftStrasse(HAUSANSCHRIFT_STRASSE) + .hausanschriftPlz(HAUSANSCHRIFT_PLZ) + .hausanschriftOrt(HAUSANSCHRIFT_ORT) + .telefon(TELEFON); + } +} diff --git a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java new file mode 100644 index 0000000000000000000000000000000000000000..fd0d1d66458e536ec05fcdbd16d72c11d59c7bbf --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java @@ -0,0 +1,129 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.common.vorgang; + +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.time.LocalDate; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import de.ozgcloud.common.errorhandling.TechnicalException; + +class VorgangNummerSupplierTest { + + @Spy + @InjectMocks + private VorgangNummerSupplier vorgangNummerSupplier; + + + @Test + @DisplayName("should add random suffix of length 6") + void shouldAddSuffix() { + var result = vorgangNummerSupplier.get(); + + assertThat(getSuffix(result)).hasSize(VorgangNummerSupplier.SUFFIX_LENGTH); + } + + @Test + void shouldHaveSuffixSize() { + var result = vorgangNummerSupplier.get(3); + + assertThat(getSuffix(result)).hasSize(3); + } + + @DisplayName("should throw exception when") + @ParameterizedTest(name = "suffix length {0}") + @ValueSource(ints = { -1, 0 }) + void shouldThrowException(int suffixLength) { + assertThrows(TechnicalException.class, () -> vorgangNummerSupplier.get(suffixLength)); + } + + private String getSuffix(String string) { + return string.substring(string.indexOf('-') + 1); + } + + @Test + void shouldCallGetRandomString() { + try (var randomStringUtils = mockStatic(RandomStringUtils.class)) { + vorgangNummerSupplier.get(); + + randomStringUtils.verify(() -> RandomStringUtils.random(VorgangNummerSupplier.SUFFIX_LENGTH, VorgangNummerSupplier.BASE30_ALPHABET)); + } + } + + @Test + void shouldHaveSize() { + var result = vorgangNummerSupplier.get(); + + assertThat(getPrefix(result)).hasSize(5); + } + + private String getPrefix(String string) { + return string.substring(0, string.indexOf('-') + 1); + } + + @Test + void shouldAddLastYearNumberFirst() { + var lastYearNumber = "" + LocalDate.now().getYear() % 10; + + var result = vorgangNummerSupplier.get(); + + assertThat(result.substring(0, 1)).isEqualTo(lastYearNumber); + } + + @Test + void shouldAddMonthValueSecond() { + var monthHexValue = "%X".formatted(LocalDate.now().getMonthValue()); + + var result = vorgangNummerSupplier.get(); + + assertThat(result.substring(1, 2)).isEqualTo(monthHexValue); + } + + @Test + void shouldAddDayValueThird() { + var dayValue = "%02d".formatted(LocalDate.now().getDayOfMonth()); + + var result = vorgangNummerSupplier.get(); + + assertThat(result.substring(2, 4)).isEqualTo(dayValue); + } + + @Test + void shouldAddHyphenAtEnd() { + var result = vorgangNummerSupplier.get(); + + assertThat(result.charAt(4)).isEqualTo('-'); + } + +} \ No newline at end of file diff --git a/common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 0000000000000000000000000000000000000000..79b126e6cdb86bec1f4f08c205de8961bde1934a --- /dev/null +++ b/common/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/common/src/test/resources/application.yml b/common/src/test/resources/application.yml index 411f31f11786b11ef1a8272732f46fe799a6bba0..989f0be570f60d5d2644d872f41717bfb3eab932 100644 --- a/common/src/test/resources/application.yml +++ b/common/src/test/resources/application.yml @@ -10,7 +10,7 @@ logging: '[org.springframework]': ERROR config: classpath:log4j2-local.xml -kop: +ozgcloud: adapter: routingStrategy: SINGLE - targetPlutoName: kiel \ No newline at end of file + targetVorgangManagerName: kiel \ No newline at end of file diff --git a/common/src/test/resources/junit-platform.properties b/common/src/test/resources/junit-platform.properties new file mode 100644 index 0000000000000000000000000000000000000000..1cebb76d5a58ac034b2627d12411d82d1e85821e --- /dev/null +++ b/common/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 0000000000000000000000000000000000000000..ca6ee9cea8ec189a088d50559325d4e84ff8ad09 --- /dev/null +++ b/common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline \ No newline at end of file diff --git a/dependency-check-supressions.xml b/dependency-check-supressions.xml new file mode 100644 index 0000000000000000000000000000000000000000..5672f0a6b54bb0e17ee07b87db0a0157a2d79ee0 --- /dev/null +++ b/dependency-check-supressions.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd"> + <suppress> + <vulnerabilityName>CVE-DUMMY</vulnerabilityName> + </suppress> +</suppressions> diff --git a/enterprise-adapter/pom.xml b/enterprise-adapter/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..8ec2a3aac6c9ecafa18e906a1818b696df3c8886 --- /dev/null +++ b/enterprise-adapter/pom.xml @@ -0,0 +1,127 @@ +<?xml version="1.0"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> + </parent> + <artifactId>enterprise-adapter</artifactId> + <name>EM - Enterprise Interface Adapter</name> + + <properties> + <spring-boot.build-image.imageName>docker.ozg-sh.de/enterprise-adapter:build-latest</spring-boot.build-image.imageName> + </properties> + + <dependencies> + <!--ozg-Cloud--> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>common</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>semantik-adapter</artifactId> + </dependency> + + + <!--spring--> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + + + + <!--dev tools--> + <dependency> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct</artifactId> + </dependency> + + <!--test --> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>common</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>ci-build</id> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <executions> + <execution> + <id>build-image</id> + <phase> + install</phase> + <goals> + <goal>build-image</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java new file mode 100644 index 0000000000000000000000000000000000000000..d6dd911fec35efda92e67e83a0c3b96870347234 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryController.java @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import java.io.IOException; +import java.time.ZonedDateTime; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import de.ozgcloud.eingang.enterprise.entry.EntryResponse.ResponseVorgang; +import de.ozgcloud.eingang.semantik.SemantikAdapter; + +@Controller +@ResponseBody +@RequestMapping("antrag") +public class EntryController { + + private static final String STARTING_STATUS = "NEU"; + + @Autowired + private EntryDataMapper mapper; + + @Autowired + private SemantikAdapter semantikAdapter; + @Autowired + private VorgangNummerSupplier vorgangNummerSupplier; + + @ResponseStatus(HttpStatus.ACCEPTED) + @PostMapping(consumes = "multipart/form-data", produces = MediaType.APPLICATION_JSON_VALUE) + public EntryResponse receiveAntrag(@RequestPart Resource formData) throws IOException { + var mapped = mapper.mapEntryData(formData.getInputStream()); + mapped = addVorgangNummer(mapped); + + var vorgangId = semantikAdapter.processFormData(mapped); + + return buildResponse(mapped, vorgangId); + } + + private FormData addVorgangNummer(FormData formData) { + var header = formData.getHeader().toBuilder().vorgangNummer(vorgangNummerSupplier.get()).build(); + return formData.toBuilder().header(header).build(); + } + + EntryResponse buildResponse(FormData formData, String vorgangId) { + return EntryResponse.builder() + .transactionId(formData.getHeader().getRequestId()) + .vorgang(ResponseVorgang.builder() + .vorgangId(vorgangId) + .vorgangNummer(formData.getHeader().getVorgangNummer()) + .status(STARTING_STATUS) + .statusSince(ZonedDateTime.now().withNano(0)) + .build()) + .build(); + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java new file mode 100644 index 0000000000000000000000000000000000000000..723e56ccdb6a25d17cc067c8a0403973c02f43e2 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Builder; +import lombok.Getter; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Getter +@Jacksonized +public class EntryData { + + private ControlData control; + private List<EntryFormDataItem> formData; + + @Builder + @Getter + @Jacksonized + public static class ControlData { + private String transactionId; + private String zustaendigeStelle; + private String[] leikaIds; + private ResultEndpoint resultEndpoint; + private String formId; + @JsonProperty("name") + private String formName; + private Servicekonto serviceKonto; + + @Builder + @Getter + @Jacksonized + public static class ResultEndpoint { + private String address; + } + } + + @Builder + @Getter + @Jacksonized + public static class Servicekonto { + private String type; + private PostfachAddress postfachAddress; + } + + @Builder + @Getter + @Jacksonized + public static class PostfachAddress { + private String identifier; + private String type; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..06908ea51b66e590e3054d3b9562783f7f030203 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapper.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import java.io.IOException; +import java.io.InputStream; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +class EntryDataMapper { + + @Autowired + private ObjectMapper objectMapper; + @Autowired + private FormDataMapper formDataMapper; + + public FormData mapEntryData(InputStream request) { + return formDataMapper.mapEntryData(readRequest(request)); + } + + EntryData readRequest(InputStream request) { + try { + return objectMapper.readValue(request, EntryData.class); + } catch (IOException e) { + throw new ReadingRequestException(e); + } + + } + +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java new file mode 100644 index 0000000000000000000000000000000000000000..606080a6ffaca1e38721b2422ddf9b7029b54702 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataField.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import java.time.LocalDate; +import java.util.Objects; + +import org.apache.commons.lang3.StringUtils; + +import lombok.Builder; +import lombok.Getter; +import lombok.ToString; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Getter +@Jacksonized +@ToString(onlyExplicitlyIncluded = true) +public class EntryFormDataField implements EntryFormDataItem { + + private String name; + @ToString.Include + private String label; + + private String stringValue; + private Boolean booleanValue; + private Number numberValue; + private LocalDate dateValue; + + @Override + public boolean isFormField() { + return true; + } + + public Object getValue() { + if (StringUtils.isNotBlank(stringValue)) { + return stringValue; + } + if (Objects.nonNull(booleanValue)) { + return booleanValue; + } + if (Objects.nonNull(numberValue)) { + return numberValue; + } + if (Objects.nonNull(dateValue)) { + return dateValue; + } + return null; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java new file mode 100644 index 0000000000000000000000000000000000000000..af733a5f3bd3a2ec9a1812c6746009d08cff9055 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataItem.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonSubTypes.Type; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; + +@JsonTypeInfo(use = Id.DEDUCTION) +@JsonSubTypes({ @Type(EntryFormDataField.class), @Type(EntryFormDataSubForm.class) }) +public interface EntryFormDataItem { + String getName(); + String getLabel(); + + default boolean isSubForm() { + return false; + } + + default boolean isFormField() { + return false; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java new file mode 100644 index 0000000000000000000000000000000000000000..52d53c887bf502eaf522580dbd47248121778dc3 --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataSubForm.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import java.util.List; + +import lombok.Builder; +import lombok.Getter; +import lombok.Singular; +import lombok.ToString; +import lombok.extern.jackson.Jacksonized; + +@Builder +@Getter +@Jacksonized +@ToString(onlyExplicitlyIncluded = true) +public class EntryFormDataSubForm implements EntryFormDataItem { + + private String name; + @ToString.Include + private String label; + + @Singular + private List<EntryFormDataItem> formItems; + + @Override + public boolean isSubForm() { + return true; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..68c639a5714b21f42ec06321c5731f3b456c75ae --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryResponse.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import java.time.ZonedDateTime; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +class EntryResponse { + + private String transactionId; + private ResponseVorgang vorgang; + + @Builder + @Getter + static class ResponseVorgang { + private String vorgangId; + private String vorgangNummer; + private String status; + private ZonedDateTime statusSince; + } +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..4d09ebf0178f2282a4608772413e6cf025c8412d --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.tuple.Pair; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; + +@Mapper +public interface FormDataMapper { + + public static final String VALUE_KEY = "value"; + public static final String LABEL_KEY = "label"; + + @Mapping(target = "antragsteller", ignore = true) + @Mapping(target = "attachment", ignore = true) + @Mapping(target = "attachments", ignore = true) + @Mapping(target = "numberOfAttachments", ignore = true) + @Mapping(target = "representation", ignore = true) + @Mapping(target = "representations", ignore = true) + @Mapping(target = "numberOfRepresentations", ignore = true) + + @Mapping(target = "id", ignore = true) + @Mapping(target = "header", source = "control") + + @Mapping(target = "zustaendigeStelle", source = "control.zustaendigeStelle") + FormData mapEntryData(EntryData entryData); + + @Mapping(target = "vorgangNummer", ignore = true) + @Mapping(target = "createdAt", ignore = true) + @Mapping(target = "formEngineName", constant = "EnterpriseSoftware") + @Mapping(target = "requestId", source = "transactionId") + @Mapping(target = "sender", ignore = true) // TODO fill from authentication + @Mapping(target = "serviceKonto.postfachAddresses", ignore = true) + FormHeader mapHeader(EntryData.ControlData controlData); + + default ZustaendigeStelle fromId(String organisationsEinheitenId) { + return ZustaendigeStelle.builder().organisationseinheitenId(organisationsEinheitenId).build(); + } + + default Map<String, Object> mapFormItems(List<EntryFormDataItem> items) { + return items.stream().map(item -> Pair.of(item.getName(), + item.isFormField() ? mapFormField((EntryFormDataField) item) : mapSubForm((EntryFormDataSubForm) item))) + .collect(Collectors.toMap(Pair::getKey, Pair::getValue)); + } + + default Map<String, Object> mapFormField(EntryFormDataField field) { + var map = new HashMap<String, Object>(); + map.put(LABEL_KEY, field.getLabel()); + map.put(VALUE_KEY, field.getValue()); + + return Collections.unmodifiableMap(map); + } + + default Map<String, Object> mapSubForm(EntryFormDataSubForm subForm) { + var map = new HashMap<String, Object>(); + map.put(LABEL_KEY, subForm.getLabel()); + map.put(VALUE_KEY, mapFormItems(subForm.getFormItems())); + + return Collections.unmodifiableMap(map); + } + + default PostfachAddress map(de.ozgcloud.eingang.enterprise.entry.EntryData.PostfachAddress address) { + return PostfachAddress.builder() + .version("1") + .type(toNumericType(address.getType())) + .identifier(StringBasedIdentifier.builder().postfachId(address.getIdentifier()).build()) + .build(); + } + + default int toNumericType(String type) { + switch (type) { + case "privat": + return 0; + case "unternehmen": + return 1; + case "behoerde": + return 2; + default: + return -1; + } + } + + default PostfachAddressIdentifier map(String value) { + return StringBasedIdentifier.builder().postfachId(value).build(); + } + +} diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java new file mode 100644 index 0000000000000000000000000000000000000000..35ab200801f13ffbb3baa8e18f789190f67c1e8a --- /dev/null +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/ReadingRequestException.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import de.ozgcloud.common.errorhandling.TechnicalException; + +public class ReadingRequestException extends TechnicalException { + + private static final String MESSAGE = "Error reading Request."; + + public ReadingRequestException(Exception cause) { + super(MESSAGE, cause); + + } + +} diff --git a/enterprise-adapter/src/main/resources/application-local.yml b/enterprise-adapter/src/main/resources/application-local.yml new file mode 100644 index 0000000000000000000000000000000000000000..df74b44c618294d9436a965e64d4ed14821403e2 --- /dev/null +++ b/enterprise-adapter/src/main/resources/application-local.yml @@ -0,0 +1,24 @@ +logging: + config: classpath:log4j2-local.xml + +server: + port: 9294 + error: + include-stacktrace: always + +management: + server: + port: 0 + endpoints: + enabled-by-default: false + +ozgcloud: + adapter: + targetVorgangManagerName: local + fallbackStrategy: DENY + +grpc: + client: + vorgang-manager-local: + address: static://127.0.0.1:9090 + negotiationType: PLAINTEXT \ No newline at end of file diff --git a/enterprise-adapter/src/main/resources/application.yml b/enterprise-adapter/src/main/resources/application.yml new file mode 100644 index 0000000000000000000000000000000000000000..57600862f169f8faff3f60ffb7721c13dddc9a2e --- /dev/null +++ b/enterprise-adapter/src/main/resources/application.yml @@ -0,0 +1,44 @@ +logging: + level: + ROOT: WARN + '[de.ozgcloud]': INFO + +spring: + servlet: + multipart: + max-file-size: 124MB + max-request-size: 256MB + file-size-threshold: 10MB + +server: + http2: + enabled: true + error: + include-stacktrace: never + +management: + server: + port: 8081 + health: + livenessState: + enabled: true + readinessState: + enabled: true + endpoint: + health: + group: + exploratory: + include: livenessState,readinessState,ping + show-details: always + probes: + enabled: true + prometheus: + enabled: true + endpoints: + web: + exposure: + include: health,prometheus + +ozgcloud: + adapter: + routingStrategy: SINGLE \ No newline at end of file diff --git a/enterprise-adapter/src/main/resources/log4j2-local.xml b/enterprise-adapter/src/main/resources/log4j2-local.xml new file mode 100644 index 0000000000000000000000000000000000000000..5d7001e1f9186d197a2d301d3910c9d73ed05d15 --- /dev/null +++ b/enterprise-adapter/src/main/resources/log4j2-local.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <Appenders> + <Console name="CONSOLE" target="SYSTEM_OUT"> + <PatternLayout pattern="[%-5level] %c{1.} %msg%n"/> + </Console> + </Appenders> + + <Loggers> + <Root level="WARN"> + <appender-ref ref="CONSOLE" /> + </Root> + </Loggers> +</configuration> \ No newline at end of file diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..18ad8d7c57592c98cfe7a64beec128e511463a95 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import de.ozgcloud.eingang.enterprise.entry.EntryData.ControlData; +import de.ozgcloud.eingang.enterprise.entry.EntryData.ControlData.ResultEndpoint; + +public class ControlDataTestFactory { + + public static final String TRANSACTION_ID = "4e7a6ae7-4d0f-444d-8971-7cfc051c9924"; + public static final String ZUSTAENDIGE_STELLE = "248240886"; + public static final String[] LEIKA_IDS = new String[] { "99108011000000", "99108011153000" }; + + public static final String RESULT_ENDPOIN_ADDRESS = "https://idalabs.de/backend/api"; + + public static final String FORM_ID = "KFAS_LIVE_KI_10_Haltverbot_befristet"; + public static final String NAME = "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)"; + + public static ControlData create() { + return createBuilder().build(); + } + + public static ControlData.ControlDataBuilder createBuilder() { + return ControlData.builder() + .transactionId(TRANSACTION_ID) + .zustaendigeStelle(ZUSTAENDIGE_STELLE) + .leikaIds(LEIKA_IDS) + .resultEndpoint(ResultEndpoint.builder().address(RESULT_ENDPOIN_ADDRESS).build()) + .formId(FORM_ID) + .formName(NAME) + .serviceKonto(ServicekontoTestFactory.create()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..81b8e0a52a788fdda9a780c8d29f20770a60d67b --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EnterpriseEntryITCase.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; + +import de.ozgcloud.common.test.ITCase; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.router.VorgangService; +import lombok.SneakyThrows; + +@ITCase +@AutoConfigureMockMvc +@ActiveProfiles({ "itcase", "local" }) +class EnterpriseEntryITCase { + + @MockBean + private VorgangService vorgangService; + + @Autowired + private MockMvc mockMvc; + + @Test + void shouldCallVorgangService() { + doPostRequest(); + + verify(vorgangService).createVorgang(any()); + } + + @SneakyThrows + private ResultActions doPostRequest() { + return mockMvc.perform(multipart("/antrag") + .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/simple.json").getBytes()))) + .andExpect(status().is2xxSuccessful()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f2fb905a153c75ff11d289fd15ff22b480a2131c --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryControllerTest.java @@ -0,0 +1,161 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import java.io.InputStream; + +import org.apache.commons.io.IOUtils; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.springframework.core.io.Resource; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import lombok.SneakyThrows; + +class EntryControllerTest { + + @Spy + @InjectMocks + private EntryController controller; + + @Mock + private EntryDataMapper mapper; + @Mock + private SemantikAdapter semantikAdapter; + @Mock + private VorgangNummerSupplier vorgangNummerSupplier; + + private MockMvc mockMvc; + + @BeforeEach + void init() { + mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); + } + + @Nested + class ReceiveAntrag { + + private final FormHeader header = FormHeaderTestFactory.createBuilder().vorgangNummer(null).build(); + private final FormData formData = FormDataTestFactory.createBuilder().header(header).build(); + + @Captor + private ArgumentCaptor<InputStream> streamCaptor; + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + + private final EntryResponse response = EntryResponseTestFactory.create(); + + @BeforeEach + void init() { + when(mapper.mapEntryData(any())).thenReturn(formData); + doReturn(response).when(controller).buildResponse(any(), any()); + when(vorgangNummerSupplier.get()).thenReturn(FormHeaderTestFactory.VORGANG_NUMMER); + } + + @Test + @SneakyThrows + void shouldReturnAccepted() { + doPostRequest().andExpect(status().isAccepted()); + } + + @Test + @SneakyThrows + void shouldCallMapper() { + var request = TestUtils.loadTextFile("request/simple.json"); + + doPostRequest(); + + verify(mapper).mapEntryData(streamCaptor.capture()); + var inputBytes = IOUtils.readFully(streamCaptor.getValue(), request.getBytes().length); + assertThat(inputBytes).hasSameSizeAs(request.getBytes()).isEqualTo(request.getBytes()); + } + + @Test + void shouldCallSemantikAdapter() { + doPostRequest(); + + verify(semantikAdapter).processFormData(notNull()); + } + + @Test + void shouldSetVorgangNummer() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getHeader().getVorgangNummer()).isEqualTo(FormHeaderTestFactory.VORGANG_NUMMER); + } + + @Test + @SneakyThrows + void shouldReturnResponse() { + var response = controller.receiveAntrag(mock(Resource.class)); + + assertThat(response).isSameAs(this.response); + } + + @SneakyThrows + private ResultActions doPostRequest() { + return mockMvc.perform(multipart("/antrag") + .file(new MockMultipartFile("formData", TestUtils.loadTextFile("request/simple.json").getBytes()))) + .andExpect(status().is2xxSuccessful()); + } + } + + @Nested + class BuildResponse { + + @Test + @SneakyThrows + void shouldCreateResponse() { + var response = controller.buildResponse(FormDataTestFactory.create(), ResponseVorgangTestFactory.VORGANG_ID); + + assertThat(response).usingRecursiveComparison() + .ignoringFields("vorgang.statusSince") + .isEqualTo(EntryResponseTestFactory.create()); + } + } + +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9f1da0ed4ce91e8aedc9625aaa75ce98c281f699 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataMapperTest.java @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.io.InputStream; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.Spy; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import lombok.SneakyThrows; + +class EntryDataMapperTest { + + @Spy + @InjectMocks + private EntryDataMapper mapper; + @Mock + private FormDataMapper formDataMapper; + + @Spy + private ObjectMapper objectMapper = new ObjectMapper() + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true) + .registerModule(new JavaTimeModule()); + + @Nested + class TestMappingEntryData { + + private InputStream jsonInput = TestUtils.loadFile("request/simple.json"); + + @Nested + class TestReadRequest { + @Test + void shouldReadJson() { + var read = mapper.readRequest(jsonInput); + + assertThat(read).usingRecursiveComparison().isEqualTo(EntryDataTestFactory.create()); + } + } + + @Test + void shouldReadRequest() { + mapper.mapEntryData(jsonInput); + + verify(mapper).readRequest(jsonInput); + } + + @Test + @SneakyThrows + void shouldCallFormDataMapper() { + var entryData = EntryDataTestFactory.create(); + doReturn(entryData).when(objectMapper).readValue(any(InputStream.class), Mockito.<Class<EntryData>>any()); + + mapper.mapEntryData(jsonInput); + + verify(formDataMapper).mapEntryData(entryData); + } + + @Test + void shouldReturnMappedResult() { + FormData formData = FormDataTestFactory.create(); + when(formDataMapper.mapEntryData(any())).thenReturn(formData); + + var result = mapper.mapEntryData(jsonInput); + + assertThat(result).isSameAs(formData); + } + } + +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..78474702f6cf550b67fe382295f794a36ce07412 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryDataTestFactory.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +public class EntryDataTestFactory { + + public static EntryData create() { + return createBuilder().build(); + } + + public static EntryData.EntryDataBuilder createBuilder() { + return EntryData.builder() + .control(ControlDataTestFactory.create()) + .formData(EntryFormDataTestFactory.create()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..3123c33debb773a1522edc73386a10a0ca8b7004 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryFormDataTestFactory.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import static de.ozgcloud.eingang.enterprise.entry.FormDataMapper.*; + +import java.time.LocalDate; +import java.util.List; +import java.util.Map; + +public class EntryFormDataTestFactory { + + public static final String FORM_FIELD_NAME = "field_name"; + public static final String FORM_FIELD_VALUE = "field_string_value"; + public static final String FORM_FIELD_LABEL = "field_label"; + + public static final String SUB_FORM_NAME = "antragsteller"; + public static final String SUB_FORM_LABEL = "Antragstellende Person"; + + public static final String SUB_FORM_STRING_FIELD_NAME = "lastname"; + public static final String SUB_FORM_STRING_FIELD_LABEL = "Nachname"; + public static final String SUB_FORM_STRING_FIELD_VALUE = "Täst"; + + public static final String SUB_FORM_NUMBER_FIELD_NAME = "age"; + public static final String SUB_FORM_NUMBER_FIELD_LABEL = "Alter"; + public static final Number SUB_FORM_NUMBER_FIELD_VALUE = 5.5; + + public static final String SUB_FORM_DATE_FIELD_NAME = "birthday"; + public static final String SUB_FORM_DATE_FIELD_LABEL = "Geburtsdatum"; + public static final LocalDate SUB_FORM_DATE_FIELD_VALUE = LocalDate.parse("2017-05-01"); + + public static final String SUB_FORM_BOOLEAN_FIELD_NAME = "geprüft"; + public static final String SUB_FORM_BOOLEAN_FIELD_LABEL = "Geprüft"; + public static final Boolean SUB_FORM_BOOLEAN_FIELD_VALUE = true; + + public static List<EntryFormDataItem> create() { + return List.of( + EntryFormDataField.builder().name(FORM_FIELD_NAME).label(FORM_FIELD_LABEL).stringValue(FORM_FIELD_VALUE).build(), + EntryFormDataSubForm.builder().name(SUB_FORM_NAME).label(SUB_FORM_LABEL) + .formItem(EntryFormDataField.builder() + .name(SUB_FORM_STRING_FIELD_NAME) + .label(SUB_FORM_STRING_FIELD_LABEL) + .stringValue(SUB_FORM_STRING_FIELD_VALUE) + .build()) + .formItem(EntryFormDataField.builder() + .name(SUB_FORM_NUMBER_FIELD_NAME) + .label(SUB_FORM_NUMBER_FIELD_LABEL) + .numberValue(SUB_FORM_NUMBER_FIELD_VALUE) + .build()) + .formItem(EntryFormDataField.builder() + .name(SUB_FORM_DATE_FIELD_NAME) + .label(SUB_FORM_DATE_FIELD_LABEL) + .dateValue(SUB_FORM_DATE_FIELD_VALUE) + .build()) + .formItem(EntryFormDataField.builder() + .name(SUB_FORM_BOOLEAN_FIELD_NAME) + .label(SUB_FORM_BOOLEAN_FIELD_LABEL) + .booleanValue(SUB_FORM_BOOLEAN_FIELD_VALUE) + .build()) + .build()); + } + + public static Map<String, Object> createAsFormDataMap() { + return Map.of( + FORM_FIELD_NAME, Map.of(LABEL_KEY, FORM_FIELD_LABEL, VALUE_KEY, FORM_FIELD_VALUE), + SUB_FORM_NAME, Map.of(LABEL_KEY, SUB_FORM_LABEL, VALUE_KEY, Map.of( + SUB_FORM_STRING_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_STRING_FIELD_LABEL, VALUE_KEY, SUB_FORM_STRING_FIELD_VALUE), + SUB_FORM_NUMBER_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_NUMBER_FIELD_LABEL, VALUE_KEY, SUB_FORM_NUMBER_FIELD_VALUE), + SUB_FORM_DATE_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_DATE_FIELD_LABEL, VALUE_KEY, SUB_FORM_DATE_FIELD_VALUE), + SUB_FORM_BOOLEAN_FIELD_NAME, Map.of(LABEL_KEY, SUB_FORM_BOOLEAN_FIELD_LABEL, VALUE_KEY, SUB_FORM_BOOLEAN_FIELD_VALUE)))); + } +} diff --git a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigsStelleTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java similarity index 64% rename from common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigsStelleTestFactory.java rename to enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java index eb492cb88ddb024c4f6c4dd9b520113561a3360a..f99a3177f6ce2c1ba47b742bf7aac2395ae1bd45 100644 --- a/common/src/test/java/de/itvsh/kop/eingangsadapter/common/formdata/ZustaendigsStelleTestFactory.java +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/EntryResponseTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,20 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.enterprise.entry; -public class ZustaendigsStelleTestFactory { +import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; - public static final String ORGANISATIONSEINHEIT_ID = "08150815"; - public static final String EMAIL = "hase@loewenkaefig.de"; +class EntryResponseTestFactory { - public static ZustaendigeStelle create() { + static final EntryResponse create() { return createBuilder().build(); } - public static ZustaendigeStelle.ZustaendigeStelleBuilder createBuilder() { - return ZustaendigeStelle.builder() // - .organisationseinheitenId(ORGANISATIONSEINHEIT_ID) - .email(EMAIL); + static final EntryResponse.EntryResponseBuilder createBuilder() { + return EntryResponse.builder() + .transactionId(FormHeaderTestFactory.REQUEST_ID) + .vorgang(ResponseVorgangTestFactory.create()); } } diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4076a2b9bdbb3fe865ed5bae28ec46f9942b1943 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapperTest.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; +import org.mockito.InjectMocks; + +class FormDataMapperTest { + + @InjectMocks + private FormDataMapper mapper = Mappers.getMapper(FormDataMapper.class); + + @Nested + class TestMapFormItems { + + @Test + void shouldMapFormItems() { + var mapped = mapper.mapFormItems(EntryFormDataTestFactory.create()); + + assertThat(mapped).usingRecursiveComparison().isEqualTo(EntryFormDataTestFactory.createAsFormDataMap()); + } + } + +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..36d8474157c9cb480c384ac0fb60b10c1b02b364 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ResponseVorgangTestFactory.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import java.time.ZonedDateTime; +import java.util.UUID; + +import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; +import de.ozgcloud.eingang.enterprise.entry.EntryResponse.ResponseVorgang; + +public class ResponseVorgangTestFactory { + + final static String VORGANG_ID = UUID.randomUUID().toString(); + + static ResponseVorgang create() { + return createBuilder().build(); + } + + static ResponseVorgang.ResponseVorgangBuilder createBuilder() { + return ResponseVorgang.builder() + .vorgangId(VORGANG_ID) + .vorgangNummer(FormHeaderTestFactory.VORGANG_NUMMER) + .status("NEU") + .statusSince(ZonedDateTime.now()); + } +} diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..2adf11a58d4cae4373c3bc7a5a00549348ee3def --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.enterprise.entry; + +import de.ozgcloud.eingang.enterprise.entry.EntryData.PostfachAddress; +import de.ozgcloud.eingang.enterprise.entry.EntryData.Servicekonto; + +public class ServicekontoTestFactory { + + private static final String TYPE = "OSI"; + private static final String IDENTIFIER = "76f1ae54-1cf1-4ae1-c0b4-08d950d6cfc0"; + private static final String POSTFACH_TYPE = "privat"; + + public static Servicekonto create() { + return createBuilder().build(); + } + + public static Servicekonto.ServicekontoBuilder createBuilder() { + return Servicekonto.builder() + .type(TYPE) + .postfachAddress(PostfachAddress.builder() + .identifier(IDENTIFIER) + .type(POSTFACH_TYPE) + .build()); + + } +} diff --git a/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 0000000000000000000000000000000000000000..79b126e6cdb86bec1f4f08c205de8961bde1934a --- /dev/null +++ b/enterprise-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/junit-platform.properties b/enterprise-adapter/src/test/resources/junit-platform.properties new file mode 100644 index 0000000000000000000000000000000000000000..1cebb76d5a58ac034b2627d12411d82d1e85821e --- /dev/null +++ b/enterprise-adapter/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/enterprise-adapter/src/test/resources/request/simple.json b/enterprise-adapter/src/test/resources/request/simple.json new file mode 100644 index 0000000000000000000000000000000000000000..11bd6e9cdb3d6cf7429b7239ca28ac3fb4ffe0bf --- /dev/null +++ b/enterprise-adapter/src/test/resources/request/simple.json @@ -0,0 +1,52 @@ +{ + "control": { + "transactionId": "4e7a6ae7-4d0f-444d-8971-7cfc051c9924", + "zustaendigeStelle": "248240886", + "leikaIds": [ + "99108011000000", + "99108011153000" + ], + "resultEndpoint": { + "address": "https://idalabs.de/backend/api" + }, + "formId": "KFAS_LIVE_KI_10_Haltverbot_befristet", + "name": "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)", + "serviceKonto": { + "type": "OSI", + "postfachAddress": { + "identifier": "76f1ae54-1cf1-4ae1-c0b4-08d950d6cfc0", + "type": "privat" + } + } + }, + "formData": [ + { + "name": "field_name", + "label": "field_label", + "stringValue": "field_string_value" + }, + { + "name": "antragsteller", + "label": "Antragstellende Person", + "formItems": [ + { + "name": "lastname", + "label": "Nachname", + "stringValue": "Täst" + }, { + "name": "age", + "label": "Alter", + "numberValue": 5.5 + }, { + "name": "birthday", + "label": "Geburtsdatum", + "dateValue": "2017-05-01" + }, { + "name": "geprüft", + "label": "Geprüft", + "booleanValue": true + } + ] + } + ] +} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/pom.xml b/formcycle-adapter/formcycle-adapter-impl/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..f4eabb02d90d027e086a03e269cce8fa24cf069b --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/pom.xml @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>formcycle-adapter</artifactId> + <version>2.4.0</version> + <relativePath>../</relativePath> + </parent> + + <artifactId>formcycle-adapter-impl</artifactId> + <name>EM - Formcycle Adapter - Implementation</name> + + <properties> + <formcycle-interface.version>${project.version}</formcycle-interface.version> + <jsoup.version>1.17.2</jsoup.version> + </properties> + + <dependencies> + <!--own project--> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>formcycle-adapter-interface</artifactId> + <version>${formcycle-interface.version}</version> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>semantik-adapter</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>common</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + + <!--spring--> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + + <dependency> + <groupId>org.jsoup</groupId> + <artifactId>jsoup</artifactId> + <version>${jsoup.version}</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>ci-build</id> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <executions> + <execution> + <id>build-image</id> + <phase>install</phase> + <goals> + <goal>build-image</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..db49521f89f623b0339dd864adf922a724bdc413 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapper.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; + +@Mapper(uses = GrpcFormDataMapper.class) +public interface FormCycleFormDataMapper { + + @Mapping(target = "antragsteller", ignore = true) + @Mapping(target = "attachment", ignore = true) + @Mapping(target = "attachments", ignore = true) + @Mapping(target = "id", ignore = true) + @Mapping(target = "numberOfAttachments", ignore = true) + @Mapping(target = "numberOfRepresentations", ignore = true) + @Mapping(target = "representation", ignore = true) + @Mapping(target = "representations", ignore = true) + @Mapping(target = "zustaendigeStelle.organisationseinheitenId", source = "header.organisationsEinheitId") + @Mapping(target = "header.formEngineName", constant = "FormCycle") + @Mapping(target = "header.createdAt", source = "header.receivedAt") + FormData toFormData(FormCycleFormData fcFormData); +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java new file mode 100644 index 0000000000000000000000000000000000000000..a025626bec6557c6b1a6401002ad61345ee95e8a --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataController.java @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import java.io.IOException; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.UUID; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Controller +@ResponseBody +@RequestMapping("formData") +@RequiredArgsConstructor +class FormDataController { + + public static final String HTTP_TYPE_PROTOBUF = "application/x-protobuf"; + + private final FormCycleFormDataMapper mapper; + private final SemantikAdapter semantikAdapter; + private final VorgangNummerSupplier vorgangNummerSupplier; + private final FormDataHtmlCleaner formDataHtmlCleaner; + + @PostMapping(consumes = "multipart/form-data", produces = HTTP_TYPE_PROTOBUF) + public FormCycleConfirmationResponse receiveFormData(@RequestPart FormCycleFormData formData, + @RequestPart(required = false) Optional<Collection<MultipartFile>> representations, + @RequestPart(required = false) Optional<Collection<MultipartFile>> attachments) { + + FormData mappedFormData = mapper.toFormData(formData); + mappedFormData = formDataHtmlCleaner.clean(mappedFormData); + mappedFormData = addRepresentations(representations, mappedFormData); + mappedFormData = addFiles(formData, attachments, mappedFormData); + mappedFormData = addServiceKonto(formData, mappedFormData); + mappedFormData = addVorgangNummer(mappedFormData); + + semantikAdapter.processFormData(mappedFormData); + + return FormCycleConfirmationResponse.newBuilder().setVorgangNummer(mappedFormData.getHeader().getRequestId()).build(); + } + + private FormData addVorgangNummer(FormData mappedFormData) { + var formDataHeader = mappedFormData.getHeader().toBuilder().requestId(vorgangNummerSupplier.get()).build(); + return mappedFormData.toBuilder().header(formDataHeader).build(); + } + + private FormData addRepresentations(Optional<Collection<MultipartFile>> files, FormData mappedFormData) { + Collection<IncomingFile> representations = buildIncomingFiles(files); + return mappedFormData.toBuilder().representations(representations).numberOfRepresentations(representations.size()).build(); + } + + private Collection<IncomingFile> buildIncomingFiles(Optional<Collection<MultipartFile>> files) { + return files.orElseGet(Collections::emptyList).stream().map(this::buildIncomingFile).toList(); + } + + private FormData addFiles(FormCycleFormData inFormData, Optional<Collection<MultipartFile>> attachments, FormData mappedFormData) { + var groups = new AttachmentGroupsBuilder(inFormData.getAttachmentGroupList(), attachments).buildGroups(); + + return mappedFormData.toBuilder().attachments(groups).numberOfAttachments(FilesMapperHelper.countAttachedFiles(groups)).build(); + } + + private IncomingFile buildIncomingFile(MultipartFile multipartFile) { + try { + return IncomingFile.builder() + .id(UUID.randomUUID().toString()) + .name(multipartFile.getOriginalFilename()) + .size(multipartFile.getSize()) + .contentType(multipartFile.getContentType()) + .file(TempFileUtils.writeTmpFile(multipartFile.getInputStream())) + .build(); + } catch (IOException e) { + throw new TechnicalException("Error reading incoming file", e); + } + } + + class AttachmentGroupsBuilder { + + private final Collection<FormCycleAttachmentGroup> attachmentGroups; + private final Map<String, IncomingFile> nameToFile = new HashMap<>(); + + public AttachmentGroupsBuilder(Collection<FormCycleAttachmentGroup> attachmentGroups, Optional<Collection<MultipartFile>> attachmentFiles) { + this.attachmentGroups = attachmentGroups; + + attachmentFiles.ifPresent(files -> files.stream().map(FormDataController.this::buildIncomingFile) + .forEach(file -> nameToFile.put(file.getName(), file))); + } + + public Collection<IncomingFileGroup> buildGroups() { + return attachmentGroups.stream().map(this::buildGroup).toList(); + } + + IncomingFileGroup buildGroup(FormCycleAttachmentGroup group) { + var groupBuilder = IncomingFileGroup.builder().name(group.getName()); + + group.getFileIdList().stream().map(this::getFile) + .filter(Optional::isPresent).map(Optional::get) + .forEach(groupBuilder::file); + + return groupBuilder.build(); + } + + Optional<IncomingFile> getFile(String name) { + var file = nameToFile.get(name); + + if (Objects.isNull(file)) { + LOG.warn("Cannot find Attachment-File with name '{}'.", name); + return Optional.empty(); + } + return Optional.of(file); + } + } + + FormData addServiceKonto(FormCycleFormData formData, FormData mappedFormData) { + if (formData.hasServiceKonto()) { + mappedFormData.getHeader().setServiceKonto(buildServiceKonto(formData.getServiceKonto())); + } + return mappedFormData; + } + + ServiceKonto buildServiceKonto(FormCycleServiceKonto formCycleServiceKonto) { + return ServiceKonto.builder() + .type(formCycleServiceKonto.getType()) + .postfachAddress(buildPostfachAddress(formCycleServiceKonto)) + .build(); + } + + PostfachAddress buildPostfachAddress(FormCycleServiceKonto formCycleServiceKonto) { + if (!formCycleServiceKonto.hasAddress()) { + return null; + } + var address = formCycleServiceKonto.getAddress(); + return PostfachAddress.builder().identifier(buildPostfachId(address.getIdentifier())).version(address.getVersion()).build(); + } + + private StringBasedIdentifier buildPostfachId(String identifier) { + return StringBasedIdentifier.builder().postfachId(identifier).build(); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java new file mode 100644 index 0000000000000000000000000000000000000000..40adca2e6e8357244226cd053e28fe5831770fc3 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleaner.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import java.util.Collection; +import java.util.Map; +import java.util.stream.Collectors; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.safety.Safelist; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +public class FormDataHtmlCleaner { + + public FormData clean(FormData formData) { + return formData.toBuilder().formData(cleanFormData(formData.getFormData())).build(); + } + + Map<String, Object> cleanFormData(Map<String, Object> formData) { + return formData.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, entry -> cleanValue(entry.getValue()))); + } + + @SuppressWarnings("unchecked") + Object cleanValue(Object value) { + if (value instanceof Map) { + return cleanFormData((Map<String, Object>) value); + } else if (value instanceof Collection<?> values) { + return values.stream().map(this::cleanValue).toList(); + } else if (value instanceof String valueString) { + return parseHtml(valueString); + } + return value; + } + + Object parseHtml(String html) { + var jsoupDocument = Jsoup.parse(html); + var outputSettings = new Document.OutputSettings(); // keep new lines + outputSettings.prettyPrint(false); + jsoupDocument.outputSettings(outputSettings); + var innerHtml = jsoupDocument.html().replace("\\\\n", "\n"); + return Jsoup.clean(innerHtml, "", Safelist.none(), outputSettings); + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java new file mode 100644 index 0000000000000000000000000000000000000000..0ee13a5001659853e6c1cc1f27d9a1778079cfca --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplication.java @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.TimeZone; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.http.MediaType; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; + +import de.ozgcloud.eingang.formcycle.common.errorhandling.FormcycleExceptionHandler; +import de.ozgcloud.eingang.formcycle.common.protobuf.CustomProtobufHttpMessageConverter; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.formcycle.FormCycleEngineBasedAdapter; + +@SpringBootApplication(scanBasePackages = { "de.ozgcloud" }) +public class FormcycleAdapterApplication { + + public static void main(String[] args) { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + SpringApplication.run(FormcycleAdapterApplication.class, args); + } + + @Bean + EngineBasedSemantikAdapter engineBasedAdapter() { + return new FormCycleEngineBasedAdapter(); + } + + @Bean + ProtobufHttpMessageConverter protobufMessageConverter() { + return addCustomProtobufMediaType(new CustomProtobufHttpMessageConverter()); + } + + @Deprecated(forRemoval = true, since = "2.1.0") + // FIXME: Remove this method after all customers have updated ozg-cloud plugin to version 1.4.0 or higher + private ProtobufHttpMessageConverter addCustomProtobufMediaType(ProtobufHttpMessageConverter protobufHttpMessageConverter) { + var supportetMediaTypes = new ArrayList<>(protobufHttpMessageConverter.getSupportedMediaTypes()); + supportetMediaTypes.add(new MediaType("application", "protobuf", StandardCharsets.UTF_8)); + protobufHttpMessageConverter.setSupportedMediaTypes(supportetMediaTypes); + return protobufHttpMessageConverter; + } + + @Bean + FormcycleExceptionHandler restResposeEntityExceptionHandler() { + return new FormcycleExceptionHandler(); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..d57b05e8824a5e4dbd087bd77ce3bbd35dbbc96b --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandler.java @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle.common.errorhandling; + +import java.util.UUID; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; + +import de.ozgcloud.common.errorhandling.ExceptionUtil; +import de.ozgcloud.common.errorhandling.TechnicalException; +import io.grpc.StatusRuntimeException; +import lombok.extern.log4j.Log4j2; + +@ControllerAdvice +@Log4j2 +public class FormcycleExceptionHandler extends ResponseEntityExceptionHandler { + + static final String TECHNICAL_EXCEPTION_MESSAGE = "Cannot process request."; + static final String CREATE_VORGANG_EXCEPTION_MESSAGE = "Cannot create vorgang."; + static final String UNEXPECTED_EXCEPTION_MESSAGE = "An unexpected error occurred."; + + private static final String EXCEPTION_ID_TEMPLATE = "(ExceptionId:"; + + @ExceptionHandler({ TechnicalException.class }) + public ResponseEntity<InternalExceptionDto> handleTechnicalException(TechnicalException e, WebRequest request) { + LOG.error(TECHNICAL_EXCEPTION_MESSAGE, e); + return buildResponseEntity(TECHNICAL_EXCEPTION_MESSAGE, e.getExceptionId()); + } + + @ExceptionHandler({ StatusRuntimeException.class }) + public ResponseEntity<InternalExceptionDto> handleStatusRuntimeException(StatusRuntimeException e, WebRequest request) { + var logMessage = TECHNICAL_EXCEPTION_MESSAGE; + var exceptionId = getExceptionId(e.getMessage()); + if (!hasExceptionId(e.getMessage())) { + logMessage = ExceptionUtil.formatMessageWithExceptionId(CREATE_VORGANG_EXCEPTION_MESSAGE, exceptionId); + } + LOG.error(logMessage, e); + return buildResponseEntity(CREATE_VORGANG_EXCEPTION_MESSAGE, exceptionId); + } + + boolean hasExceptionId(String message) { + return message.contains(EXCEPTION_ID_TEMPLATE); + } + + String getExceptionId(String message) { + try { + return message.substring(message.indexOf(EXCEPTION_ID_TEMPLATE) + 14, message.indexOf(")")); + } catch (IndexOutOfBoundsException e) { + return createExceptionId(); + } + } + + @ExceptionHandler({ RuntimeException.class }) + public ResponseEntity<InternalExceptionDto> handleUnexpectedException(RuntimeException e, WebRequest request) { + var exceptionId = createExceptionId(); + var messageWithExceptionId = ExceptionUtil.formatMessageWithExceptionId(UNEXPECTED_EXCEPTION_MESSAGE, exceptionId); + LOG.error(messageWithExceptionId, e); + return buildResponseEntity(UNEXPECTED_EXCEPTION_MESSAGE, exceptionId); + } + + String createExceptionId() { + return UUID.randomUUID().toString(); + } + + ResponseEntity<InternalExceptionDto> buildResponseEntity(String message, String exceptionId) { + return ResponseEntity.internalServerError().body(buildInternalExceptionDto(message, exceptionId)); + } + + InternalExceptionDto buildInternalExceptionDto(String message, String exceptionId) { + return InternalExceptionDto.builder().message(message).exceptionId(exceptionId).build(); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java new file mode 100644 index 0000000000000000000000000000000000000000..7c85d71060f16963295a0a04274ec232ff076e6d --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDto.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle.common.errorhandling; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +public class InternalExceptionDto { + + private String exceptionId; + private String message; +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..4fa33faae1a5bd6188e1d8cd1729fdfb96e46ed3 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/java/de/ozgcloud/eingang/formcycle/common/protobuf/CustomProtobufHttpMessageConverter.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle.common.protobuf; + +import java.io.IOException; + +import org.springframework.http.HttpInputMessage; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; + +import com.google.protobuf.Message; + +@Deprecated(forRemoval = true, since = "2.1.0") +// FIXME: Remove this class after all customers have updated ozg-cloud plugin to version 1.4.0 or higher +public class CustomProtobufHttpMessageConverter extends ProtobufHttpMessageConverter { + + @Override + protected Message readInternal(Class<? extends Message> clazz, HttpInputMessage inputMessage) throws IOException { + inputMessage.getHeaders().setContentType(ProtobufHttpMessageConverter.PROTOBUF); + return super.readInternal(clazz, inputMessage); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml new file mode 100644 index 0000000000000000000000000000000000000000..1a493ac915649ada101d24a2374ca06690101907 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application-local.yml @@ -0,0 +1,21 @@ +logging: + config: classpath:log4j2-local.xml + +server: + port: 9293 + error: + include-stacktrace: always + +management: + server.port: 8084 + +ozgcloud: + adapter: + targetVorgangManagerName: local + fallbackStrategy: DENY + +grpc: + client: + vorgang-manager-local: + address: static://127.0.0.1:9090 + negotiationType: PLAINTEXT diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml new file mode 100644 index 0000000000000000000000000000000000000000..fc501824af18517fcbd7eab7f3d7ad33cf08ff7e --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/application.yml @@ -0,0 +1,46 @@ +logging: + level: + ROOT: WARN + '[de.ozgcloud]': INFO + +spring: + profiles: + include: formcycle + servlet: + multipart: + max-file-size: 124MB + max-request-size: 256MB + file-size-threshold: 10MB + +server: + http2: + enabled: true + error: + include-stacktrace: never + +management: + server: + port: 8081 + health: + livenessState: + enabled: true + readinessState: + enabled: true + endpoint: + health: + group: + exploratory: + include: livenessState,readinessState,ping + show-details: always + probes: + enabled: true + prometheus: + enabled: true + endpoints: + web: + exposure: + include: health,prometheus + +ozgcloud: + adapter: + routingStrategy: SINGLE \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt new file mode 100644 index 0000000000000000000000000000000000000000..b3aff18646e90346d8b8f41f395afef037986afc --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/main/resources/banner.txt @@ -0,0 +1,6 @@ + _____ ___ ____ __ __ ______ ______ _ _____ +| ___/ _ \| _ \| \/ |/ ___\ \ / / ___| | | ____| +| |_ | | | | |_) | |\/| | | \ V / | | | | _| +| _|| |_| | _ <| | | | |___ | || |___| |___| |___ +|_| \___/|_| \_\_| |_|\____| |_| \____|_____|_____| +${spring-boot.version} ${application.version} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..a061bd9d406e35fd6b118e05e6d9e656832337d1 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleAttachmentGroupTestFactory.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; + +public class FormCycleAttachmentGroupTestFactory { + + static FormCycleAttachmentGroup create() { + return createBuilder().build(); + } + + static FormCycleAttachmentGroup.Builder createBuilder() { + return FormCycleAttachmentGroup.newBuilder() + .setName(IncomingFileGroupTestFactory.NAME) + .addFileId(IncomingFileTestFactory.NAME); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..61d1a48e50492c0c59d97b35d359ff09b18d49da --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataMapperTest.java @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; + +class FormCycleFormDataMapperTest { + + @InjectMocks + private FormCycleFormDataMapper mapper = Mappers.getMapper(FormCycleFormDataMapper.class); + + @Spy + private GrpcFormDataMapper formDataMapper = Mappers.getMapper(GrpcFormDataMapper.class); + + @Nested + class TestToFormData { + + @Test + void shouldMapHeader() { + var mapped = mapper.toFormData(FormCycleFormDataTestFactory.create()); + + assertThat(mapped.getHeader()).isNotNull(); + } + + @Test + void shouldMapZustaendigeStelle() { + var mapped = mapper.toFormData(FormCycleFormDataTestFactory.create()); + + assertThat(mapped.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(FormCycleFormHeaderTestFactory.ORGANISATIONSEINHEIT_ID); + } + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..c9349cbe9a44f8d88160fb09361a7c761ebca021 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormDataTestFactory.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.formcycle.FormCycleFormData.Builder; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcFormData; + +class FormCycleFormDataTestFactory { + + static FormCycleFormData create() { + return createBuilder().build(); + } + + static Builder createBuilder() { + return FormCycleFormData.newBuilder() + .setHeader(FormCycleFormHeaderTestFactory.create()) + .setServiceKonto(FormCycleServiceKontoTestFactory.create()) + .setFormData(GrpcFormDataTestFactory.create()) + .addAttachmentGroup(FormCycleAttachmentGroup.newBuilder() + .setName(IncomingFileGroupTestFactory.NAME) + .addFileId(IncomingFileGroupTestFactory.VENDOR_ID_XXX) + .build()); + } + + static FormCycleFormData withFormData(GrpcFormData formData) { + return createBuilder().clearFormData().setFormData(formData).build(); + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..15511d37514d42c7bf0f7859e3ffbaf6a7485742 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleFormHeaderTestFactory.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import de.ozgcloud.eingang.formcycle.FormCycleFormHeader.Builder; + +public class FormCycleFormHeaderTestFactory { + + static final String RECEIVED_AT = "2022-12-24T18:00:00Z"; + static final String FORM_NAME = "test form 1"; + static final String ORGANISATIONSEINHEIT_ID = "9030229"; + + static FormCycleFormHeader create() { + return createBuilder().build(); + } + + static Builder createBuilder() { + return FormCycleFormHeader.newBuilder() + .setFormName(FORM_NAME) + .setReceivedAt(RECEIVED_AT) + .setOrganisationsEinheitId(ORGANISATIONSEINHEIT_ID); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..3b6817d9a89757cdc6c00a8c00c6d3d615e087d4 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCyclePostfachAddressTestFactory.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import java.util.UUID; + +import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.formcycle.FormCyclePostfachAddress.Builder; + +public class FormCyclePostfachAddressTestFactory { + + public static final String POSTKORB_ID = UUID.randomUUID().toString(); + public static final String VERSION = PostfachAddressTestFactory.VERSION; + + static FormCyclePostfachAddress create() { + return createBuilder().build(); + } + + static Builder createBuilder() { + return FormCyclePostfachAddress.newBuilder() + .setIdentifier(POSTKORB_ID) + .setVersion(VERSION); + } +} diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java similarity index 61% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java rename to formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java index 5639a6000256bcbffa897c137be62ac6323a033b..6edadb1f1b1f21cd22f220c53866943c6c44cfaf 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFileMapper.java +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormCycleServiceKontoTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,21 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formcycle; import java.util.UUID; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; +import de.ozgcloud.eingang.formcycle.FormCycleServiceKonto.Builder; -interface FormSolutionsFileMapper { - // TODO auf utils Klasse umstellen - interface abschaffen - default IncomingFile mapFile(byte[] data, String contentType, String fileName) { - return IncomingFile.builder() - .content(data) - .contentType(contentType) - .size(data.length) - .name(fileName) - .id(UUID.randomUUID().toString()) - .build(); +public class FormCycleServiceKontoTestFactory { + + public static final FormCyclePostfachAddress ADDRESS = FormCyclePostfachAddressTestFactory.create(); + public static final String TYPE = UUID.randomUUID().toString(); + + static FormCycleServiceKonto create() { + return createBuilder().build(); + } + + static Builder createBuilder() { + return FormCycleServiceKonto.newBuilder() + .setAddress(ADDRESS) + .setType(TYPE); } -} \ No newline at end of file +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..96716483dae2f9440265732392e41672e6d8c071 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerITCase.java @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import static de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; + +import de.ozgcloud.common.test.ITCase; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcFormField; +import de.ozgcloud.vorgang.vorgang.GrpcSubForm; +import lombok.SneakyThrows; + +@ITCase +//@SpringBootTest(properties = { +// "grpc.client.vorgang-manager-local.address=static://127.0.0.1:9090", +// "grpc.client.vorgang-manager-local.negotiationType=PLAINTEXT" +//}) +//@ActiveProfiles("itcase") +@AutoConfigureMockMvc +class FormDataControllerITCase { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private SemantikAdapter semantikAdapter; + + @Nested + class ReceiveFormData { + + @Test + @SneakyThrows + void shouldProcessSuccessful() { + doPostRequest().andExpect(status().isOk()); + } + + @SneakyThrows + private ResultActions doPostRequest() { + return mockMvc.perform( + multipart("/formData") + .file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData())) + .file(IncomingFileTestFactory.asMultipartFile("representations")) + .file(asMultipartFile("attachments", + createBuilder().name(IncomingFileGroupTestFactory.VENDOR_ID_XXX + "__" + NAME).build()))); + } + } + + private byte[] buildTestFormData() { + return FormDataControllerTest.buildTestFormData(FormCycleFormDataTestFactory.withFormData( + GrpcFormDataTestFactory.createBuilder() + .addField(GrpcFormField.newBuilder().setName("firstname").setLabel("Vorname").setValue("Theo").build()) + .addField(GrpcFormField.newBuilder().setName("lastname").setLabel("Nachname").setValue("Test").build()) + .addField(GrpcFormField.newBuilder().setName("Street").setLabel("Straße").setValue("Hwy 5").build()) + .addForm(GrpcSubForm.newBuilder() + .setTitle("Address").setLabel("Adresse") + .addField(GrpcFormField.newBuilder().setName("firstname").setLabel("Vorname").setValue("Theo").build()) + .addField(GrpcFormField.newBuilder().setName("lastname").setLabel("Nachname").setValue("Test").build()) + .addField(GrpcFormField.newBuilder().setName("street").setLabel("Straße").setValue("Hwy 5").build()) + .build()) + .build())); + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..efbaa1a952c1a5503aef50cfa5757f2c7ff1f61f --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataControllerTest.java @@ -0,0 +1,367 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import static de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import java.io.ByteArrayOutputStream; +import java.util.Collections; +import java.util.Optional; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import lombok.SneakyThrows; + +class FormDataControllerTest { + + @Spy + @InjectMocks + private FormDataController controller; + + @Mock + private FormCycleFormDataMapper mapper; + @Mock + private SemantikAdapter semantikAdapter; + @Mock + private VorgangNummerSupplier vorgangNummerSupplier; + @Mock + private FormDataHtmlCleaner htmlCleaner; + + private MockMvc mockMvc; + + @BeforeEach + void init() { + mockMvc = MockMvcBuilders.standaloneSetup(controller) + .setMessageConverters(new ProtobufHttpMessageConverter()) + .build(); + } + + @Nested + class ReceiveFormData { + + static final String VORGANG_NUMMER = "VorgangNummer"; + + private FormData mappedFormData = FormDataTestFactory.create(); + + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + + @BeforeEach + void init() { + when(htmlCleaner.clean(any())).thenReturn(mappedFormData); + when(mapper.toFormData(any())).thenReturn(mappedFormData); + when(vorgangNummerSupplier.get()).thenReturn(VORGANG_NUMMER); + } + + @Test + void shouldReturnSuccess() throws Exception { + doPostRequest().andExpect(status().is2xxSuccessful()); + } + + @Test + void shouldCallVorgangNummerSupplier() { + doPostRequest(); + + verify(vorgangNummerSupplier).get(); + } + + @Test + @SneakyThrows + void shouldResponseWithVorgangNummer() { + + var confirmation = FormCycleConfirmationResponse.parseFrom( + doPostRequest().andReturn().getResponse().getContentAsByteArray()); + + assertThat(confirmation.getVorgangNummer()).isEqualTo(VORGANG_NUMMER); + } + + @Test + void shouldSetVorgangNummer() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getHeader().getRequestId()).isEqualTo(VORGANG_NUMMER); + } + + @Test + void shouldCallHtmlCleaner() { + doPostRequest(); + + verify(htmlCleaner).clean(any()); + } + + @Test + void shouldCallMapper() { + doPostRequest(); + + verify(mapper).toFormData(notNull()); + } + + @Test + void shouldCallSemantikAdapter() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue()).usingRecursiveComparison() + .ignoringFields("representations", "attachments", "numberOfAttachments", "header.requestId") + .isEqualTo(mappedFormData); + } + + @Test + void shouldMapPostkorbId() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(getPostfachIdFormData(formDataCaptor.getValue())).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID); + } + + @Nested + class Representations { + + @BeforeEach + void init() { + var formData = FormDataTestFactory.createBuilder().clearRepresentations().numberOfRepresentations(0).build(); + when(mapper.toFormData(any())).thenReturn(formData); + when(htmlCleaner.clean(any())).thenReturn(formData); + } + + @Test + void shouldBePresent() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + var formData = formDataCaptor.getValue(); + assertThat(formData.getRepresentations()).hasSize(1); + assertThat(formData.getNumberOfRepresentations()).isEqualTo(1); + } + + @Test + void shouldBeFilled() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getRepresentations()).first().usingRecursiveComparison() + .ignoringFields("id", "vendorId", "file") + .isEqualTo(IncomingFileTestFactory.create()); + } + + @Test + @SneakyThrows + void shouldBeFineWithoutRepresentations() { + mockMvc.perform( + multipart("/formData") + .file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData()))) + .andExpect(status().isOk()); + } + } + + @Nested + class Attachments { + @BeforeEach + void init() { + var formData = FormDataTestFactory.createBuilder().clearAttachments().numberOfAttachments(0).build(); + when(mapper.toFormData(any())).thenReturn(formData); + when(htmlCleaner.clean(any())).thenReturn(formData); + } + + @Test + void shouldHaveGroup() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getAttachments()).hasSize(1); + } + + @Test + void shouldSetNumberOfAttachments() { + doPostRequest(); + + verify(semantikAdapter).processFormData(formDataCaptor.capture()); + assertThat(formDataCaptor.getValue().getNumberOfAttachments()).isEqualTo(1); + } + + } + + @SneakyThrows + private ResultActions doPostRequest() { + return mockMvc.perform( + multipart("/formData") + .file(new MockMultipartFile("formData", null, FormDataController.HTTP_TYPE_PROTOBUF, buildTestFormData())) + .file(IncomingFileTestFactory.asMultipartFile("representations")) + .file(asMultipartFile("attachments", + createBuilder().name(IncomingFileGroupTestFactory.VENDOR_ID_XXX).build()))); + } + } + + @SneakyThrows + static byte[] buildTestFormData() { + return buildTestFormData(FormCycleFormDataTestFactory.create()); + } + + @SneakyThrows + static byte[] buildTestFormData(FormCycleFormData formData) { + var out = new ByteArrayOutputStream(); + formData.writeTo(out); + return out.toByteArray(); + } + + @Nested + class TestAttachmentGroupsBuilder { + + private FormDataController.AttachmentGroupsBuilder groupsBuilder; + + @BeforeEach + void init() { + groupsBuilder = controller.new AttachmentGroupsBuilder( + Collections.singleton(FormCycleAttachmentGroupTestFactory.create()), + Optional.of(Collections.singleton(IncomingFileTestFactory.asMultipartFile(NAME)))); + } + + @Nested + class TestBuildGroup { + @Test + void shouldSetName() { + var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.create()); + + assertThat(group.getName()).isEqualTo(IncomingFileGroupTestFactory.NAME); + } + + @Test + void shouldHaveFile() { + var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.create()); + + assertThat(group.getFiles()).hasSize(1).first() + .usingRecursiveComparison().ignoringFields("id", "vendorId", "file") + .isEqualTo(IncomingFileTestFactory.create()); + } + + @Test + void shouldBeFineWithoutFile() { + var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.createBuilder().clearFileId().build()); + + assertThat(group.getFiles()).isEmpty(); + } + + @Test + void shouldBeFineWithMissingFile() { + var group = groupsBuilder.buildGroup(FormCycleAttachmentGroupTestFactory.createBuilder().clearFileId().addFileId("missing").build()); + + assertThat(group.getFiles()).isEmpty(); + } + } + } + + @Nested + class TestServiceKontoMapping { + + @Test + void shouldMapServiceKontoType() { + var formData = controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader()); + + assertThat(getServiceKontoType(formData)).isEqualTo(FormCycleServiceKontoTestFactory.TYPE); + } + + @Test + void shouldNotMapEmptyServiceKonto() { + controller.addServiceKonto(FormCycleFormData.newBuilder().build(), buildEmptyFormDataWithHeader()); + + verify(controller, never()).buildServiceKonto(any()); + } + + String getServiceKontoType(FormData formData) { + return formData.getHeader().getServiceKonto().getType(); + } + + @Nested + class TestPostkorbIdMapping { + + @Test + void shouldMapPostkorbId() { + var formData = controller.addServiceKonto(FormCycleFormDataTestFactory.create(), buildEmptyFormDataWithHeader()); + + assertThat(getPostfachIdFormData(formData)).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID); + } + + @Test + void shouldNotMapEmptyPostkorbId() { + var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKonto.newBuilder().build()); + + assertThat(postfachAddress).isNull(); + } + + @Test + void shouldMapPostfachIdentifier() { + var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKontoTestFactory.create()); + + assertThat(getIdentifier(postfachAddress)).isEqualTo(FormCyclePostfachAddressTestFactory.POSTKORB_ID); + } + + private String getIdentifier(PostfachAddress postfachAddress) { + return ((StringBasedIdentifier) postfachAddress.getIdentifier()).getPostfachId(); + } + + @Test + void shouldMapPostfachAddressVersion() { + var postfachAddress = controller.buildPostfachAddress(FormCycleServiceKontoTestFactory.create()); + + assertThat(postfachAddress.getVersion()).isEqualTo(FormCyclePostfachAddressTestFactory.VERSION); + } + } + + private FormData buildEmptyFormDataWithHeader() { + return FormData.builder().header(FormHeader.builder().build()).build(); + } + } + + private String getPostfachIdFormData(FormData formData) { + return ((StringBasedIdentifier) formData.getHeader().getServiceKonto().getPostfachAddresses() + .get(0).getIdentifier()).getPostfachId(); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..eb36609bd40f1108331570eb4d5ba55f56f7b6e5 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormDataHtmlCleanerTest.java @@ -0,0 +1,229 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.util.List; +import java.util.Map; + +import org.assertj.core.data.MapEntry; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormData; + +class FormDataHtmlCleanerTest { + + private static final String KEY = "key"; + private static final Object VALUE = "value"; + + @Spy + @InjectMocks + private FormDataHtmlCleaner cleaner; + + @Nested + class TestClean { + + private final static Map<String, Object> FORM_DATA_MAP = Map.of(KEY, VALUE); + private final static FormData FORM_DATA = FormData.builder().formData(FORM_DATA_MAP).build(); + + @Test + void shouldCallCleanFormData() { + cleaner.clean(FORM_DATA); + + verify(cleaner).cleanFormData(FORM_DATA_MAP); + } + + @Test + void shouldSetCleanedFormData() { + var cleanedFormData = Map.of(KEY, VALUE); + doReturn(cleanedFormData).when(cleaner).cleanFormData(anyMap()); + + var result = cleaner.clean(FORM_DATA); + + assertThat(result.getFormData()).isSameAs(cleanedFormData); + } + } + + @Nested + class TestCleanFormData { + + @Test + void shouldCallCleanValue() { + cleaner.cleanFormData(Map.of(KEY, VALUE)); + + verify(cleaner).cleanValue(VALUE); + } + + @Test + void shouldReturnCleanedMap() { + var cleanedValue = "noHtml"; + doReturn(cleanedValue).when(cleaner).cleanValue(any()); + + var result = cleaner.cleanFormData(Map.of(KEY, VALUE)); + + assertThat(result).containsOnly(MapEntry.entry(KEY, cleanedValue)); + } + } + + @Nested + class TestCleanValue { + + @Nested + class TestCleanMap { + + @Test + void shouldCallCleanFormData() { + var expectedMap = Map.of(KEY, VALUE); + + cleaner.cleanValue(expectedMap); + + verify(cleaner).cleanFormData(expectedMap); + } + + @Test + void shouldReturnValue() { + var expectedMap = Map.of(KEY, VALUE); + doReturn(expectedMap).when(cleaner).cleanFormData(anyMap()); + + var result = cleaner.cleanValue(Map.of("a", "b")); + + assertThat(result).isSameAs(expectedMap); + } + } + + @Nested + class TestCleanCollection { + + @Test + void shouldCallCleanValue() { + cleaner.cleanValue(List.of(VALUE)); + + verify(cleaner).cleanValue(VALUE); + } + + @Test + void shouldReturnValue() { + doReturn(List.of(VALUE)).when(cleaner).cleanValue(any()); + + var result = cleaner.cleanValue(List.of("a")); + + assertThat(result).isInstanceOf(List.class).asList().containsExactly(VALUE); + } + } + + @Nested + class TestCleanString { + + @Test + void shouldCallParseHtml() { + var stringValue = VALUE.toString(); + + cleaner.cleanValue(VALUE); + + verify(cleaner).parseHtml(stringValue); + } + + @Test + void shouldReturnValue() { + var cleanedValue = "noHtml"; + doReturn(cleanedValue).when(cleaner).parseHtml(anyString()); + + var result = cleaner.cleanValue(VALUE); + + assertThat(result).isEqualTo(cleanedValue); + } + } + + @Test + void shouldReturnUnmodifiedValue() { + var value = 1; + + var result = cleaner.cleanValue(value); + + assertThat(result).isEqualTo(1); + verify(cleaner, never()).parseHtml(any()); + } + } + + @Nested + class TestHtmlCleaner { + + static final String KEY_LABEL = "label"; + static final String KEY_VALUE = "value"; + + static final Map<String, Object> FORM_DATA_MAP = Map.of("tf1", Map.of( + KEY_LABEL, "<p><em>Ä</em></p>", + KEY_VALUE, "Ä - Wert"), + "tf2", Map.of( + KEY_LABEL, "<p><strong>Ö</strong></p>", + KEY_VALUE, "Ö - Wert"), + "fs1", Map.of( + KEY_LABEL, "Ü", + KEY_VALUE, Map.of( + "tf3", Map.of( + KEY_LABEL, " <p><s>Label mit</s> ß</p>", + KEY_VALUE, "ein Text mit ß und <html><body><h1>Hello</h1><body><html>")), + "tf4", Map.of( + KEY_LABEL, "<p><span style=\"background-color:#1abc9c;\">ä</span></p>", + KEY_VALUE, "Text"), + "ed1", Map.of( + KEY_LABEL, + "<ol>\n\t<li><em><strong><u>ö</u></strong></em></li>\n\t<li><span style=\"color:#e74c3c;\">ü</span></li>\n</ol>", + KEY_VALUE, "TExt\nmit\n Leerzeichen\nund\n Umbrüchen" + ))); + + static final Map<String, Object> EXPECTED_MAP = Map.of("tf1", Map.of( + KEY_LABEL, "Ä", + KEY_VALUE, "Ä - Wert"), + "tf2", Map.of( + KEY_LABEL, "Ö", + KEY_VALUE, "Ö - Wert"), + "fs1", Map.of( + KEY_LABEL, "Ü", + KEY_VALUE, Map.of( + "tf3", Map.of( + KEY_LABEL, "Label mit ß", + KEY_VALUE, "ein Text mit ß und Hello")), + "tf4", Map.of( + KEY_LABEL, "ä", + KEY_VALUE, "Text"), + "ed1", Map.of( + KEY_LABEL, + "\n\tö\n\tü\n", + KEY_VALUE, "TExt\nmit\n Leerzeichen\nund\n Umbrüchen" + ))); + + @Test + void shouldCleanHtml() { + var result = cleaner.clean(FormData.builder().formData(FORM_DATA_MAP).build()); + + assertThat(result.getFormData()).isEqualTo(EXPECTED_MAP); + } + } +} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..827acad4bd8450a2740b24574765a606fa3548fb --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/FormcycleAdapterApplicationTest.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle; + +import org.junit.jupiter.api.Test; + +import de.ozgcloud.common.test.ITCase; + +@ITCase +class FormcycleAdapterApplicationTest { + + @Test + void shouldStartApplication() { // NOSONAR + // just start without an error + } + +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..86ef732d7143d5ee299271897738f0201b2a088d --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/FormcycleExceptionHandlerTest.java @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle.common.errorhandling; + +import static de.ozgcloud.eingang.formcycle.common.errorhandling.InternalExceptionDtoTestFactory.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +import de.ozgcloud.common.errorhandling.ExceptionUtil; +import de.ozgcloud.common.errorhandling.TechnicalException; +import io.grpc.StatusRuntimeException; + +class FormcycleExceptionHandlerTest { + + @Spy + @InjectMocks + private FormcycleExceptionHandler exceptionHandler; + + @Nested + class TestHandleTechnicalException { + + @Mock + private TechnicalException technicalException; + + @Test + void shouldCallBuildResponseEntity() { + when(technicalException.getExceptionId()).thenReturn(EXCEPTION_ID); + + exceptionHandler.handleTechnicalException(technicalException, null); + + verify(exceptionHandler).buildResponseEntity(FormcycleExceptionHandler.TECHNICAL_EXCEPTION_MESSAGE, EXCEPTION_ID); + } + + } + + @Nested + class TestHandleStatusRuntimeException { + + @Mock + private StatusRuntimeException statusRuntimeException; + + @Test + void shouldCallBuildResponseEntity() { + when(statusRuntimeException.getStackTrace()).thenReturn(new StackTraceElement[0]); + when(statusRuntimeException.getMessage()).thenReturn(ExceptionUtil.formatMessageWithExceptionId(MESSAGE, EXCEPTION_ID)); + + exceptionHandler.handleStatusRuntimeException(statusRuntimeException, null); + + verify(exceptionHandler).buildResponseEntity(FormcycleExceptionHandler.CREATE_VORGANG_EXCEPTION_MESSAGE, EXCEPTION_ID); + } + + @Nested + class TestGetExceptionId { + + @Test + void shouldReturnExceptionIdFromMessage() { + var exceptionId = exceptionHandler.getExceptionId(messageWithExceptionId()); + + assertThat(exceptionId).isEqualTo(EXCEPTION_ID); + } + + @Test + void shouldCreateNewExceptionId() { + var exceptionId = exceptionHandler.getExceptionId(MESSAGE); + + assertThat(exceptionId).isNotEqualTo(EXCEPTION_ID); + } + + } + + } + + @Nested + class TestBuildResponseEntity { + + @Test + void shouldReturnInternaServerError() { + var response = buildResponseEntity(); + + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR); + } + + @Test + void shouldCallBuildInternalExceptionDto() { + buildResponseEntity(); + + verify(exceptionHandler).buildInternalExceptionDto(InternalExceptionDtoTestFactory.MESSAGE, EXCEPTION_ID); + } + + private ResponseEntity<InternalExceptionDto> buildResponseEntity() { + return exceptionHandler.buildResponseEntity(InternalExceptionDtoTestFactory.MESSAGE, EXCEPTION_ID); + } + + } + + @Nested + class TestBuildInternalExceptionDto { + + @Test + void shouldSetExceptionId() { + var response = buildInternalExceptionDto(); + + assertThat(response.getExceptionId()).isEqualTo(EXCEPTION_ID); + } + + @Test + void shouldSetMessage() { + var response = buildInternalExceptionDto(); + + assertThat(response.getMessage()).isEqualTo(InternalExceptionDtoTestFactory.MESSAGE); + } + + private InternalExceptionDto buildInternalExceptionDto() { + return exceptionHandler.buildInternalExceptionDto(InternalExceptionDtoTestFactory.MESSAGE, EXCEPTION_ID); + } + + } +} \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..a2063e0953d6ce46932dd300c0fde4126a5e2351 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/java/de/ozgcloud/eingang/formcycle/common/errorhandling/InternalExceptionDtoTestFactory.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formcycle.common.errorhandling; + +import de.ozgcloud.common.errorhandling.ExceptionUtil; +import de.ozgcloud.eingang.formcycle.common.errorhandling.InternalExceptionDto.InternalExceptionDtoBuilder; + +public class InternalExceptionDtoTestFactory { + + public static final String EXCEPTION_ID = "exception-id"; + public static final String MESSAGE = "exception message"; + + public static InternalExceptionDto create() { + return createBuilder().build(); + } + + private static InternalExceptionDtoBuilder createBuilder() { + return InternalExceptionDto.builder().exceptionId(EXCEPTION_ID).message(MESSAGE); + } + + public static String messageWithExceptionId() { + return ExceptionUtil.formatMessageWithExceptionId(MESSAGE, EXCEPTION_ID); + } +} diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 0000000000000000000000000000000000000000..79b126e6cdb86bec1f4f08c205de8961bde1934a --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml new file mode 100644 index 0000000000000000000000000000000000000000..54587478bf730fd0fac8c2c48dc19ec78aeccaf3 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/application-itcase.yml @@ -0,0 +1,4 @@ +ozgcloud: + adapter: + targetVorgangManagerName: local + fallbackStrategy: DENY \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties new file mode 100644 index 0000000000000000000000000000000000000000..1cebb76d5a58ac034b2627d12411d82d1e85821e --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..5d7001e1f9186d197a2d301d3910c9d73ed05d15 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-impl/src/test/resources/log4j2.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration> + <Appenders> + <Console name="CONSOLE" target="SYSTEM_OUT"> + <PatternLayout pattern="[%-5level] %c{1.} %msg%n"/> + </Console> + </Appenders> + + <Loggers> + <Root level="WARN"> + <appender-ref ref="CONSOLE" /> + </Root> + </Loggers> +</configuration> \ No newline at end of file diff --git a/formcycle-adapter/formcycle-adapter-interface/pom.xml b/formcycle-adapter/formcycle-adapter-interface/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..70214b6f2cbdca67dc0a765e755ffc37d7414d30 --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-interface/pom.xml @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>de.ozgcloud.common</groupId> + <artifactId>ozgcloud-common-dependencies</artifactId> + <version>3.0.1</version> + <relativePath/> + </parent> + + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>formcycle-adapter-interface</artifactId> + <name>EM - Formcycle Adapter - Interface</name> + <version>2.4.0</version> + + <properties> + <vorgang-manager.version>2.4.0</vorgang-manager.version> + <java.version>17</java.version> + <maven.compiler.source>${java.version}</maven.compiler.source> + <maven.compiler.target>${java.version}</maven.compiler.target> + </properties> + + <dependencies> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + <version>${vorgang-manager.version}</version> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + <classifier>sources</classifier> + <scope>provided</scope> + <version>${vorgang-manager.version}</version> + </dependency> + + <!-- protobuf --> + <dependency> + <groupId>com.google.protobuf</groupId> + <artifactId>protobuf-java</artifactId> + </dependency> + <dependency> + <groupId>com.google.protobuf</groupId> + <artifactId>protobuf-java-util</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>com.github.os72</groupId> + <artifactId>protoc-jar-maven-plugin</artifactId> + <version>${protoc-jar-plugin.version}</version> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <includeMavenTypes>direct</includeMavenTypes> + <outputTargets> + <outputTarget> + <type>java</type> + </outputTarget> + <outputTarget> + <type>grpc-java</type> + <pluginArtifact>io.grpc:protoc-gen-grpc-java:${protoc-gen.version}</pluginArtifact> + </outputTarget> + </outputTargets> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto b/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto new file mode 100644 index 0000000000000000000000000000000000000000..61ff4f7f5fa54c994e452a043e570bfb26b5931d --- /dev/null +++ b/formcycle-adapter/formcycle-adapter-interface/src/main/protobuf/form-data.model.proto @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +syntax = "proto3"; + +package de.ozgcloud.eingang.formcycle; + +/*import "common.model.proto";*/ +import "vorgang.model.proto"; + +option java_multiple_files = true; +option java_package = "de.ozgcloud.eingang.formcycle"; +option java_outer_classname = "FormcycleFormDataProto"; + +message FormCycleConfirmationResponse { + string vorgangNummer = 1; +} + +message FormCycleFormData { + FormCycleFormHeader header = 1; + FormCycleServiceKonto serviceKonto = 2; + de.ozgcloud.vorgang.vorgang.GrpcFormData formData = 3; + repeated FormCycleAttachmentGroup attachmentGroup = 4; +} + +message FormCycleFormHeader { + string receivedAt = 1; + string formName = 2; + string organisationsEinheitId = 3; +} + +message FormCycleServiceKonto { + string type = 1; + FormCyclePostfachAddress address = 2; +} + +message FormCyclePostfachAddress { + string version = 1; + string identifier = 2; +} + +message FormCycleAttachmentGroup { + string name = 1; + repeated string fileId = 2; +} \ No newline at end of file diff --git a/formcycle-adapter/pom.xml b/formcycle-adapter/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..18f21dd78a5fee4ef8b1601426a3679128c8d5a8 --- /dev/null +++ b/formcycle-adapter/pom.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> + </parent> + + <artifactId>formcycle-adapter</artifactId> + <name>EM - Formcycle Adapter</name> + <description>Eingang Adapter für Formcycle basierte Formulare</description> + <packaging>pom</packaging> + + <modules> + <module>formcycle-adapter-interface</module> + <module>formcycle-adapter-impl</module> + </modules> + + <properties> + <spring-boot.build-image.imageName>docker.ozg-sh.de/formcycle-adapter:build-latest</spring-boot.build-image.imageName> + </properties> + + <dependencies> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + <classifier>sources</classifier> + <scope>compile</scope> + <version>${vorgang-manager.version}</version> + </dependency> + </dependencies> +</project> diff --git a/formsolutions-adapter/pom.xml b/formsolutions-adapter/pom.xml index 159de33d7b19aa823153f62cc058668abcf312d7..04fcbaf81918f9cb0d0c3b3f94127887935b69e0 100644 --- a/formsolutions-adapter/pom.xml +++ b/formsolutions-adapter/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -23,15 +24,13 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> @@ -46,16 +45,16 @@ <dependencies> <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.common</groupId> - <artifactId>kop-common-test</artifactId> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>semantik-adapter</artifactId> </dependency> <!-- Spring --> @@ -82,10 +81,6 @@ <groupId>org.apache.ws.xmlschema</groupId> <artifactId>xmlschema-core</artifactId> </dependency> - <dependency> - <groupId>org.glassfish.jaxb</groupId> - <artifactId>jaxb-runtime</artifactId> - </dependency> <!-- end::springws[] --> <!-- Dev --> @@ -106,7 +101,12 @@ <!-- Test --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.common</groupId> + <artifactId>ozgcloud-common-test</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> @@ -122,10 +122,6 @@ </exclusion> </exclusions> </dependency> - <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>semantik-adapter</artifactId> - </dependency> </dependencies> <build> @@ -133,11 +129,18 @@ <plugins> <!-- tag::wsdl/xsd[] --> <plugin> - <groupId>org.jvnet.jaxb2.maven2</groupId> - <artifactId>maven-jaxb2-plugin</artifactId> + <groupId>com.evolvedbinary.maven.jvnet</groupId> + <artifactId>jaxb30-maven-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> <configuration> <schemaLanguage>WSDL</schemaLanguage> - <generatePackage>de.itvsh.kop.eingangsadapter.formsolutions</generatePackage> + <generatePackage>de.ozgcloud.eingang.formsolutions</generatePackage> <schemas> <schema> <fileset> @@ -148,6 +151,7 @@ </fileset> </schema> </schemas> + <schemaLanguage>WSDL</schemaLanguage> </configuration> </plugin> @@ -161,11 +165,6 @@ <artifactId>maven-failsafe-plugin</artifactId> </plugin> - <!-- <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> - <configuration> <sources> <source>${project.basedir}/src/main/resources/formsolutions/formdata.xsd</source> - </sources> </configuration> </plugin> --> - <!-- end::xsd[] --> - <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> @@ -179,13 +178,46 @@ <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <image> + <!-- cann be removed when using common lib > 2.3.2--> + <builder>paketobuildpacks/builder-jammy-base</builder> + <env> + <BPE_DELIM_JAVA_TOOL_OPTIONS xml:space="preserve"> </BPE_DELIM_JAVA_TOOL_OPTIONS> + <BPE_APPEND_JAVA_TOOL_OPTIONS>-Dfile.encoding=UTF-8</BPE_APPEND_JAVA_TOOL_OPTIONS> + </env> + </image> + </configuration> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> </plugin> + </plugins> </build> -</project> \ No newline at end of file + <profiles> + <profile> + <id>ci-build</id> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <executions> + <execution> + <id>build-image</id> + <phase>install</phase> + <goals> + <goal>build-image</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java deleted file mode 100644 index d6eed5d2cf1716fe47ac7b5ff90db0631ed2e2f5..0000000000000000000000000000000000000000 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapper.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.formsolutions; - -import java.util.ArrayList; -import java.util.Base64; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Component; - -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; - -@Component -class FormSolutionsRepresentationsMapper implements FormSolutionsFileMapper { - public static final String PDF = "pdf"; - public static final String FILE_NAME_PDF_REP = "eingang.pdf"; - public static final String PDF_CONTENT_TYPE = MediaType.APPLICATION_PDF_VALUE; - - public static final String JSON = "json"; - public static final String FILE_NAME_JSON_REP = "form-data.json"; - public static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON_VALUE; - - List<IncomingFile> mapRepresentations(Map<String, Object> plainMap, Optional<String> json) { - List<IncomingFile> representations = new ArrayList<>(); - - Optional.ofNullable((String) plainMap.get(PDF)).filter(StringUtils::isNoneEmpty).ifPresent(data -> representations.add(mapPdfFile(data))); - - json.ifPresent(jsonData -> representations.add(mapJsonFile(jsonData))); - - return representations; - } - - private IncomingFile mapJsonFile(String jsonData) { - return mapFile(jsonData.getBytes(), JSON_CONTENT_TYPE, FILE_NAME_JSON_REP); - } - - private IncomingFile mapPdfFile(String data) { - return mapFile(Base64.getDecoder().decode(data.getBytes()), PDF_CONTENT_TYPE, FILE_NAME_PDF_REP); - } -} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java b/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java deleted file mode 100644 index 412ab9786cac5cb4e8ed0730cdf05db34b87564c..0000000000000000000000000000000000000000 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapper.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.formsolutions; - -import java.util.Map; -import java.util.Optional; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.itvsh.kop.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper; - -@Component -class FormSolutionsRequestMapper { - static final TypeReference<Map<String, Object>> VALUE_TYPE_REF = new TypeReference<Map<String, Object>>() { - }; - - @Autowired - private FormSolutionsAttachmentsMapper attachmentMapper; - - @Autowired - private FormSolutionsRepresentationsMapper representationMapper; - - @Autowired - private ObjectMapper objectMapper; - - public FormData map(String json) { - var formData = mapRequestJson(json); - return mapFiles(formData, json); - - } - - private FormData mapRequestJson(String json) { - - return FormData.builder() - .formData(mapFormData(json)) - .build(); - - } - - Map<String, Object> mapFormData(String json) { - try { - return objectMapper.readValue(json, VALUE_TYPE_REF); - } catch (JsonProcessingException e) { - throw new TechnicalException("Error parsing JSON from FormSolutions-Server", e); - } - } - - FormData mapFiles(FormData formData, String json) { - return FormDataUtils.from(formData) - .put(AbstractFileMapper.FIELD_NAME_MAPPED_FILES, buildMappedFiles(formData, json)) - .remove(FormSolutionsAttachmentsMapper.ZIP) - .remove(FormSolutionsRepresentationsMapper.PDF) - .build(); - - } - - private Map<String, Object> buildMappedFiles(FormData formData, String json) { - return Map.of( - AbstractFileMapper.ATTACHMENTS, attachmentMapper.mapAttachments(formData.getFormData()), - AbstractFileMapper.REPRESENTATIONS, representationMapper.mapRepresentations(formData.getFormData(), Optional.of(json))); - } - -} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapper.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java similarity index 55% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapper.java rename to formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java index a504e195289b74870c73538c2604c7078738902e..c4e2b0174ff137634bdffe9a2a3c0ad2aa851497 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapper.java +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,40 +21,45 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; -import java.util.ArrayList; -import java.util.Base64; +import java.io.File; +import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.Objects; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; @Component -class FormSolutionsAttachmentsMapper implements FormSolutionsFileMapper { +class FormSolutionsAttachmentsMapper { + public static final String ZIP = "zip"; public static final String FILE_NAME_ZIP_ATTACHMENT = "attachments.zip"; public static final String ZIP_CONTENT_TYPE = "application/zip"; public static final String FILE_GROUP_ZIP_NAME = "gezippte Anhänge"; - List<IncomingFileGroup> mapAttachments(Map<String, Object> data) { - return mapZipRepresentation(Optional.ofNullable((String) data.get(ZIP))); + public List<IncomingFileGroup> mapAttachments(File zipFile) { + if (Objects.nonNull(zipFile) && zipFile.length() > 0) { + return Collections.singletonList(buildFileGroup(buildZipFile(zipFile))); + } + return Collections.emptyList(); + } + + private IncomingFileGroup buildFileGroup(IncomingFile zipFile) { + return IncomingFileGroup.builder() + .name(FILE_GROUP_ZIP_NAME) + .files(List.of(zipFile)) + .build(); } - List<IncomingFileGroup> mapZipRepresentation(Optional<String> encodedZip) { - var fileGroups = new ArrayList<IncomingFileGroup>(); - encodedZip.filter(StringUtils::isNoneEmpty).ifPresent(content -> { - var files = List.of(mapFile(Base64.getDecoder().decode(encodedZip.get()), ZIP_CONTENT_TYPE, FILE_NAME_ZIP_ATTACHMENT)); - fileGroups.add(IncomingFileGroup.builder() - .name(FILE_GROUP_ZIP_NAME) - .files(files) - .build()); - }); - - return fileGroups; + private IncomingFile buildZipFile(File zipFile) { + return IncomingFile.builder() + .file(zipFile) + .contentType(ZIP_CONTENT_TYPE) + .name(FILE_NAME_ZIP_ATTACHMENT) + .build(); } } \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java new file mode 100644 index 0000000000000000000000000000000000000000..9cf795bc8eed4ad8f8b390bf339aa508f620b318 --- /dev/null +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingang.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formsolutions; + +import java.io.File; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +import de.ozgcloud.common.binaryfile.FileDataDeserializer; +import lombok.Builder; +import lombok.Getter; +import lombok.extern.jackson.Jacksonized; + +@Getter +@Builder +@Jacksonized +public class FormSolutionsEingang { + + private Map<String, Object> assistant; + + private String postkorbhandle; + private String kommunalverwaltungId; + private String transactionId; + private String zustaendigeStelle; + @JsonProperty("gemeindeschlüssel") + private String gemeindeSchluessel; + private String anliegenId; + + @JsonDeserialize(using = FileDataDeserializer.class) + private File pdf; + @JsonDeserialize(using = FileDataDeserializer.class) + private File zip; +} diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..32ea404a4064bd6853e1a9b5bb6dc1afed63a2f0 --- /dev/null +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtils.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formsolutions; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Base64; + +import org.apache.commons.io.IOUtils; + +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.errorhandling.TechnicalException; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +class FormSolutionsFileMapperUtils { + + static InputStream decodeFile(String base64FileContent) { + // TODO ins Dateisystem schreiben, anstatt in Memory halten + ByteArrayInputStream base64ContentStream = new ByteArrayInputStream(base64FileContent.getBytes()); + return Base64.getDecoder().wrap(base64ContentStream); + } + + static InputStream decode(InputStream b64InputStream) { + return Base64.getDecoder().wrap(b64InputStream); + } + + static File decodeBase64Content(String content) { + var b64File = TempFileUtils.writeTmpFile(content); + var tempFile = TempFileUtils.createTmpFile(); + + try (var in = new FileInputStream(b64File); var out = new FileOutputStream(tempFile.toFile())) { + IOUtils.copy(FormSolutionsFileMapperUtils.decode(in), out); + out.flush(); + return tempFile.toFile(); + } catch (IOException e) { + throw new TechnicalException("Error decoding and saving b64 file.", e); + } + } +} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..0c4e2ab709aed46de8cc4de24813464a78d2fc52 --- /dev/null +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapper.java @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formsolutions; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; + +@Component +class FormSolutionsRequestMapper { + static final TypeReference<Map<String, Object>> VALUE_TYPE_REF = new TypeReference<Map<String, Object>>() { + }; + + private static final String FILE_NAME_JSON_REPRESENTATION = "form-data.json"; + static final String FILE_NAME_PDF_REPRESENTATION = "eingang.pdf"; + + static final String FORMDATA_FIELD_ZUSTAENDIGE_STELLE = "zustaendigeStelle"; + public static final String FORMDATA_FIELD_ASSISTANT = "assistant"; + public static final String FORMDATA_FIELD_POSTKORBHANDLE = "postkorbhandle"; + static final String FORMDATA_FIELD_TRANSACTION_ID = "transactionId"; + + @Autowired + private FormSolutionsAttachmentsMapper attachmentMapper; + @Autowired + private ObjectMapper objectMapper; + + public FormData map(File jsonFile) { + var eingang = mapEingang(jsonFile); + + return buildFormData(jsonFile, eingang); + } + + FormData buildFormData(File jsonFile, FormSolutionsEingang eingang) { + var builder = FormData.builder() + .formData(buildFormDataMap(eingang)) + .attachments(attachmentMapper.mapAttachments(eingang.getZip())) + .representation(buildJsonFile(jsonFile)); + var numberOfRepresentations = 1; + + if (Objects.nonNull(eingang.getPdf())) { + builder.representation(buildPdfFile(eingang.getPdf())); + numberOfRepresentations++; + } + + return builder.numberOfRepresentations(numberOfRepresentations).build(); + } + + Map<String, Object> buildFormDataMap(FormSolutionsEingang eingang) { + Map<String, Object> map = new HashMap<>(); + addIfValueNotNull(map, FORMDATA_FIELD_ASSISTANT, eingang.getAssistant()); + addIfValueNotNull(map, FORMDATA_FIELD_POSTKORBHANDLE, eingang.getPostkorbhandle()); + addIfValueNotNull(map, FORMDATA_FIELD_TRANSACTION_ID, eingang.getTransactionId()); + addIfValueNotNull(map, FORMDATA_FIELD_ZUSTAENDIGE_STELLE, eingang.getZustaendigeStelle()); + + return Collections.unmodifiableMap(map); + } + + private Map<String, Object> addIfValueNotNull(Map<String, Object> map, String key, Object value) { + if (Objects.nonNull(value)) { + map.put(key, value); + } + return map; + } + + FormSolutionsEingang mapEingang(File jsonFile) { + try (var in = new FileInputStream(jsonFile)) { + return objectMapper.readValue(in, FormSolutionsEingang.class); + } catch (IOException e) { + throw new TechnicalException("Error parsing JSON from FormSolutions-Server", e); + } + } + + private IncomingFile buildJsonFile(File jsonFile) { + return IncomingFile.builder() + .file(jsonFile) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .name(FILE_NAME_JSON_REPRESENTATION) + .size(jsonFile.length()) + .build(); + } + + private IncomingFile buildPdfFile(File pdfFile) { + return IncomingFile.builder() + .file(pdfFile) + .contentType(MediaType.APPLICATION_PDF_VALUE) + .name(FILE_NAME_PDF_REPRESENTATION) + .size(pdfFile.length()) + .build(); + } +} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SemantikAdapterConfiguration.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java similarity index 80% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SemantikAdapterConfiguration.java rename to formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java index d1ec38efcfc4cfc24bd2e29bc0da1cef1aa13d60..48b9d55cf387d21ec31bc0db8c3a2ed6595f450b 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SemantikAdapterConfiguration.java +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SemantikAdapterConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,10 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; + +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java similarity index 59% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java rename to formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java index c91c67bd7a6a9dd4af080ff7be09bc7c90f9fbd8..6032a2588d3203bdca976e948d012c6d1c3b7ca1 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpoint.java +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/SendFormEndpoint.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,50 +21,73 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; + +import java.io.File; +import java.util.UUID; +import java.util.function.Supplier; import org.apache.commons.lang3.exception.ExceptionUtils; +import org.apache.logging.log4j.CloseableThreadContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; import org.springframework.ws.server.endpoint.annotation.RequestPayload; import org.springframework.ws.server.endpoint.annotation.ResponsePayload; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.eingang.semantik.SemantikAdapter; import lombok.extern.log4j.Log4j2; @Endpoint @Log4j2 public class SendFormEndpoint { + public static final String JSON_FIELD = "json"; + @Autowired - private FormSolutionsRequestMapper incommingDataMapper; + private FormSolutionsRequestMapper requestMapper; @Autowired private SemantikAdapter semantikAdapter; + private static final String REQUEST_ID_KEY = "requestId"; + @PayloadRoot(namespace = WebServiceConfiguration.NAMESPACE_URI, localPart = "Request") @ResponsePayload public Response receiveForm(@RequestPayload Request request) { + return doSurroundOn(() -> handleRequest(request)); + } + + private Response handleRequest(Request request) { try { - semantikAdapter.processFormData(parseRequestData(request.getJSON())); + semantikAdapter.processFormData(requestMapper.map(writeRequestJsonToFile(request.getJSON()))); return buildSuccessResponse(); } catch (Exception e) { - LOG.error("Error on processing FS Formdata.", e); + LOG.error("Error on processing FormSolutions Formdata.", e); return ExceptionUtils.rethrow(e); } + } + + private Response doSurroundOn(Supplier<Response> requestHandler) { + UUID requestId = UUID.randomUUID(); + try (CloseableThreadContext.Instance ctc = CloseableThreadContext.put(REQUEST_ID_KEY, requestId.toString())) { + LOG.info("START of Request with ID '{}'.", requestId); + return requestHandler.get(); + } finally { + LOG.info("END of Request with ID '{}'", requestId); + } } - FormData parseRequestData(String json) { - return incommingDataMapper.map(json); + private File writeRequestJsonToFile(String json) { + return TempFileUtils.writeTmpFile(json); } - Response buildSuccessResponse() { - var response = new Response(); + private Response buildSuccessResponse() { + LOG.debug("Successful processed data"); + var response = new Response(); response.setStatus("OK"); return response; } - -} +} \ No newline at end of file diff --git a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java similarity index 87% rename from formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java rename to formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java index fcd0b27165b67ca26de638f9305cd50dc4b3e87f..5e958b48e9a790231e0ac74a6eb2f654702a1b33 100644 --- a/formsolutions-adapter/src/main/java/de/itvsh/kop/eingangsadapter/formsolutions/WebServiceConfiguration.java +++ b/formsolutions-adapter/src/main/java/de/ozgcloud/eingang/formsolutions/WebServiceConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.ApplicationContext; @@ -43,7 +43,7 @@ class WebServiceConfiguration extends WsConfigurerAdapter { static final String NAMESPACE_URI = "urn:JSONWrap"; @Bean - public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) { + ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) { MessageDispatcherServlet servlet = new MessageDispatcherServlet(); servlet.setApplicationContext(applicationContext); servlet.setTransformWsdlLocations(true); @@ -51,12 +51,12 @@ class WebServiceConfiguration extends WsConfigurerAdapter { } @Bean - public XsdSchema formDataSchema() { + XsdSchema formDataSchema() { return new SimpleXsdSchema(new ClassPathResource(XSD_LOCATION)); } @Bean(name = "formsolutions_formDatas") - public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema formDataSchema) { + DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema formDataSchema) { DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition(); wsdl11Definition.setPortTypeName("JSONWrapWebService"); wsdl11Definition.setLocationUri("/ws"); diff --git a/formsolutions-adapter/src/main/resources/application-local.yml b/formsolutions-adapter/src/main/resources/application-local.yml index ff8e8e157a7f35e9fdfe9eef73a025c38e01e263..79b16a9ff530c3dcd8bd15b323d9c3257d849486 100644 --- a/formsolutions-adapter/src/main/resources/application-local.yml +++ b/formsolutions-adapter/src/main/resources/application-local.yml @@ -5,7 +5,7 @@ logging: grpc: client: - pluto-local: + vorgang-manager-local: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT @@ -16,9 +16,9 @@ management: server: port: 9292 -kop: +ozgcloud: adapter: - targetPlutoName: local + targetVorgangManagerName: local fallbackStrategy: DENY routingStrategy: SINGLE diff --git a/formsolutions-adapter/src/main/resources/application.yml b/formsolutions-adapter/src/main/resources/application.yml index f5cf1c4d726b124486b30b389e4ebb2265437dc3..308ce5469d6d9be31213571b18376ceafc150db1 100644 --- a/formsolutions-adapter/src/main/resources/application.yml +++ b/formsolutions-adapter/src/main/resources/application.yml @@ -1,7 +1,7 @@ logging: level: ROOT: WARN - '[de.itvsh]': INFO + '[de.ozgcloud]': INFO server: port: 8080 diff --git a/formsolutions-adapter/src/main/resources/banner.txt b/formsolutions-adapter/src/main/resources/banner.txt new file mode 100644 index 0000000000000000000000000000000000000000..d3127c411eae1e6c3ad458b6dac0425be51704e1 --- /dev/null +++ b/formsolutions-adapter/src/main/resources/banner.txt @@ -0,0 +1,9 @@ + ______ ____ _____ __ __ _____ ____ _ _ _ _______ _____ ____ _ _ _____ + | ____/ __ \| __ \| \/ |/ ____|/ __ \| | | | | |__ __|_ _/ __ \| \ | |/ ____| + | |__ | | | | |__) | \ / | (___ | | | | | | | | | | | | || | | | \| | (___ + | __|| | | | _ /| |\/| |\___ \| | | | | | | | | | | | || | | | . ` |\___ \ + | | | |__| | | \ \| | | |____) | |__| | |___| |__| | | | _| || |__| | |\ |____) | + |_| \____/|_| \_\_| |_|_____/ \____/|______\____/ |_| |_____\____/|_| \_|_____/ +${spring-boot.version} ${application.version} + + diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapperTest.java b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapperTest.java deleted file mode 100644 index 860736184c19114a212124a1e79b4aef69b513ed..0000000000000000000000000000000000000000 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRepresentationsMapperTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.formsolutions; - -import static de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsFilesTestFactory.*; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsRepresentationsMapper.*; -import static org.assertj.core.api.Assertions.*; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; - -class FormSolutionsRepresentationsMapperTest { - private FormSolutionsRepresentationsMapper mapper = new FormSolutionsRepresentationsMapper(); - - @Nested - class TestRepresentationsMapping { - @Nested - class TestPdfRepresentations { - @Test - void shouldParsePdf() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(JSON_CONTENT)); - - assertThat(getRepresentation(map, 0).getContent()).isEqualTo(PDF_DECODED); - } - - @Test - void shouldSetPdfContentType() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(JSON_CONTENT)); - - assertThat(getRepresentation(map, 0).getContentType()).isEqualTo(PDF_CONTENT_TYPE); - } - - @Test - void shouldSetPdfFileName() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(JSON_CONTENT)); - - assertThat(getRepresentation(map, 0).getName()).isEqualTo(FILE_NAME_PDF_REP); - } - } - - @Nested - class TestJsonRepresentation { - - @Test - void shouldParseJson() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(SIMPLE_JSON_DATA)); - - assertThat(getRepresentation(map, 1).getContent()).isEqualTo(FormSolutionsTestFactory.SIMPLE_JSON_DATA.getBytes()); - } - - @Test - void shouldSetJsonContentType() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(SIMPLE_JSON_DATA)); - - assertThat(getRepresentation(map, 1).getContentType()).isEqualTo(JSON_CONTENT_TYPE); - } - - @Test - void shouldSetJsonFileName() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(SIMPLE_JSON_DATA)); - - assertThat(getRepresentation(map, 1).getName()).isEqualTo(FILE_NAME_JSON_REP); - } - - @Test - void shouldParse() { - var map = mapper.mapRepresentations(REPRESENTATIONS.getFormData(), Optional.of(SIMPLE_JSON_DATA)); - - assertThat(map).hasSize(2); - } - - @Test - void shouldParseJSonOnly() { - var map = mapper.mapRepresentations( - FormSolutionsFilesTestFactory.createBuilder().formData(Map.of()) - .build().getFormData(), - Optional.of(SIMPLE_JSON_DATA)); - - assertThat(map).hasSize(1); - assertThat(getRepresentation(map, 0).getContentType()).isEqualTo(JSON_CONTENT_TYPE); - } - } - } - - private IncomingFile getRepresentation(List<IncomingFile> map, int index) { - return map.get(index); - } -} diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java b/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java deleted file mode 100644 index d2237c4c57206153f731020d975568033bdf39e4..0000000000000000000000000000000000000000 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsRequestMapperTest.java +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.formsolutions; - -import static de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsAntragstellerMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsZustaendigeStelleMapper.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.Spy; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.itvsh.kop.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper; - -class FormSolutionsRequestMapperTest { - - private static final String TRANSACTION_ID = "transactionId"; - - @Spy - @InjectMocks - private FormSolutionsRequestMapper mapper; - - @Mock - private FormSolutionsAttachmentsMapper attachmentMapper; - @Mock - private FormSolutionsRepresentationsMapper representationsMapper; - - @Spy - private ObjectMapper objectMapper = new ObjectMapper(); - - @Nested - class TestJsonToMapMapping { - @Test - void shouldMap() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(dataMap).isNotNull(); - } - - @Test - void shouldContainZustaendigeStelle() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat((String) dataMap.get(ZUSTAENDIGE_STELLE)).isEqualTo(ORGANISATIONSEINHEITEN_ID); - } - - @Test - void shouldContainAnsprechpartner() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat((String) dataMap.get(POSTKORBHANDLE)).isEqualTo(POSTFACH_ID); - } - - @Test - void shouldContainRequestId() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat((String) dataMap.get(TRANSACTION_ID)).isEqualTo(FORM_ID_VALUE); - } - - @Test - void shouldContainAssitant() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(dataMap.get(ASSISTANT)).isNotNull(); - } - - @Test - void shouldHandleJsonException() throws JsonMappingException, JsonProcessingException { - doThrow(JsonProcessingException.class).when(objectMapper).readValue(anyString(), Mockito.<TypeReference<Map<String, Object>>>any()); - - assertThatThrownBy(() -> mapper.mapFormData(SIMPLE_JSON_DATA)).isInstanceOf(TechnicalException.class); - } - - @Test - @SuppressWarnings("unchecked") - void shouldContainFormIdentifier() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat((String) ((Map<String, Object>) dataMap.get(ASSISTANT)) - .get(IDENTIFIER)) - .isEqualTo(IDENTIFIER_VALUE); - } - - @Nested - class TestPanels { - @Test - void shouldContainPanels() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getPanels(dataMap)).isNotNull(); - } - - @Test - void shouldContainPanelIdentifier() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getPanels(dataMap).get(0)).containsEntry(IDENTIFIER, PANEL_ID); - } - - @Test - void shouldContainPanelComponets() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getPanels(dataMap).get(0).get(FormSolutionsPanelMapper.COMPONENTS)).isNotNull(); - } - - @Test - void shouldContainTextComponets() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getComponents(dataMap).get(0)) - .containsEntry(IDENTIFIER, COMPONENT_ID) - .containsEntry(STRING_VALUE, COMPONENT_VALUE); - } - - @Test - void shouldContainDateComponets() { - var dataMap = mapper.mapFormData(SIMPLE_JSON_DATA); - - assertThat(getComponents(dataMap).get(1)) - .containsEntry(IDENTIFIER, DATE_COMPONENT_ID) - .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); - } - - @Nested - class TestNestedPanels { - @Test - void shouldContainGroup() { - var dataMap = mapper.mapFormData(NESTED_COMPONENTS_JSON); - - assertThat(getComponents(dataMap).get(0)).containsEntry(IDENTIFIER, OBJEKTGRUPPE_0); - } - - @Test - void shouldContainDateField() { - var dataMap = mapper.mapFormData(NESTED_COMPONENTS_JSON); - - assertThat(getNestedComponents(dataMap).get(0)) - .containsEntry(IDENTIFIER, DATE_COMPONENT_ID) - .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); - } - } - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getComponents(Map<String, Object> dataMap) { - return (List<Map<String, Object>>) getPanels(dataMap).get(0).get(COMPONENTS); - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getNestedComponents(Map<String, Object> dataMap) { - return (List<Map<String, Object>>) ((List<Map<String, Object>>) getPanels(dataMap).get(0).get(COMPONENTS)).get(0).get(COMPONENTS); - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getPanels(Map<String, Object> dataMap) { - return (List<Map<String, Object>>) ((Map<String, Object>) dataMap.get(ASSISTANT)).get(PANELS); - } - } - - @Nested - class TestFileMapping { - - @Nested - class TestMapFiles { - @Test - void shouldCallAttachmentMappers() { - mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON); - - verify(attachmentMapper).mapAttachments(Mockito.<Map<String, Object>>any()); - } - - @DisplayName("result should have mapped files field") - @Test - void shouldHaveMappedFilesField() { - var result = mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON); - - assertThat(result.getFormData()).containsKey(AbstractFileMapper.FIELD_NAME_MAPPED_FILES); - } - - @Test - void shouldCallRepresentationMapper() { - mapper.mapFiles(FormDataTestFactory.create(), ATTACHMENTS_JSON); - - verify(representationsMapper).mapRepresentations(Mockito.<Map<String, Object>>any(), eq(Optional.of(ATTACHMENTS_JSON))); - } - - @Test - void shouldRemoveZip() { - var formData = FormDataTestFactory.withFormDataMaps(Map.of(FormSolutionsAttachmentsMapper.ZIP, "test")); - - var dataMap = mapper.mapFiles(formData, ATTACHMENTS_JSON); - - assertThat(dataMap.getFormData()).doesNotContainKey(FormSolutionsAttachmentsMapper.ZIP); - } - - @Test - void shouldRemovePdf() { - var formData = FormDataTestFactory.withFormDataMaps(Map.of(FormSolutionsRepresentationsMapper.PDF, "test")); - - var dataMap = mapper.mapFiles(formData, ATTACHMENTS_JSON); - - assertThat(dataMap.getFormData()).doesNotContainKey(FormSolutionsRepresentationsMapper.PDF); - } - } - - } - -} diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapperTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java similarity index 55% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapperTest.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java index 553d35d6b649b9426424dcd6cc3387d827f20f60..c199db742efa23d327e8b06e752ca52c5a8df78d 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsAttachmentsMapperTest.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsAttachmentsMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,57 +21,77 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsAttachmentsMapper.*; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsFilesTestFactory.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsAttachmentsMapper.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsFilesTestFactory.*; import static org.assertj.core.api.Assertions.*; +import java.io.File; import java.util.List; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import lombok.SneakyThrows; class FormSolutionsAttachmentsMapperTest { - private FormSolutionsAttachmentsMapper mapper = new FormSolutionsAttachmentsMapper(); + + @InjectMocks + private FormSolutionsAttachmentsMapper mapper; + + private File zipFile; + + @BeforeEach + void writeZipFile() { + zipFile = TempFileUtils.writeTmpFile(ZIP_DECODED); + } + + @AfterEach + void delZipFile() { + zipFile.delete(); + } @Nested class TestAttachmentsMapping { @Test + @SneakyThrows void shouldParseZip() { - var map = mapper.mapAttachments(FormSolutionsFilesTestFactory.create().getFormData()); + var map = mapper.mapAttachments(zipFile); - assertThat(getAttachment(map).getContent()).isEqualTo(ZIP_DECODED); + assertThat(TestUtils.contentStreamToByteArray(getAttachment(map).getContentStream())).isEqualTo(ZIP_DECODED); } @Test void shouldSetContentType() { - var map = mapper.mapAttachments(FormSolutionsFilesTestFactory.create().getFormData()); + var map = mapper.mapAttachments(zipFile); assertThat(getAttachment(map).getContentType()).isEqualTo(ZIP_CONTENT_TYPE); } @Test void shouldSetFileName() { - var map = mapper.mapAttachments(FormSolutionsFilesTestFactory.create().getFormData()); + var map = mapper.mapAttachments(zipFile); assertThat(getAttachment(map).getName()).isEqualTo(FILE_NAME_ZIP_ATTACHMENT); } @Test void shouldSetGroupName() { - var map = mapper.mapAttachments(FormSolutionsFilesTestFactory.create().getFormData()); + var map = mapper.mapAttachments(zipFile); - assertThat(map.get(0).getName()) - .isEqualTo(FILE_GROUP_ZIP_NAME); + assertThat(map.get(0).getName()).isEqualTo(FILE_GROUP_ZIP_NAME); } } private IncomingFile getAttachment(List<IncomingFileGroup> attachments) { return attachments.get(0).getFiles().get(0); } - } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleTestFactory.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java similarity index 63% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleTestFactory.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java index 0bc3d1f0218a61a481160821cb6d1b91f5691a53..9a4be9a1769ee2b0c346e17d73b0dd4df460c465 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleTestFactory.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsEingangTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,22 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.formsolutions; -import static de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory.*; +import static de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory.*; import java.util.Map; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +public class FormSolutionsEingangTestFactory { -public class FormSolutionsZustaendigeStelleTestFactory { - - public static FormData create() { + public static FormSolutionsEingang create() { return createBuilder().build(); } - public static FormData.FormDataBuilder createBuilder() { - return FormData.builder() - .formData(Map.of(FormSolutionsZustaendigeStelleMapper.ZUSTAENDIGE_STELLE, ORGANISATIONSEINHEIT_ID)); + public static FormSolutionsEingang.FormSolutionsEingangBuilder createBuilder() { + return FormSolutionsEingang.builder() + .assistant(Map.of()) + .zustaendigeStelle(ZUSTAENDIGE_STELLE) + .postkorbhandle(POSTFACH_ID_STELLE) + .transactionId(FORM_ID_VALUE); + } -} \ No newline at end of file +} diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ca274cade5432290869386c93e3478daf4d016da --- /dev/null +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFileMapperUtilsTest.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formsolutions; + +import static de.ozgcloud.eingang.formsolutions.FormSolutionsFileMapperUtils.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsFilesTestFactory.*; +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import de.ozgcloud.common.test.TestUtils; +import lombok.SneakyThrows; + +class FormSolutionsFileMapperUtilsTest { + + @DisplayName("Test decoding base64 encoded file") + @Nested + class TestDecodingBase64Content { + + @Test + @SneakyThrows + void shouldDecodeFile() { + var decodedFileContentStream = decodeFile(ZIP_ENCODED); + + assertThat(TestUtils.contentStreamToByteArray(decodedFileContentStream)).isEqualTo(ZIP_DECODED); + } + } +} \ No newline at end of file diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFilesTestFactory.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java similarity index 99% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFilesTestFactory.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java index 48a89328939273f56fce9efc4a18ac3da42724a5..10229d86a8ade1d24e73a08605a927793fbdf12e 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormSolutionsFilesTestFactory.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsFilesTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,15 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsAttachmentsMapper.*; -import static de.itvsh.kop.eingangsadapter.formsolutions.FormSolutionsRepresentationsMapper.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsAttachmentsMapper.*; import java.util.Base64; import java.util.Map; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; public class FormSolutionsFilesTestFactory { public static final String ZIP_ENCODED = "UEsDBBQACAAIACpaS1QAAAAAAAAAAFipAwAIACAAMjQway50eHRVVA0AB7A3BmJPRzNixTcGYnV4CwABBGJsYAsEAQJgC+3YTXIb1xmF4TlX0QtQaQ+uZOjKJJUFtIAW1TF+aHS3HGv1uQ2SoeJKUskgxeP7PZPEPxIBvDjq6+f+eL1N52F+WrbzcLyerrdhmddhPE/rh+FwvSzTOq1b+4fjsf2aw3x5HKbTvN4+DMt0HI7zeB4u18t2/nWY5tv5ehzW6fzUfsh8+Toft8s6bOtwGj+1Fxmm9fkFpuE8Pl7GYTzNP2+/th8w3cb1u5/39XrantZt/Dj8sA5fp9t1mK7L/rvHw2Fb9l+/Dn/dlvU6HLfry4+8//tpHG7Tp+38cfhze9PDob3PcfhpXI7D4/Zpuj3epsuH9m7bK43DOv40n8f275fxcli39vuXdfjx37b4+B/+nU46/e+dHh7+uM3LMG7tA7Z3dRqm9ovm27y1z/P8a+fL8GW6HG/Trf2m9jdft9PTto7rtP/y9o+mZWkf/XpqrzRPz21/3vZPvv+0+XR6fdFWahs+T9vjPK7DZTudxuHzeJhP87K//muS21uTc/sM+1/P9yjX49yqzI+XeVnm8/DzNg+fTuPl2N7B022clql9KXvgcW0v+O3bbT4Nx+k0XfZPuj1u7dPsn/PlnbQ3v7+Tcf7tO/kvhnPYlzPdhn0589t0frucNp3L/OlL+9Dzch/QfDl8N532Kv9yOC+7ua9lfRrv39Bf1uGX9t6G9mHO7WWH87z/xdf2t+P5w15iaS+5rLftOEx/m26Huc1gna+XYf9o58P19tTe7rK19/rUPsrp2ma77r9nXk77m7m/7vzUfu8+tcP13N7u9e2L/DhYyD8t5OHhT+1bOs3tz97rY6G9lWHZv7GxfROf2k9pP3f+3JoM16f7N9E+9P4Kl/lLe9X53L6Q43z//s/7fuZje7dtI+fxW3vjT6fxcN/A5/3/h6fr/eOMy7I/AuLm+d7jzHiA7e8j6bHu+Ps/d/rh7Y3/4xPfP+fz/zwXef0U+yd6CXn/0Pcy7bO8NN4bvQTeP+/6lvk5yEvp7z5++6jtr7/7/Pcez19AS/HS6zXCXub+Gq91tpdv4O07+Z3saf9j9gfzTftadPp9dBLCYHTC7ABExTkGs8MWgtmYjdl9HH+YjdkV56tTxU5CGIxOmB2AqDjHYHbYQjAbszG7j+MPszG74nx1qthJCIPRCbMDEBXnGMwOWwhmYzZm93H8YTZmV5yvThU7CWEwOmF2AKLiHIPZYQvBbMzG7D6OP8zG7Irz1aliJyEMRifMDkBUnGMwO2whmI3ZmN3H8YfZmF1xvjpV7CSEweiE2QGIinMMZoctBLMxG7P7OP4wG7Mrzlenip2EMBidMDsAUXGOweywhWA2ZmN2H8cfZmN2xfnqVLGTEAajE2YHICrOMZgdthDMxmzM7uP4w2zMrjhfnSp2EsJgdMLsAETFOQazwxaC2ZiN2X0cf5iN2RXnq1PFTkIYjE6YHYCoOMdgdthCMBuzMbuP4w+zMbvifHWq2EkIg9EJswMQFecYzA5bCGZjNmb3cfxhNmZXnK9OFTsJYTA6YXYAouIcg9lhC8FszMbsPo4/zMbsivPVqWInIQxGJ8wOQFScYzA7bCGYjdmY3cfxh9mYXXG+OlXsJITB6ITZAYiKcwxmhy0EszEbs/s4/jAbsyvOV6eKnYQwGJ0wOwBRcY7B7LCFYDZmY3Yfxx9mY3bF+epUsZMQBqMTZgcgKs4xmB22EMzGbMzu4/jDbMyuOF+dKnYSwmB0wuwARMU5BrPDFoLZmI3ZfRx/mI3ZFeerU8VOQhiMTpgdgKg4x2B22EIwG7Mxu4/jD7Mxu+J8darYSQiD0QmzAxAV5xjMDlsIZmM2Zvdx/GE2Zlecr04VOwlhMDphdgCi4hyD2WELwWzMxuw+jj/MxuyK89WpYichDEYnzA5AVJxjMDtsIZiN2Zjdx/GH2Zhdcb46VewkhMHohNkBiIpzDGaHLQSzMRuz+zj+MBuzK85Xp4qdhDAYnTA7AFFxjsHssIVgNmZjdh/HH2ZjdsX56lSxkxAGoxNmByAqzjGYHbYQzMZszO7j+MNszK44X50qdhLCYHTC7ABExTnmfZj98OBPkCeNTp7InsgZT2QXny4+XXy6+Oz8+HPx6eKz4nx1qthJCIPRCbMDEBXnGMwOWwhmYzZm93H8YTZmV5yvThU7CWEwOmF2AKLiHIPZYQvBbMzG7D6OP8zG7Irz1aliJyEMRifMDkBUnGMwO2whmI3ZmN3H8YfZmF1xvjpV7CSEweiE2QGIinMMZoctBLMxG7P7OP4wG7Mrzlenip2EMBidMDsAUXGOweywhWA2ZmN2H8cfZmN2xfnqVLGTEAajE2YHICrOMZgdthDMxmzM7uP4w2zMrjhfnSp2EsJgdMLsAETFOQazwxaC2ZiN2X0cf5iN2RXnq1PFTkIYjE6YHYCoOMdgdthCMBuzMbuP4w+zMbvifHWq2EkIg9EJswMQFecYzA5bCGZjNmb3cfxhNmZXnK9OFTsJYTA6YXYAouIcg9lhC8FszMbsPo4/zMbsivPVqWInIQxGJ8wOQFScYzA7bCGYjdmY3cfxh9mYXXG+OlXsJITB6ITZAYiKcwxmhy0EszEbs/s4/jAbsyvOV6eKnYQwGJ0wOwBRcY7B7LCFYDZmY3Yfxx9mY3bF+epUsZMQBqMTZgcgKs4xmB22EMzGbMzu4/jDbMyuOF+dKnYSwmB0wuwARMU5BrPDFoLZmI3ZfRx/mI3ZFeerU8VOQhiMTpgdgKg4x2B22EIwG7Mxu4/jD7Mxu+J8darYSQiD0QmzAxAV5xjMDlsIZmM2Zvdx/GE2Zlecr04VOwlhMDphdgCi4hyD2WELwWzMxuw+jj/MxuyK89WpYichDEYnzA5AVJxjMDtsIZiN2Zjdx/GH2Zhdcb46VewkhMHohNkBiIpzDGaHLQSzMRuz+zj+MBuzK85Xp4qdhDAYnTA7AFFxjsHssIVgNmZjdh/HH2ZjdsX56lSxkxAGoxNmByAqzjGYHbYQzMZszO7j+MNszK44X50qdhLCYHTC7ABExTkGs8MWgtmYjdl9HH+YjdkV56tTxU5CGIxOmB2AqDjHYHbYQjAbszG7j+MPszG74nx1qthJCIPRCbMDEBXnmPdh9sODP0AeNDp5IHsgRzyQ3Xu693Tv6d6z8+PPvad7z4rz1aliJyEMRifMDkBUnGMwO2whroQ9g3VyVr3/k8hZ5axyJexK2JVwhePPlbAr4Yrz1aliJyEMRifMDkBUnGMwO2whroQ9g3VyVr3/k8hZ5axyJexK2JVwhePPlbAr4Yrz1aliJyEMRifMDkBUnGMwO2whroQ9g3VyVr3/k8hZ5axyJexK2JVwhePPlbAr4Yrz1aliJyEMRifMDkBUnGMwO2whroQ9g3VyVr3/k8hZ5axyJexK2JVwhePPlbAr4Yrz1aliJyEMRifMDkBUnGMwO2whvpC4L8TD3qGok/94eO8nkf94cFa5o3dH746+wvHnjt4dfcX56lSxkxAGoxNmByAqzjGYHbYQV8KewTo5q97/SeSscla5EnYl7Eq4wvHnStiVcMX56lSxkxAGoxNmByAqzjGYHbaQh4e/A1BLBwjvMF5fdAoAAFipAwBQSwMEFAAIAAgAe1pLVAAAAAAAAAAAGOQDAAgAIAAyNTVrLnR4dFVUDQAHSzgGYj01M2JLOAZidXgLAAEEYmxgCwQBAmAL7dhNctvoFUbhuVaBBbi8h65k2JVJKguASVhGmj8yAThprz4fKCl2upJUepDS6+8+E1u2KAI4OMTVuT9fb9N5mJ+W7Twcr6frbVjmdRjP0/puOFwvy7RO69b+czy21xzmy+Mwneb19m5YpuNwnMfzcLletvOvwzTfztfjsE7np/Ym8+XLfNwu67Ctw2n80A4yTOvzAabhPD5exmE8zZ+3X9sbTLdx/e79vlxP29O6je+Hn9bhy3S7DtN12X96PBy2ZX/9Ovx1W9brcNyuL295//40Drfpw3Z+P/y5nfRwaOc5Dr+My3F43D5Mt8fbdHnXzrYdaRzW8Zf5PLbvL+PlsG7t55d1+Pk/snj/X76HE06/n9PDwx+3eRnGrV1gO6vTMLUXzbd5a9fz/Nr5MnyaLsfbdGs/1P7xZTs9beu4TvvL239Ny9Iu/XpqR5qnZ7aft/3K93ebT6fXgzZS2/Bx2h7ncR0u2+k0Dh/Hw3yal/34r0hu35ic2zXsX893KNfj3KjMj5d5Webz8Hmbhw+n8XJsZ/B0G6dlajdlBzyu7YBfv97m03CcTtNlv9LtcWtXs1/ny5m0k9/PZJx/eyb/gziH3ZzpNuzmzN/U+a05TZ3L/OFTu+h5uQs0Xw7fqdOO8m/FefHmbsv6NN7v0F/W4W/t3IZ2Med22OE87198af8cz+92Eks75LLetuMw/X26HeamwTpfL8N+aefD9fbUTnfZ2rk+tUs5XZu26/4z83LaT+Z+3Pmp/eyu2uF6bqd7/XYj3w8M+RdDHh7+1O7SaW6fvdfHQjuVYdnv2NjuxIf2Lu1954+NyXB9ut+JdtH7ES7zp3bU+dxuyHG+3//z7s98bGfbHDmPX9uJP53Gw92Bj/vfw9P1fjnjsuyPgDg931rOjAfYfh5Jj3Xj7//M6advJ/7PK75f5/Mfz0Rer2K/oheQ94u+k2nX8sJ4Z/QCeL/e9RvmZyAvpL+7/Hap7evvrv/O4/kGNBQvvF4h7GTux3ils73cgW/35Afxaf+Y/YG+abcFpx+DExCEwUlmB0RUXMfI7DBDZLbMltl9jD+ZLbMr6otTRU5AEAYnmR0QUXEdI7PDDJHZMltm9zH+ZLbMrqgvThU5AUEYnGR2QETFdYzMDjNEZstsmd3H+JPZMruivjhV5AQEYXCS2QERFdcxMjvMEJkts2V2H+NPZsvsivriVJETEITBSWYHRFRcx8jsMENktsyW2X2MP5ktsyvqi1NFTkAQBieZHRBRcR0js8MMkdkyW2b3Mf5ktsyuqC9OFTkBQRicZHZARMV1jMwOM0Rmy2yZ3cf4k9kyu6K+OFXkBARhcJLZAREV1zEyO8wQmS2zZXYf409my+yK+uJUkRMQhMFJZgdEVFzHyOwwQ2S2zJbZfYw/mS2zK+qLU0VOQBAGJ5kdEFFxHSOzwwyR2TJbZvcx/mS2zK6oL04VOQFBGJxkdkBExXWMzA4zRGbLbJndx/iT2TK7or44VeQEBGFwktkBERXXMTI7zBCZLbNldh/jT2bL7Ir64lSRExCEwUlmB0RUXMfI7DBDZLbMltl9jD+ZLbMr6otTRU5AEAYnmR0QUXEdI7PDDJHZMltm9zH+ZLbMrqgvThU5AUEYnGR2QETFdYzMDjNEZstsmd3H+JPZMruivjhV5AQEYXCS2QERFdcxMjvMEJkts2V2H+NPZsvsivriVJETEITBSWYHRFRcx8jsMENktsyW2X2MP5ktsyvqi1NFTkAQBieZHRBRcR0js8MMkdkyW2b3Mf5ktsyuqC9OFTkBQRicZHZARMV1jMwOM0Rmy2yZ3cf4k9kyu6K+OFXkBARhcJLZAREV1zEyO8wQmS2zZXYf409my+yK+uJUkRMQhMFJZgdEVFzHyOwwQ2S2zJbZfYw/mS2zK+qLU0VOQBAGJ5kdEFFxHSOzwwyR2TJbZvcx/mS2zK6oL04VOQFBGJxkdkBExXWMzA4zRGbLbJndx/iT2TK7or44VeQEBGFwktkBERXXMTI7zBCZLbNldh/jT2bL7Ir64lSRExCEwUlmB0RUXMe8TWY/PPgEedLg5InsiZzxRLb4tPi0+LT47Hz8WXxafFbUF6eKnIAgDE4yOyCi4jpGZocZIrNltszuY/zJbJldUV+cKnICgjA4yeyAiIrrGJkdZojMltkyu4/xJ7NldkV9carICQjC4CSzAyIqrmNkdpghMltmy+w+xp/MltkV9cWpIicgCIOTzA6IqLiOkdlhhshsmS2z+xh/MltmV9QXp4qcgCAMTjI7IKLiOkZmhxkis2W2zO5j/MlsmV1RX5wqcgKCMDjJ7ICIiusYmR1miMyW2TK7j/Ens2V2RX1xqsgJCMLgJLMDIiquY2R2mCEyW2bL7D7Gn8yW2RX1xakiJyAIg5PMDoiouI6R2WGGyGyZLbP7GH8yW2ZX1BenipyAIAxOMjsgouI6RmaHGSKzZbbM7mP8yWyZXVFfnCpyAoIwOMnsgIiK6xiZHWaIzJbZMruP8SezZXZFfXGqyAkIwuAkswMiKq5jZHaYITJbZsvsPsafzJbZFfXFqSInIAiDk8wOiKi4jpHZYYbIbJkts/sYfzJbZlfUF6eKnIAgDE4yOyCi4jpGZocZIrNltszuY/zJbJldUV+cKnICgjA4yeyAiIrrGJkdZojMltkyu4/xJ7NldkV9carICQjC4CSzAyIqrmNkdpghMltmy+w+xp/MltkV9cWpIicgCIOTzA6IqLiOkdlhhshsmS2z+xh/MltmV9QXp4qcgCAMTjI7IKLiOkZmhxkis2W2zO5j/MlsmV1RX5wqcgKCMDjJ7ICIiusYmR1miMyW2TK7j/Ens2V2RX1xqsgJCMLgJLMDIiquY2R2mCEyW2bL7D7Gn8yW2RX1xakiJyAIg5PMDoiouI6R2WGGyGyZLbP7GH8yW2ZX1BenipyAIAxOMjsgouI6RmaHGSKzZbbM7mP8yWyZXVFfnCpyAoIwOMnsgIiK6xiZHWaIzJbZMruP8SezZXZFfXGqyAkIwuAkswMiKq5jZHaYITJbZsvsPsafzJbZFfXFqSInIAiDk8wOiKi4jpHZYYbIbJkts/sYfzJbZlfUF6eKnIAgDE4yOyCi4jrmbTL74cEHyIMGJw9kD+SIB7K9p72nvae9Z+fjz97T3rOivjhV5AQEYXCS2QERFdcxMjvMECthz2CczKq3fxKZVWaVlbCVsJVwhfFnJWwlXFFfnCpyAoIwOMnsgIiK6xiZHWaIlbBnME5m1ds/icwqs8pK2ErYSrjC+LMSthKuqC9OFTkBQRicZHZARMV1jMwOM8RK2DMYJ7Pq7Z9EZpVZZSVsJWwlXGH8WQlbCVfUF6eKnIAgDE4yOyCi4jpGZocZYiXsGYyTWfX2TyKzyqyyErYSthKuMP6shK2EK+qLU0VOQBAGJ5kdEFFxHSOzwwxxQ+JuiIe9oYiTXx7e+knklwezyo7ejt6OvsL4s6O3o6+oL04VOQFBGJxkdkBExXWMzA4zxErYMxgns+rtn0RmlVllJWwlbCVcYfxZCVsJV9QXp4qcgCAMTjI7IKLiOkZmhxny4DPjM+MzYzVlNWU1VfBXRqspq6mK+uJUkRMQhMHJaiogouI6RmaHGWI15TPjM2M1ZTVlNVXxV0arKaupivriVJETEITByWoqIKLiOkZmhxliNeUz4zNjNWU1ZTVV8VdGqymrqYr64lSRExCEwclqKiCi4jpGZocZ8vDwu17uxd+9GLsfj93DPwBQSwcIPFXRB/0KAAAY5AMAUEsBAhQDFAAIAAgAKlpLVO8wXl90CgAAWKkDAAgAIAAAAAAAAAAAAKSBAAAAADI0MGsudHh0VVQNAAewNwZiT0czYsU3BmJ1eAsAAQRibGALBAECYAtQSwECFAMUAAgACAB7WktUPFXRB/0KAAAY5AMACAAgAAAAAAAAAAAApIHKCgAAMjU1ay50eHRVVA0AB0s4BmI9NTNiSzgGYnV4CwABBGJsYAsEAQJgC1BLBQYAAAAAAgACAKwAAAAdFgAAAAA="; @@ -40,8 +39,6 @@ public class FormSolutionsFilesTestFactory { public static final String JSON_CONTENT = "{}"; - public static final FormData REPRESENTATIONS = FormSolutionsFilesTestFactory.createBuilder().formData(Map.of(PDF, PDF_ENCODED)).build(); - public static FormData create() { return FormSolutionsFilesTestFactory.createBuilder().build(); } diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java similarity index 50% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java index 6f0083b92edca24db4f01333c735b79f9119986a..e86f541db252cb6f51d2e5a44977647b325b379e 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointITCase.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperITCase.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,50 +21,52 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; -import static de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; +import static de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory.*; import static org.assertj.core.api.Assertions.*; +import java.io.InputStream; import java.util.List; import java.util.Map; +import org.assertj.core.api.ObjectAssert; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.mockito.Mock; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.test.context.ActiveProfiles; -import org.testcontainers.shaded.org.bouncycastle.util.encoders.Base64; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter; +import lombok.SneakyThrows; @SpringBootTest @ActiveProfiles({ "local", "itcase" }) -class SendFormEndpointITCase { +class FormSolutionsRequestMapperITCase { - @SpyBean - private SendFormEndpoint endpoint; + private static final String COMPONENTS = "components"; + private static final String PANELS = "panels"; - @Mock - private Request request; + @SpyBean + private FormSolutionsRequestMapper mapper; @Nested class TestParseExampleData { @Test void shouldParseData() { - var parsed = endpoint.parseRequestData(SIMPLE_JSON_DATA); + var parsed = parseRequestData(SIMPLE_JSON_DATA); assertThat(parsed).isNotNull(); } @Test void shouldContainRawData() { - var parsed = endpoint.parseRequestData(SIMPLE_JSON_DATA); + var parsed = parseRequestData(SIMPLE_JSON_DATA); assertThat(parsed.getFormData()).isNotNull(); } @@ -82,7 +84,7 @@ class SendFormEndpointITCase { void shouldHaveIdentifier() { var panel = parseAndGetPanel(); - assertThat(panel.get(IDENTIFIER)).isNotNull(); + assertThat(panel.get(FormSolutionsEngineBasedAdapter.IDENTIFIER_KEY)).isNotNull(); } @Test @@ -96,7 +98,7 @@ class SendFormEndpointITCase { } private Map<String, Object> parseAndGetPanel() { - return SendFormEndpointITCase.this.parseAndGetPanel(SIMPLE_JSON_DATA); + return FormSolutionsRequestMapperITCase.this.parseAndGetPanel(SIMPLE_JSON_DATA); } } @@ -105,7 +107,7 @@ class SendFormEndpointITCase { @Test void shouldParseData() { - var parsed = endpoint.parseRequestData(NESTED_COMPONENTS_JSON); + var parsed = parseRequestData(NESTED_COMPONENTS_JSON); assertThat(parsed).isNotNull(); } @@ -122,7 +124,7 @@ class SendFormEndpointITCase { void shouldHaveIdentifier() { var component = parseAndGetComponent(); - assertThat(component).containsEntry(IDENTIFIER, OBJEKTGRUPPE_0); + assertThat(component).containsEntry(FormSolutionsEngineBasedAdapter.IDENTIFIER_KEY, OBJEKTGRUPPE_0); } @Test @@ -138,7 +140,7 @@ class SendFormEndpointITCase { } private Map<String, Object> parseAndGetPanel() { - return SendFormEndpointITCase.this.parseAndGetPanel(NESTED_COMPONENTS_JSON); + return FormSolutionsRequestMapperITCase.this.parseAndGetPanel(NESTED_COMPONENTS_JSON); } } @@ -146,49 +148,59 @@ class SendFormEndpointITCase { @Nested class TestParsePdfRepresentation { - private static final String PARSED_REPRESENTATIONS = "parsedRepresentations"; - @Test - void shouldHavePdf() { - var parsed = endpoint.parseRequestData(PDF_REPRESENTATION_JSON); + void shouldHaveRepresentations() { + var parsed = parseRequestData(PDF_REPRESENTATION_JSON); - assertThat(getRepresentation(parsed.getFormData())).isNotNull(); - assertThat(getRepresentation(parsed.getFormData()).getContent()).isEqualTo(Base64.decode(PDF_VALUE.getBytes())); + assertThat(parsed.getRepresentations()).hasSize(2); } - @SuppressWarnings("unchecked") - private IncomingFile getRepresentation(Map<String, Object> data) { - return ((List<IncomingFile>) ((Map<String, Object>) data.get(FIELD_NAME_MAPPED_FILES)).get(PARSED_REPRESENTATIONS)).get(0); + @Test + @SneakyThrows + void shouldHavePdf() { + var parsed = parseRequestData(PDF_REPRESENTATION_JSON); + + ObjectAssert<IncomingFile> firstRepresentationAssert = assertThat(parsed.getRepresentations()) + .filteredOn(inFile -> inFile.getContentType().equals("application/pdf")).singleElement(); + firstRepresentationAssert.extracting(IncomingFile::getName).isEqualTo("eingang.pdf"); + firstRepresentationAssert.extracting(IncomingFile::getContentStream).extracting(stream -> toArray(stream)) + .isEqualTo(PDF_VALUE_DECODED.getBytes()); } } @Nested class TestParseAttachmentZip { - private static final String PARSED_ATTACHMENTS = "parsedAttachments"; - @Test + @SneakyThrows void shouldHaveZip() { - var parsed = endpoint.parseRequestData(ZIP_ATTACHMENT_JSON); + var parsed = parseRequestData(ZIP_ATTACHMENT_JSON); - assertThat(getAttachment(getFiles(parsed.getFormData()))).isNotNull(); - assertThat(getAttachment(getFiles(parsed.getFormData())).getContent()).isEqualTo(Base64.decode(ZIP_VALUE.getBytes())); + ObjectAssert<IncomingFileGroup> firstAttachmentAssert = assertThat(parsed.getAttachments()).hasSize(1).first(); + firstAttachmentAssert.extracting(IncomingFileGroup::getName).isEqualTo(FormSolutionsAttachmentsMapper.FILE_GROUP_ZIP_NAME); + var attachmentFileAssert = firstAttachmentAssert.extracting(fileGroup -> fileGroup.getFiles().get(0)); + attachmentFileAssert.extracting(IncomingFile::getName).isEqualTo("attachments.zip"); + attachmentFileAssert.extracting(file -> toArray(file.getContentStream())).isEqualTo(ZIP_VALUE_DECODED.getBytes()); } - @SuppressWarnings("unchecked") - private IncomingFile getAttachment(Map<String, Object> files) { - return ((List<IncomingFileGroup>) files.get(PARSED_ATTACHMENTS)).get(0).getFiles().get(0); - } + } + + // TODO remove this method when TestUtils is not throwing Exception anymore. + @SneakyThrows + private byte[] toArray(InputStream stream) { + return TestUtils.contentStreamToByteArray(stream); } @SuppressWarnings("unchecked") private Map<String, Object> parseAndGetPanel(String json) { - var data = (Map<String, Object>) endpoint.parseRequestData(json).getFormData().get(ASSISTANT); + var data = (Map<String, Object>) parseRequestData(json).getFormData().get(FormSolutionsEngineBasedAdapter.ASSISTANT); return ((List<Map<String, Object>>) data.get(PANELS)).get(0); } - @SuppressWarnings("unchecked") - private Map<String, Object> getFiles(Map<String, Object> data) { - return (Map<String, Object>) data.get(FIELD_NAME_MAPPED_FILES); + private FormData parseRequestData(String json) { + var file = TempFileUtils.writeTmpFile(json); + var result = mapper.map(file); + file.delete(); + return result; } } diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..48a09ae9344fe7c8ad8332af40a545865b37bdd4 --- /dev/null +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormSolutionsRequestMapperTest.java @@ -0,0 +1,289 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formsolutions; + +import static de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory.*; +import static de.ozgcloud.eingang.formsolutions.FormSolutionsRequestMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.io.File; +import java.io.InputStream; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import lombok.SneakyThrows; + +class FormSolutionsRequestMapperTest { + + private static final String COMPONENTS = "components"; + private static final String STRING_VALUE = "stringValue"; + private static final String PANELS = "panels"; + + @Spy + @InjectMocks + private FormSolutionsRequestMapper mapper; + + @Mock + private FormSolutionsAttachmentsMapper attachmentMapper; + + @Spy + private ObjectMapper objectMapper = new ObjectMapper(); + + private File simpleJsonFile; + private File nestedComponenetJsonFile; + + @BeforeEach + void writeJsonFile() { + simpleJsonFile = TempFileUtils.writeTmpFile(SIMPLE_JSON_DATA); + nestedComponenetJsonFile = TempFileUtils.writeTmpFile(NESTED_COMPONENTS_JSON); + } + + @AfterEach + void delJsonFile() { + simpleJsonFile.delete(); + nestedComponenetJsonFile.delete(); + } + + @Nested + class TestJsonToEingangMapping { + + @Test + void shouldMapControlValues() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(eingang).isNotNull().usingRecursiveComparison() + .ignoringFields("zip", "pdf", "assistant").isEqualTo(FormSolutionsEingangTestFactory.create()); + } + + @Test + void shouldHaveAssistantData() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(eingang.getAssistant()).isNotEmpty(); + } + + @Test + @SneakyThrows + void shouldHandleJsonException() throws JsonMappingException, JsonProcessingException { + doThrow(JsonProcessingException.class).when(objectMapper).readValue(any(InputStream.class), eq(FormSolutionsEingang.class)); + + assertThatThrownBy(() -> mapper.mapEingang(simpleJsonFile)).isInstanceOf(TechnicalException.class); + } + + @Test + void shouldContainFormIdentifier() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(eingang.getAssistant()).containsEntry(IDENTIFIER_KEY, IDENTIFIER_VALUE); + } + + @Nested + class TestPanels { + @Test + void shouldContainPanels() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getPanels(eingang)).isNotNull(); + } + + @Test + void shouldContainPanelIdentifier() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getPanels(eingang).get(0)).containsEntry(IDENTIFIER_KEY, PANEL_ID); + } + + @Test + void shouldContainPanelComponets() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getPanels(eingang).get(0).get(COMPONENTS)).isNotNull(); + } + + @Test + void shouldContainTextComponets() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getComponents(eingang).get(0)) + .containsEntry(IDENTIFIER_KEY, COMPONENT_ID) + .containsEntry(STRING_VALUE, COMPONENT_VALUE); + } + + @Test + void shouldContainDateComponets() { + var eingang = mapper.mapEingang(simpleJsonFile); + + assertThat(getComponents(eingang).get(1)) + .containsEntry(IDENTIFIER_KEY, DATE_COMPONENT_ID) + .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); + } + + @Nested + class TestNestedPanels { + @Test + void shouldContainGroup() { + var eingang = mapper.mapEingang(nestedComponenetJsonFile); + + assertThat(getComponents(eingang).get(0)).containsEntry(IDENTIFIER_KEY, OBJEKTGRUPPE_0); + } + + @Test + void shouldContainDateField() { + var eingang = mapper.mapEingang(nestedComponenetJsonFile); + + assertThat(getNestedComponents(eingang).get(0)) + .containsEntry(IDENTIFIER_KEY, DATE_COMPONENT_ID) + .containsEntry(STRING_VALUE, DATE_COMPONENT_VALUE); + } + } + } + + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getComponents(FormSolutionsEingang eingang) { + return (List<Map<String, Object>>) getPanels(eingang).get(0).get(COMPONENTS); + } + + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getNestedComponents(FormSolutionsEingang eingang) { + return (List<Map<String, Object>>) ((List<Map<String, Object>>) getPanels(eingang).get(0).get(COMPONENTS)).get(0).get(COMPONENTS); + } + + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getPanels(FormSolutionsEingang eingang) { + return (List<Map<String, Object>>) eingang.getAssistant().getOrDefault(PANELS, Collections.emptyList()); + } + } + + @Nested + class TestFileMapping { + + @Nested + class TestMapFiles { + + private File jsonFile; + @Captor + private ArgumentCaptor<File> fileCaptor; + + @BeforeEach + void writeJsonFile() { + jsonFile = TempFileUtils.writeTmpFile(ATTACHMENTS_JSON); + } + + @AfterEach + void deleteTempFile() { + jsonFile.delete(); + } + + @Test + void shouldMapZipFile() { + var eingang = mapper.mapEingang(jsonFile); + + assertThat(eingang.getZip()).exists().content().isEqualTo(ZIP_VALUE_DECODED); + } + + @Test + void shouldCallAttachmentMappers() { + mapper.map(jsonFile); + + verify(attachmentMapper).mapAttachments(fileCaptor.capture()); + assertThat(fileCaptor.getValue()).content().isEqualTo(ZIP_VALUE_DECODED); + } + + @DisplayName("result should have mapped files field") + @Test + void shouldHaveMappedFilesField() { + IncomingFileGroup fileGroup = IncomingFileGroupTestFactory.create(); + when(attachmentMapper.mapAttachments(any())).thenReturn(List.of(fileGroup)); + + var result = mapper.map(jsonFile); + + assertThat(result.getAttachments()).containsExactly(fileGroup); + } + + @Test + void shouldAddRepresentations() { + var result = mapper.map(jsonFile); + + assertThat(result.getRepresentations()).hasSize(2); + } + + @Test + void shouldAddNumberOfRepresentations() { + var result = mapper.map(jsonFile); + + assertThat(result.getNumberOfRepresentations()).isEqualTo(2); + } + } + + } + + @Nested + class TestBuildFormDataMap { + + @Test + void shouldHavePostkorbHandle() { + var formData = mapper.buildFormDataMap(FormSolutionsEingangTestFactory.create()); + + assertThat(formData).containsEntry(FORMDATA_FIELD_POSTKORBHANDLE, POSTFACH_ID_STELLE); + } + + @Test + void shouldHaveZustaendigeStelle() { + var formData = mapper.buildFormDataMap(FormSolutionsEingangTestFactory.create()); + + assertThat(formData).containsKey(FORMDATA_FIELD_ZUSTAENDIGE_STELLE); + } + + @Test + void shouldHaveTransactionId() { + var formData = mapper.buildFormDataMap(FormSolutionsEingangTestFactory.create()); + + assertThat(formData).containsKey(FORMDATA_FIELD_TRANSACTION_ID); + } + } + +} diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormsolutionsAdapterApplicationTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java similarity index 87% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormsolutionsAdapterApplicationTest.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java index f6bfea00f362bededd85f54fd694f98353b28b4a..d1b16f68db65f43102fadacbb29144254d274689 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/FormsolutionsAdapterApplicationTest.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsAdapterApplicationTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,12 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -import de.itvsh.kop.eingangsadapter.Application; +import de.ozgcloud.eingang.Application; @SpringBootTest(classes = Application.class) class FormsolutionsAdapterApplicationTest { diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..3e5fb84ecf2ff247da62727bfe40517b294f9e28 --- /dev/null +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/FormsolutionsITCase.java @@ -0,0 +1,178 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formsolutions; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.verification.Timeout; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.util.ReflectionTestUtils; + +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.router.VorgangManagerServerResolver; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangResponse; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import io.grpc.Channel; +import io.grpc.stub.CallStreamObserver; +import io.grpc.stub.ClientResponseObserver; + +@SpringBootTest +@DirtiesContext +@ActiveProfiles({ "local", "itcase" }) +public class FormsolutionsITCase { + + @Autowired + private SendFormEndpoint endpoint; + + @MockBean + private VorgangManagerServerResolver resolver; + + @Mock + private Request request; + + @Mock + private VorgangServiceBlockingStub blockingStub; + @Mock + private BinaryFileServiceStub fileStub; + @Mock + private CallStreamObserver<GrpcUploadBinaryFileRequest> fileStreamObserver; + + @BeforeEach + void initVorgangManagerResolver() { + when(resolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(any())).thenReturn(blockingStub); + when(resolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(any())).thenReturn(fileStub); + + Channel mockChannel = mock(Channel.class); + when(blockingStub.getChannel()).thenReturn(mockChannel ); + when(blockingStub.startCreation(any())).thenReturn(GrpcCreateVorgangResponse.newBuilder().setVorgangId("42").build()); + + when(fileStub.uploadBinaryFileAsStream(any())).thenReturn(fileStreamObserver); + } + + @Nested + class TestSendingVorgangBasicInformation { + + @Captor + private ArgumentCaptor<GrpcCreateVorgangRequest> createVorgangRequestCaptor; + + @BeforeEach + void init() { + when(request.getJSON()).thenReturn(loadTextFile("SimpleJsonWithAttachments.json")); + } + + @Test + void shouldContainZustaendigeStelle() { + new Thread(() -> endpoint.receiveForm(request)).start(); + + var request = getCreateVorgangRequest(); + + assertThat(request.getEingang().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("5678"); + } + + private GrpcCreateVorgangRequest getCreateVorgangRequest() { + verify(blockingStub, timeout(1000)).startCreation(createVorgangRequestCaptor.capture()); + return createVorgangRequestCaptor.getValue(); + } + } + + @Nested + class TestReceiveFormWithAttachments { + + @Captor + private ArgumentCaptor<ClientResponseObserver<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse>> observerCaptor; + + @Captor + private ArgumentCaptor<GrpcUploadBinaryFileRequest> requestCaptor; + + @BeforeEach + void init() { + when(request.getJSON()).thenReturn(loadTextFile("SimpleJsonWithAttachments.json")); + } + + @Test + void shouldSendContentOfAttachment() { + new Thread(() -> endpoint.receiveForm(request)).start(); + + var requests = getFileRequests(); + + var fileContent = requests.get(1).getFileContent(); + assertThat(fileContent.isEmpty()).isFalse(); + } + + @Test + void shouldHaveContentType() { + new Thread(() -> endpoint.receiveForm(request)).start(); + + var requests = getFileRequests(); + + var contentType = requests.get(0).getMetadata().getContentType(); + assertThat(contentType).isEqualTo("application/pdf"); + } + + @Test + void shouldHaveFileSize() { + new Thread(() -> endpoint.receiveForm(request)).start(); + + var requests = getFileRequests(); + + var size = requests.get(0).getMetadata().getSize(); + assertThat(size).isEqualTo(6788); + } + + private List<GrpcUploadBinaryFileRequest> getFileRequests() { + verify(fileStub, timeout(1000)).uploadBinaryFileAsStream(observerCaptor.capture()); + var onReadyHandler = (Runnable) ReflectionTestUtils.getField(observerCaptor.getValue(), "onReadyHandler"); + onReadyHandler.run(); + + verify(fileStreamObserver, new Timeout(2000, times(2))).onNext(requestCaptor.capture()); + var requests = requestCaptor.getAllValues(); + assertThat(requests).isNotEmpty(); + return requests; + } + + } + + private static String loadTextFile(final String fileName) { + return TestUtils.loadTextFile(fileName); + } + +} diff --git a/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..c0765ca57699bab6a22a3e912cb0e40e84be24c1 --- /dev/null +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointITCase.java @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.formsolutions; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.nio.file.Files; +import java.util.List; +import java.util.Optional; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.boot.test.mock.mockito.SpyBean; +import org.springframework.context.ApplicationContext; +import org.springframework.core.io.Resource; +import org.springframework.test.context.ActiveProfiles; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.router.VorgangRemoteService; +import de.ozgcloud.vorgang.common.GrpcObject; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress; +import lombok.SneakyThrows; + +@ActiveProfiles({ "local", "itcase" }) +@SpringBootTest +class SendFormEndpointITCase { + + private final static String FILE_BASE_PATH = "classpath:formular/"; + + private final static String FORMULAR_JSON = "RequestJsonContent.json"; + + @Autowired + private ApplicationContext applicationContext; + + @SpyBean + private SendFormEndpoint endpoint; + @MockBean + private VorgangRemoteService vorgangRemoteService; + + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + @Captor + private ArgumentCaptor<GrpcEingang> grpcEingangCaptor; + @Captor + private ArgumentCaptor<Optional<String>> organisationsEinheitIdCaptor; + + @DisplayName("Receive form") + @Nested + class TestReceiveForm { + + @Mock + private Request request; + + @BeforeEach + void mockRequest() { + when(request.getJSON()).thenReturn(loadJsonContent()); + } + + @SneakyThrows + private String loadJsonContent() { + var resource = getResource(FORMULAR_JSON); + return Files.readString(resource.getFile().toPath()); + } + + @Test + void shouldCallRemoteService() { + callEndpoint(); + + verify(vorgangRemoteService).createVorgang(any(FormData.class), any(GrpcEingang.class), any()); + } + + @DisplayName("service konto") + @Nested + class TestServiceKonto { + + @Test + void shouldExist() { + callEndpoint(); + + assertThat(grpcEingangCaptor.getValue().getHeader().getServiceKonto()).isNotNull(); + } + + @Test + void shouldContainsType() { + callEndpoint(); + + assertThat(grpcEingangCaptor.getValue().getHeader().getServiceKonto().getType()).isEqualTo("OSI"); + } + + @Test + void shouldContainsPostfachAddress() { + callEndpoint(); + + assertThat(grpcEingangCaptor.getValue().getHeader().getServiceKonto().getPostfachAddressesList()).hasSize(1); + } + + @Nested + class TestPostfachAddress { + + @Test + void shouldContainsType() { + callEndpoint(); + + assertThat(getPostfachAddress().getType()).isEqualTo(1); + } + + @Test + void shouldContainsVersion() { + callEndpoint(); + + assertThat(getPostfachAddress().getVersion()).isEqualTo("1.0"); + } + + @Test + void shouldContainsIdentifier() { + callEndpoint(); + + assertThat(getPostfachAddress().getIdentifier()).isInstanceOf(GrpcObject.class); + assertThat(getPostfachAddress().getIdentifier().getPropertyList()).hasSize(1); + assertThat(getPostfachAddress().getIdentifier().getPropertyList().get(0).getName()).isEqualTo("postfachId"); + assertThat(getPostfachAddress().getIdentifier().getPropertyList().get(0).getValue(0)) + .isEqualTo("51522620-03d2-4507-b1f0-08d86920efed"); + } + + private GrpcPostfachAddress getPostfachAddress() { + List<GrpcPostfachAddress> addresses = grpcEingangCaptor.getValue().getHeader().getServiceKonto().getPostfachAddressesList(); + assertThat(addresses).isNotEmpty(); + return addresses.get(0); + } + } + } + + private void callEndpoint() { + endpoint.receiveForm(request); + + verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture()); + } + + private Resource getResource(String fileName) { + return applicationContext.getResource(FILE_BASE_PATH + fileName); + } + } +} \ No newline at end of file diff --git a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointTest.java b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java similarity index 55% rename from formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointTest.java rename to formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java index 0e4a74e9846f4e559e9f882e67d2b3bf45d7a99e..76cfc4a11a82452ae7efa24de798fa5c5c160ab1 100644 --- a/formsolutions-adapter/src/test/java/de/itvsh/kop/eingangsadapter/formsolutions/SendFormEndpointTest.java +++ b/formsolutions-adapter/src/test/java/de/ozgcloud/eingang/formsolutions/SendFormEndpointTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,23 +21,30 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.formsolutions; +package de.ozgcloud.eingang.formsolutions; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.io.File; + import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormSolutionsTestFactory; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +@DisplayName("Send form endpoint") class SendFormEndpointTest { @Spy @@ -46,49 +53,51 @@ class SendFormEndpointTest { @Mock private SemantikAdapter semantikAdapter; @Mock - private FormSolutionsRequestMapper incommingDataMapper; + private FormSolutionsRequestMapper requestMapper; + @DisplayName("receive form") @Nested - class TestBuildSuccessResponse { - @Test - void shouldContainOk() { - var response = endpoint.buildSuccessResponse(); + class TestReceiveForm { - assertThat(response.getStatus()).isEqualTo("OK"); - } - } + private final FormData formData = FormDataTestFactory.create(); - @Nested - class TestParseAndSendData { - static final Request REQUEST = new Request(); + @Captor + private ArgumentCaptor<File> fileCaptor; + + private static final Request REQUEST = new Request(); static { REQUEST.setJSON(FormSolutionsTestFactory.SIMPLE_JSON_DATA); } @BeforeEach void initTest() { - when(incommingDataMapper.map(any())).thenReturn(FormData.builder().build()); + when(requestMapper.map(any())).thenReturn(formData); } @Test - void shouldCallParseJson() { - endpoint.receiveForm(REQUEST); + void shouldCallRequestMapper() { + receiveForm(); - verify(endpoint).parseRequestData(FormSolutionsTestFactory.SIMPLE_JSON_DATA); + verify(requestMapper).map(fileCaptor.capture()); + assertThat(fileCaptor.getValue()).content().isEqualTo(FormSolutionsTestFactory.SIMPLE_JSON_DATA); } @Test - void shouldProcess() { - endpoint.receiveForm(REQUEST); + void shouldCallSemantikAdapter() { + receiveForm(); - verify(semantikAdapter).processFormData(any()); + verify(semantikAdapter).processFormData(formData); } @Test - void shouldCallMapper() { - endpoint.receiveForm(REQUEST); + void shouldResponseWithOk() { + var response = receiveForm(); + + assertThat(response.getStatus()).isEqualTo("OK"); + } - verify(incommingDataMapper).map(any()); + private Response receiveForm() { + return endpoint.receiveForm(REQUEST); } } -} +} \ No newline at end of file diff --git a/formsolutions-adapter/src/test/resources/SimpleJsonWithAttachments.json b/formsolutions-adapter/src/test/resources/SimpleJsonWithAttachments.json new file mode 100644 index 0000000000000000000000000000000000000000..dc83b5be3e52d95c91b0edd576b36debf7126b58 --- /dev/null +++ b/formsolutions-adapter/src/test/resources/SimpleJsonWithAttachments.json @@ -0,0 +1,21 @@ +{ + "assistant" : { + "identifier" : "AS_123", + "panels" : [ { + "identifier" : "Panel_0_1", + "components" : [ { + "identifier" : "Textfeld (einzeilig)", + "needed" : true, + "stringValue" : "kfjhkfjhk" + }, { + "identifier" : "Datums- / Uhrzeitfeld", + "needed" : true, + "stringValue" : "22.05.1996" + } ] + } ] + }, + "zustaendigeStelle" : "5678", + "postkorbhandle" : "51522620-03d2-4507-b1f0-08d86920efed", + "transactionId" : "KFAS_KOP_TEST-yCkgCdqG", + "zip": "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" +} \ No newline at end of file diff --git a/formsolutions-adapter/src/test/resources/application-itcase.yml b/formsolutions-adapter/src/test/resources/application-itcase.yml index 7167c08a8537d199731ba5e41dadce409df7b1aa..32884c9c88e3130125588ef77adbb1b97585a662 100644 --- a/formsolutions-adapter/src/test/resources/application-itcase.yml +++ b/formsolutions-adapter/src/test/resources/application-itcase.yml @@ -5,6 +5,6 @@ spring: grpc: client: - pluto-kiel: + vorgang-manager-kiel: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT \ No newline at end of file diff --git a/formsolutions-adapter/src/test/resources/formular/RequestJsonContent.json b/formsolutions-adapter/src/test/resources/formular/RequestJsonContent.json new file mode 100644 index 0000000000000000000000000000000000000000..8d1b0431f47bdd5017539b9dacbf82ee0fe31bdd --- /dev/null +++ b/formsolutions-adapter/src/test/resources/formular/RequestJsonContent.json @@ -0,0 +1,211 @@ +{ + "assistant": { + "i18n": { + "i18nItems": { + "de": "KFAS_KOP_TEST" + } + }, + "identifier": "KFAS_KOP_TEST", + "panels": [ + { + "identifier": "Antragstellende Person", + "components": [ + { + "identifier": "AS_Name1", + "needed": true, + "components": [ + { + "identifier": "AS_Name1", + "needed": true, + "components": [ + { + "identifier": "AS_Vorname", + "needed": true, + "stringValue": "Susanne" + }, + { + "identifier": "AS_Name", + "needed": true, + "stringValue": "Fischer" + }, + { + "identifier": "AS_Rufname", + "needed": true + }, + { + "identifier": "AS_Ordensname_Kuenstlername", + "needed": true + } + ] + } + ] + }, + { + "identifier": "AS_Adresse", + "needed": true, + "components": [ + { + "identifier": "AS_Adresse", + "needed": true, + "components": [ + { + "identifier": "Adresse", + "needed": true, + "components": [ + { + "identifier": "staat", + "needed": true, + "components": [ + { + "identifier": "staat", + "needed": true, + "stringValue": "DE" + } + ] + }, + { + "identifier": "AS_PLZ", + "needed": true, + "stringValue": "12345" + }, + { + "identifier": "AS_Ort", + "needed": true, + "stringValue": "Kiel" + }, + { + "identifier": "Bundesland", + "needed": true + }, + { + "identifier": "AS_Strasse", + "needed": true, + "stringValue": "Hauptstrasse" + }, + { + "identifier": "AS_Hausnummer", + "needed": true + } + ] + } + ] + } + ] + }, + { + "identifier": "AS_Kontaktdaten", + "needed": true, + "components": [ + { + "identifier": "AS_Kontaktdaten", + "needed": true, + "components": [ + { + "identifier": "AS_Telefon", + "needed": true + }, + { + "identifier": "AS_E-Mail", + "needed": true, + "stringValue": "jens.reese@mgm-tp.com" + }, + { + "identifier": "AS_Fax", + "needed": true + }, + { + "identifier": "ofsXX1_from_smail3", + "needed": true, + "stringValue": "jens.reese@mgm-tp.com" + } + ] + } + ] + } + ], + "needed": true + }, + { + "identifier": "Panel_0", + "components": [ + { + "identifier": "1208_Hund Grunddaten", + "needed": true, + "components": [ + { + "identifier": "1208_Hund Grunddaten", + "needed": true, + "components": [ + { + "identifier": "Hund_Name", + "needed": true, + "stringValue": "Waldi" + }, + { + "identifier": "Hund_Rasse", + "needed": true, + "stringValue": "Dackel" + }, + { + "identifier": "Hund_Geschlecht", + "needed": true, + "stringValue": "weiblich" + }, + { + "identifier": "Kastration", + "needed": true, + "stringValue": "nein" + }, + { + "identifier": "Hund_Geburtdatum", + "needed": true + }, + { + "identifier": "Hund_Alter", + "needed": true, + "stringValue": "5" + }, + { + "identifier": "Hund_ChipNr", + "needed": true, + "stringValue": "123456789123456" + }, + { + "identifier": "Hund_Taetowierungsnr", + "needed": false + }, + { + "needed": true + }, + { + "identifier": "Hund_Fellfarbe", + "needed": true, + "stringValue": "hell" + }, + { + "identifier": "Hund_Groesse", + "needed": true, + "stringValue": "40" + }, + { + "identifier": "Hund_Gewicht", + "needed": true, + "stringValue": "15" + } + ] + } + ] + } + ], + "needed": true + } + ] + }, + "transactionId": "KFAS_KOP_TEST-1", + "pdf": "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ZW5kb2JqCjI5IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAyOSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMyAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzNSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAx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bHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjQ5IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoZmlsZVVybCkvVHlwZS9Bbm5vdC9WKGh0dHBzJTNBJTJGJTJGa3VuZGVudGVzdC5mb3JtLXNvbHV0aW9ucy5kZSUyRm1ldGFmb3JtJTJGRm9ybS1Tb2x1dGlvbnMlMkZzaWQlMkZhc3Npc3RhbnQlMkY2MWIyMDhlODY2ZGExMjM2NDRjOTdlNTYlM0ZhbmxpZWdlbklkJTNEMTIzNCUyNm9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRCUzRDkwMzAyMjklMjZrb21tdW5hbHZlcndhbHR1bmdJZCUzRDEwMDAwMDAwMCUyNmNvbnNlbnRDb21wbGV0ZSUzRHRydWUlMjZjYWNoZUlEJTNENGZiNmI2ZTAtMGYxYy00OTcwLWI5ZWQtZGJmMjQyZDMzM2Y5JTI2Y2l0aXplblBvcnRhbExvZ2luU3VjY2VzcyUzRHRydWUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUwIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfVm9ybmFtZSkvVHlwZS9Bbm5vdC9WKFN1c2FubmUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfTmFtZSkvVHlwZS9Bbm5vdC9WKEZpc2NoZXIpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUyIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUnVmbmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTcgMCBSPj4vRmYgMD4+CmVuZG9iago1MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX09yZGVuc25hbWVfS3VlbnN0bGVybmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTggMCBSPj4vRmYgMD4+CmVuZG9iago1NCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKHN0YWF0KS9UeXBlL0Fubm90L1YoREUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU1IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUExaKS9UeXBlL0Fubm90L1YoMTIzNDUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfT3J0KS9UeXBlL0Fubm90L1YoS2llbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDIxIDAgUj4+L0ZmIDA+PgplbmRvYmoKNTcgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChCdW5kZXNsYW5kKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfU3RyYXNzZSkvVHlwZS9Bbm5vdC9WKEhhdXB0c3RyYd9lKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjMgMCBSPj4vRmYgMD4+CmVuZG9iago1OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0hhdXNudW1tZXIpL1R5cGUvQW5ub3QvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjAgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChBU19UZWxlZm9uKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjYxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfRS1NYWlsKS9UeXBlL0Fubm90L1Yoc3VzYW5uZS5maXNjaGVyQGRhdGFwb3J0LmRlKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjYgMCBSPj4vRmYgMD4+CmVuZG9iago2MiAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0ZheCkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjcgMCBSPj4vRmYgMD4+CmVuZG9iago2MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKG9mc1hYMV9mcm9tX3NtYWlsMykvVHlwZS9Bbm5vdC9WKHN1c2FubmUuZmlzY2hlckBkYXRhcG9ydC5kZSkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI4IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjQgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX05hbWUpL1R5cGUvQW5ub3QvVihIYXNzbykvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDM3IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjUgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX1Jhc3NlKS9UeXBlL0Fubm90L1YoU2No5GZlcmh1bmQpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZXNjaGxlY2h0KS9UeXBlL0Fubm90L1Yod2VpYmxpY2gpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY3IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoS2FzdHJhdGlvbikvVHlwZS9Bbm5vdC9WKG5laW4pL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiA0MCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZWJ1cnRkYXR1bSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDEgMCBSPj4vRmYgMD4+CmVuZG9iago2OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQWx0ZXIpL1R5cGUvQW5ub3QvVig1KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDIgMCBSPj4vRmYgMD4+CmVuZG9iago3MCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQ2hpcE5yKS9UeXBlL0Fubm90L1YoMTIzNDU2Nzg5MTIzNDU2KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDMgMCBSPj4vRmYgMD4+CmVuZG9iago3MSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfRmVsbGZhcmJlKS9UeXBlL0Fubm90L1YoaGVsbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDQ0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNzIgMCBvYmoKPDwvQlM8PC9T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NjYgMCBSIDY3IDAgUiA2OCAwIFIgNjkgMCBSIDcwIDAgUiA3MSAwIFIgNzIgMCBSIDczIDAgUl0vREEoL0hlbHYgMCBUZiAwIGcgKS9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4+PgplbmRvYmoKODMgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL0Fjcm9Gb3JtIDgyIDAgUi9QYWdlcyA3NSAwIFI+PgplbmRvYmoKeHJlZgowIDg0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyODA5IDAwMDAwIG4gCjAwMDAwMDQyMDYgMDAwMDAgbiAKMDAwMDAwNTYwNCAwMDAwMCBuIAowMDAwMDA1OTA5IDAwMDAwIG4gCjAwMDAwMDU5ODUgMDAwMDAgbiAKMDAwMDAwNjEyNSAwMDAwMCBuIAowMDAwMDA3NDA2IDAwMDAwIG4gCjAwMDAwMDYzNDEgMDAwMDAgbiAKMDAwMDAwNjU5NSAwMDAwMCBuIAowMDAwMDA2Njg0IDAwMDAwIG4gCjAwMDAwMDY5MzkgMDAwMDAgbiAKMDAwMDAzODI3NyAwMDAwMCBuIAowMDAwMDM4ODA0IDAwMDAwIG4gCjAwMDAwMDc1MzYgMDAwMDAgbiAKMDAwMDAwNzc5NCAwMDAwMCBuIAowMDAwMDA4MDUyIDAwMDAwIG4gCjAwMDAwMDgyNDcgMDAwMDAgbiAKMDAwMDAwODQ0MiAwMDAwMCBuIAowMDAwMDA4Njk1IDAwMDAwIG4gCjAwMDAwMDg5NTEgMDAwMDAgbiAKMDAwMDAwOTIwNiAwMDAwMCBuIAowMDAwMDA5NDAxIDAwMDAwIG4gCjAwMDAwMDk2NjQgMDAwMDAgbiAKMDAwMDAwOTg1OSAwMDAwMCBuIAowMDAwMDEwMDU0IDAwMDAwIG4gCjAwMDAwMTAzMzMgMDAwMDAgbiAKMDAwMDAxMDUyOCAwMDAwMCBuIAowMDAwMDEwODA3IDAwMDAwIG4gCjAwMDAwMTEwOTQgMDAwMDAgbiAKMDAwMDAxMTI3OCAwMDAwMCBuIAowMDAwMDExNDYzIDAwMDAwIG4gCjAwMDAwMTE2NDcgMDAwMDAgbiAKMDAwMDAxMTgzMiAwMDAwMCBuIAowMDAwMDEyMDE2IDAwMDAwIG4gCjAwMDAwMTIzMDMgMDAwMDAgbiAKMDAwMDAxMjQ4NyAwMDAwMCBuIAowMDAwMDEyNzQzIDAwMDAwIG4gCjAwMDAwMTMwMDYgMDAwMDAgbiAKMDAwMDAxMzI2NSAwMDAwMCBuIAowMDAwMDEzNTIwIDAwMDAwIG4gCjAwMDAwMTM3MTUgMDAwMDAgbiAKMDAwMDAxMzk2NyAwMDAwMCBuIAowMDAwMDE0MjI5IDAwMDAwIG4gCjAwMDAwMTQ0ODQgMDAwMDAgbiAKMDAwMDAxNDczNyAwMDAwMCBuIAowMDAwMDE0OTkwIDAwMDAwIG4gCjAwMDAwMTUxNjYgMDAwMDAgbiAKMDAwMDAxNTM1OCAwMDAwMCBuIAowMDAwMDE1ODQ0IDAwMDAwIG4gCjAwMDAwMTYwMjQgMDAwMDAgbiAKMDAwMDAxNjIwMSAwMDAwMCBuIAowMDAwMDE2MzcwIDAwMDAwIG4gCjAwMDAwMTY1NTYgMDAwMDAgbiAKMDAwMDAxNjcyNiAwMDAwMCBuIAowMDAwMDE2OTAwIDAwMDAwIG4gCjAwMDAwMTcwNzMgMDAwMDAgbiAKMDAwMDAxNzI0MiAwMDAwMCBuIAowMDAwMDE3NDI2IDAwMDAwIG4gCjAwMDAwMTc1OTggMDAwMDAgbiAKMDAwMDAxNzc2NyAwMDAwMCBuIAowMDAwMDE3OTY2IDAwMDAwIG4gCjAwMDAwMTgxMzEgMDAwMDAgbiAKMDAwMDAxODMzOSAwMDAwMCBuIAowMDAwMDE4NTE2IDAwMDAwIG4gCjAwMDAwMTg3MDAgMDAwMDAgbiAKMDAwMDAxODg4NiAwMDAwMCBuIAowMDAwMDE5MDYzIDAwMDAwIG4gCjAwMDAwMTkyMzggMDAwMDAgbiAKMDAwMDAxOTQxMiAwMDAwMCBuIAowMDAwMDE5NjAxIDAwMDAwIG4gCjAwMDAwMTk3ODIgMDAwMDAgbiAKMDAwMDAxOTk1OSAwMDAwMCBuIAowMDAwMDIwMTM2IDAwMDAwIG4gCjAwMDAwMjE0MTUgMDAwMDAgbiAKMDAwMDAyMTQ3NSAwMDAwMCBuIAowMDAwMDIzNjMzIDAwMDAwIG4gCjAwMDAwMjE5NTggMDAwMDAgbiAKMDAwMDAyMjA1MiAwMDAwMCBuIAowMDAwMDIzNzkwIDAwMDAwIG4gCjAwMDAwMzgwOTMgMDAwMDAgbiAKMDAwMDAzOTQ0OCAwMDAwMCBuIAowMDAwMDM5NzE0IDAwMDAwIG4gCnRyYWlsZXIKPDwvSW5mbyA0IDAgUi9JRCBbPGVlZWQ2YmEzM2YwZDY5ZjkzZWEyYzZjNWFhM2U0ZWJjPjw4ZGIwNDk0YjcxMmY5ZTE5NTJmZGMwMjI2Mjg3NzdhZj5dL1Jvb3QgODMgMCBSL1NpemUgODQ+PgolaVRleHQtNS41LjUKc3RhcnR4cmVmCjM5Nzc3CiUlRU9GCg==", + "kommunalverwaltungId": "100000000", + "postkorbhandle": "51522620-03d2-4507-b1f0-08d86920efed", + "anliegenId": "88888##99999", + "zustaendigeStelle": "9535669", + "zip": "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" +} \ No newline at end of file diff --git a/forwarder/pom.xml b/forwarder/pom.xml index f4cdb5c7d4516a27b43b42faeea48db14c4cda08..181cd781b22ef1305dfd1ec4821833c40e2ef85e 100644 --- a/forwarder/pom.xml +++ b/forwarder/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -23,14 +24,12 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> @@ -45,16 +44,13 @@ <dependencies> <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> - </dependency> - <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-interface</artifactId> + <version>${vorgang-manager.version}</version> </dependency> <!-- spring --> @@ -100,4 +96,4 @@ </plugin> </plugins> </build> -</project> \ No newline at end of file +</project> diff --git a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteria.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java similarity index 91% rename from forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteria.java rename to forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java index a0e668ddf918e8bb2b6630d29a1883d85cff4a43..7dcdae786ea405c9fc3ec3ab6d9775147f3b3429 100644 --- a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteria.java +++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteria.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import java.util.Optional; diff --git a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaMapper.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java similarity index 87% rename from forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaMapper.java rename to forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java index 10c0e33b9b39e50efb707c85185fc5062214c3aa..1e37f9d29c819b1aa2c792218f935dd280ce59bc 100644 --- a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaMapper.java +++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteCriteriaMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,14 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import java.util.Optional; import org.apache.commons.lang3.StringUtils; import org.mapstruct.Mapper; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteCriteria; +import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria; @Mapper interface RouteCriteriaMapper { diff --git a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcService.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java similarity index 83% rename from forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcService.java rename to forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java index 7fd3f1150d2fc8b5c5be6d8e24ad98d2ea1c896c..2fe08b793c2748689e731e3b9c0de2e058e80e00 100644 --- a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcService.java +++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcService.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,13 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import org.springframework.beans.factory.annotation.Autowired; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteForwardingRequest; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteForwardingResponse; -import de.itvsh.kop.eingangsadapter.router.GrpcEingangMapper; +import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest; +import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse; +import de.ozgcloud.eingang.router.GrpcEingangMapper; import io.grpc.stub.StreamObserver; import net.devh.boot.grpc.server.service.GrpcService; diff --git a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingService.java b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java similarity index 86% rename from forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingService.java rename to forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java index 0008b2761bd43b4c20e1488fff599ebf7ddced27..4daa8b2cdb7afa2e5cc2bac3057a40e3e7f4ad9d 100644 --- a/forwarder/src/main/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingService.java +++ b/forwarder/src/main/java/de/ozgcloud/eingang/forwarder/RouteForwardingService.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import org.springframework.stereotype.Service; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; @Service class RouteForwardingService { diff --git a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/ForwarderApplicationTest.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java similarity index 87% rename from forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/ForwarderApplicationTest.java rename to forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java index 18758f65643f773568f9d98fd268b0f1602a0705..939d08cd90ba04a46bde95141142f32107ec30dd 100644 --- a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/ForwarderApplicationTest.java +++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/ForwarderApplicationTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,12 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -import de.itvsh.kop.eingangsadapter.Application; +import de.ozgcloud.eingang.Application; @SpringBootTest(classes = Application.class) class ForwarderApplicationTest { diff --git a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/GrpcRouteForwardingRequestTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java similarity index 86% rename from forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/GrpcRouteForwardingRequestTestFactory.java rename to forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java index 088e2362513c1c546dd06e64078f377806f3983f..716b67b0c91675f67d3a314df59fafd68a686d4c 100644 --- a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/GrpcRouteForwardingRequestTestFactory.java +++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/GrpcRouteForwardingRequestTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteForwardingRequest; +import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingRequest; public class GrpcRouteForwardingRequestTestFactory { diff --git a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaTestFactory.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java similarity index 90% rename from forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaTestFactory.java rename to forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java index 0b0552b8857195633cd340f592eb23cbe45739d7..abe19da180a51df1fd7e8e455fd8605b866e2a9a 100644 --- a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteCriteriaTestFactory.java +++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteCriteriaTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,16 +21,16 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import java.util.Optional; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteCriteria; +import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria; public class RouteCriteriaTestFactory { public static final String GEMEINDE_SCHLUSSEL = "0815"; - public static final String WEBSERVICE_URL = "http://nimmerland.ozg-sh.de/ws"; + public static final String WEBSERVICE_URL = "http://nimmerland.by.kop-cloud.de/ws"; public static final String ORGANISATIONSEINHEITEN_ID = "4711"; public static RouteCriteria create() { diff --git a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcServiceTest.java b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java similarity index 91% rename from forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcServiceTest.java rename to forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java index baa1f5cea92def5cdb3076b5d7b33dc0d38e1241..335412742eb6b49c80de0e7b98221b409fee4803 100644 --- a/forwarder/src/test/java/de/itvsh/kop/eingangsadapter/forwarder/RouteForwardingGrpcServiceTest.java +++ b/forwarder/src/test/java/de/ozgcloud/eingang/forwarder/RouteForwardingGrpcServiceTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.forwarder; +package de.ozgcloud.eingang.forwarder; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; @@ -36,8 +36,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.forwarding.GrpcRouteForwardingResponse; -import de.itvsh.kop.eingangsadapter.router.GrpcEingangMapper; +import de.ozgcloud.eingang.forwarding.GrpcRouteForwardingResponse; +import de.ozgcloud.eingang.router.GrpcEingangMapper; import io.grpc.stub.StreamObserver; class RouteForwardingGrpcServiceTest { diff --git a/forwarder/src/test/resources/application.yml b/forwarder/src/test/resources/application.yml index 9ffb14ed87f4ac5b56fa404756d22f9c1f5b62e7..3306e2e6e31d54035f1197d1ec5061691b9964a4 100644 --- a/forwarder/src/test/resources/application.yml +++ b/forwarder/src/test/resources/application.yml @@ -9,11 +9,11 @@ logging: grpc: client: - pluto-nf: + vorgang-manager-nf: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT -kop: +ozgcloud: adapter: routingStrategy: SINGLE - targetPlutoName: nf \ No newline at end of file + targetVorgangManagerName: nf \ No newline at end of file diff --git a/intelliform-adapter/pom.xml b/intelliform-adapter/pom.xml index 4733d7b452fb8dfceda9b7a1bd675b625595aa59..67d77be0a4924c81c58bfe491821e07bf0fbf11f 100644 --- a/intelliform-adapter/pom.xml +++ b/intelliform-adapter/pom.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -24,16 +24,14 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> @@ -49,15 +47,15 @@ <dependencies> <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>semantik-adapter</artifactId> </dependency> @@ -116,10 +114,8 @@ <groupId>org.apache.ws.xmlschema</groupId> <artifactId>xmlschema-core</artifactId> </dependency> - <dependency> - <groupId>org.glassfish.jaxb</groupId> - <artifactId>jaxb-runtime</artifactId> - </dependency> + + <!-- end::springws[] --> <!-- Test --> @@ -166,9 +162,8 @@ <scope>test</scope> </dependency> - <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> @@ -181,11 +176,19 @@ <plugins> <!-- tag::wsdl[] --> <plugin> - <groupId>org.jvnet.jaxb2.maven2</groupId> - <artifactId>maven-jaxb2-plugin</artifactId> + <groupId>com.evolvedbinary.maven.jvnet</groupId> + <artifactId>jaxb30-maven-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> <configuration> + <strict>false</strict> <schemaLanguage>WSDL</schemaLanguage> - <generatePackage>de.itvsh.kop.eingangsadapter.intelliform</generatePackage> + <generatePackage>de.ozgcloud.eingang.intelliform</generatePackage> <schemas> <schema> <fileset> @@ -228,4 +231,27 @@ </plugins> </build> + <profiles> + <profile> + <id>ci-build</id> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <executions> + <execution> + <id>build-image</id> + <phase>install</phase> + <goals> + <goal>build-image</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + </project> diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/SemantikAdapterConfiguration.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java similarity index 81% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/SemantikAdapterConfiguration.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java index e84ae461c229ab13e9da821d16ff437c01ef1549..c44d37ae66da20119c68665fb22b90c349496a57 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/SemantikAdapterConfiguration.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/SemantikAdapterConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,13 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter; +package de.ozgcloud.eingang; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.AfmEngineBasedAdapter; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedAdapter; @Configuration public class SemantikAdapterConfiguration { @@ -36,4 +36,5 @@ public class SemantikAdapterConfiguration { public EngineBasedSemantikAdapter engineBasedSemantikAdapter() { return new AfmEngineBasedAdapter(); } + } \ No newline at end of file diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/WebServiceConfiguration.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java similarity index 96% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/WebServiceConfiguration.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java index 2d12fa7e7198818703292a7d0b513e3abd1ce668..3a5bc7814b9582cdd73ccd905e92b834b2a2fca1 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/WebServiceConfiguration.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/WebServiceConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter; +package de.ozgcloud.eingang; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.ApplicationContext; diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdder.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdder.java similarity index 51% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdder.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdder.java index f2acfadfc316eb9f5247fcdcff6ad155433b17ff..b163e567d1b83c23a42db8c1512cf0591b9669af 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdder.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdder.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,34 +21,39 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; @Component public class AttachmentsContentAdder { - List<IncomingFileGroup> addContentToAttachments(List<IncomingFileGroup> formDataFileGroups, List<IncomingFile> depositRequestFiles) { - - formDataFileGroups.stream() - .map(IncomingFileGroup::getFiles) - .forEach(files -> files - .forEach(file -> file.setContent(getFileFromDepositRequest(file.getVendorId(), depositRequestFiles).getContent()))); - - return formDataFileGroups; + public List<IncomingFileGroup> addContentToAttachments(List<IncomingFileGroup> formDataFileGroups, List<IncomingFile> depositRequestFiles) { + var fileGroups = new ArrayList<IncomingFileGroup>(formDataFileGroups.size()); + for (IncomingFileGroup fileGroup : formDataFileGroups) { + var files = fileGroup.getFiles().stream() + .map(file -> file.toBuilder().file(getContentStreamFromDepositRequest(file.getVendorId(), depositRequestFiles)).build()) + .toList(); + fileGroups.add(fileGroup.toBuilder().clearFiles().files(files).build()); + } + return Collections.unmodifiableList(fileGroups); } - private IncomingFile getFileFromDepositRequest(String attachmentVendorId, List<IncomingFile> depositRequestFiles) { + private File getContentStreamFromDepositRequest(String attachmentVendorId, List<IncomingFile> depositRequestFiles) { return depositRequestFiles.stream() .filter(depositFile -> depositFile.getVendorId().equals(attachmentVendorId)) + .map(IncomingFile::getFile) .findFirst() .orElseThrow(() -> new RuntimeException( - "DepositFiles does not contain content for (XML-Daten-)attachment with vendorId: " + attachmentVendorId)); + "DepositFiles does not contain content for attachment with vendorId: " + attachmentVendorId)); } } diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/CustomHeaderReader.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/CustomHeaderReader.java new file mode 100644 index 0000000000000000000000000000000000000000..b935816b487291de96bd498c314eba59b1ea7077 --- /dev/null +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/CustomHeaderReader.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.intelliform; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.function.Consumer; + +import org.springframework.stereotype.Component; +import org.w3c.dom.Attr; +import org.w3c.dom.Document; + +@Component +public class CustomHeaderReader { + + public static final String HEADER_POSTFACH_ID = "u:saml_legacypostkorbhandle"; + public static final String HEADER_VORNAME = "u:saml_givenname"; + public static final String HEADER_NACHNAME = "u:saml_surname"; + public static final String HEADER_GEBURTSORT = "u:saml_placeofbirth"; + public static final String HEADER_GEBURTSNAME = "u:saml_birthname"; + public static final String HEADER_EMAIL = "u:saml_mail"; + public static final String HEADER_TELEFON = "u:saml_telephonenumber"; + public static final String HEADER_STRASSE = "u:saml_postaladdress"; + public static final String HEADER_PLZ = "u:saml_postalcode"; + public static final String HEADER_ORT = "u:saml_localityname"; + + public Map<String, Object> getHeader(Document document) { + var map = new HashMap<String, Object>(); + Consumer<Attr> addHeader = attr -> map.put(attr.getName(), attr.getValue()); + getAttribute(document, HEADER_POSTFACH_ID).ifPresent(addHeader); + getAttribute(document, HEADER_VORNAME).ifPresent(addHeader); + getAttribute(document, HEADER_NACHNAME).ifPresent(addHeader); + getAttribute(document, HEADER_GEBURTSNAME).ifPresent(addHeader); + getAttribute(document, HEADER_GEBURTSORT).ifPresent(addHeader); + getAttribute(document, HEADER_EMAIL).ifPresent(addHeader); + getAttribute(document, HEADER_TELEFON).ifPresent(addHeader); + getAttribute(document, HEADER_STRASSE).ifPresent(addHeader); + getAttribute(document, HEADER_PLZ).ifPresent(addHeader); + getAttribute(document, HEADER_ORT).ifPresent(addHeader); + return map; + } + + Optional<Attr> getAttribute(Document document, String name) { + return Optional.ofNullable(document.getDocumentElement().getAttributeNode(name)); + } +} \ No newline at end of file diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapper.java similarity index 69% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapper.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapper.java index 95c0074ab823fe83ff45c489133047745713ca4f..cbdcb57358ca04ab0068a392ece59a58fe14f56e 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,31 +21,34 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.util.List; import java.util.UUID; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; @Component class DepositRequestIncomingFileMapper { List<IncomingFile> mapFiles(Deposit depositData) { return depositData.getData().getAttachments().stream() - .map(this::map).toList(); + .map(this::buildIncomingFile).toList(); } - private IncomingFile map(Attachment xa) { + private IncomingFile buildIncomingFile(Attachment attachment) { + var file = TempFileUtils.writeTmpFile(attachment.content); + return IncomingFile.builder() .id(UUID.randomUUID().toString()) - .vendorId(xa.getId()) - .name(xa.getName()) - .contentType(xa.getContentType()) - .content(xa.content) - .size(xa.getContent().length) + .vendorId(attachment.getId()) + .name(attachment.getName()) + .file(file) + .contentType(attachment.getContentType()) + .size(attachment.getContent().length) .build(); } } diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpoint.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java similarity index 93% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpoint.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java index c8feda1bc896f18ea9df1febe1acb3490e59fb11..c917f678ae91b1f214629aca14770feb8befd8b6 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpoint.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataEndpoint.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,21 +21,22 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.io.IOException; -import javax.xml.bind.JAXBElement; import javax.xml.namespace.QName; import javax.xml.parsers.ParserConfigurationException; +import jakarta.xml.bind.JAXBElement; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; import org.springframework.ws.server.endpoint.annotation.RequestPayload; import org.springframework.ws.server.endpoint.annotation.ResponsePayload; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.eingang.semantik.SemantikAdapter; import lombok.extern.log4j.Log4j2; @Endpoint diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapper.java similarity index 87% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapper.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapper.java index b6738d23328cb374c17da68202cc1ee3c622cf45..665d4d4c2c04a20ee149fc24a44afd42cf5ef656 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.util.ArrayList; import java.util.List; @@ -32,8 +32,8 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; @Component class FormDataIncomingFileMapper { @@ -43,30 +43,25 @@ class FormDataIncomingFileMapper { } List<IncomingFileGroup> mapAttachments(Document document) { - List<IncomingFileGroup> incomingFileGroups = new ArrayList<>(); - NodeList files = document.getElementsByTagName("file"); for (int idx = 0; idx < files.getLength(); idx++) { - String parentNodeName = buildParentNodeName(files.item(idx).getParentNode().getNodeName()); - IncomingFileGroup group = getIncomingFileGroup(incomingFileGroups, parentNodeName); - - group.getFiles().add(mapNodeToIncomingFile(files.item(idx))); + var updatedGroup = group.toBuilder().file(mapNodeToIncomingFile(files.item(idx))).build(); + incomingFileGroups.remove(group); + incomingFileGroups.add(updatedGroup); } return incomingFileGroups; } String buildParentNodeName(String parentNodeName) { - return parentNodeName.replaceAll("-item$", ""); } private IncomingFile mapNodeToIncomingFile(Node item) { - return IncomingFile.builder() .id(UUID.randomUUID().toString()) .vendorId(item.getAttributes().getNamedItem("id").getNodeValue()) @@ -77,7 +72,6 @@ class FormDataIncomingFileMapper { } private IncomingFileGroup getIncomingFileGroup(List<IncomingFileGroup> incomingFileGroups, String parentNodeName) { - return incomingFileGroups.stream() .filter(group -> group.getName().equals(parentNodeName)) .findFirst() diff --git a/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/JsonService.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/JsonService.java new file mode 100644 index 0000000000000000000000000000000000000000..58a4b815e6c9507ba37a3ba2b79ce63203c24ccd --- /dev/null +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/JsonService.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.intelliform; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.common.errorhandling.TechnicalException; + +@Component +class JsonService { + + static final TypeReference<List<Map<String, Object>>> VALUE_TYPE_REF = new TypeReference<List<Map<String, Object>>>() { + }; + + @Autowired + private ObjectMapper objectMapper; + + public List<Map<String, Object>> readAsListMap(String json) { + return readValueSafety(json, VALUE_TYPE_REF); + } + + private <T> T readValueSafety(String json, TypeReference<T> typeRef) { + try { + return objectMapper.readValue(json, typeRef); + } catch (JsonProcessingException e) { + throw new TechnicalException("Error parsing JSON", e); + } + } +} \ No newline at end of file diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculator.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculator.java similarity index 86% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculator.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculator.java index 52e62052d3a7d924f564e9c8cfb855b2d2da7ead..96ab024a38281d56208a7bdcdb795a3f5c735446 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculator.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculator.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,15 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.util.List; import java.util.stream.Collectors; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; @Component public class RepresentationsCalculator { diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java similarity index 85% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java index 7810c2ef5c918e971e13243c9951ff8dcbf028f7..c301df753c6b8983aae454c2b9af5fb131e17cca 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,9 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; +package de.ozgcloud.eingang.intelliform; import java.io.ByteArrayInputStream; import java.util.Collections; @@ -33,13 +31,15 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.w3c.dom.Document; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; import lombok.RequiredArgsConstructor; //TODO Naming prüfen - er scheint mir nicht semantik zu mappen und befindet sich auch nicht im entsprechenden Modul @@ -86,6 +86,9 @@ class SemantikFormDataMapper { @Autowired private final AttachmentsContentAdder attachmentsContentAdder; + @Autowired + private final CustomHeaderReader customHeaderReader; + public FormData mapToFormData(Deposit depositData) { var xmlFormDataStream = getXmlFormData(depositData.getData()); @@ -100,22 +103,24 @@ class SemantikFormDataMapper { } private byte[] getXmlFormData(DepositData depositData) { + var primaryId = depositData.getPrimaryDataAttachmentId(); + return depositData.getAttachments().stream() - .filter(attachment -> attachment.getName().endsWith(CONTENT_FORMDATA_FILENAME_SUFFIX)) + .filter(attachment -> StringUtils.equals(attachment.getId(), primaryId)) .map(Attachment::getContent) .findFirst() - .orElseThrow(() -> new RuntimeException("Request does not contain a file ending with " + CONTENT_FORMDATA_FILENAME_SUFFIX)); + .orElseThrow(() -> new RuntimeException("Request does not contain primary data attachment")); } private void addFiles(Document document, List<IncomingFile> depositRequestFiles, Map<String, Object> formDataMap) { List<IncomingFileGroup> attachments = formDataIncomingFileMapper.mapAttachments(document); - attachmentsContentAdder.addContentToAttachments(attachments, depositRequestFiles); + attachments = attachmentsContentAdder.addContentToAttachments(attachments, depositRequestFiles); List<IncomingFile> representations = incomingFilesService.calculateRepresentations(attachments, depositRequestFiles); - formDataMap.put(FIELD_NAME_MAPPED_FILES, Map.of( - ATTACHMENTS, attachments, - REPRESENTATIONS, representations)); + formDataMap.put(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, Map.of( + FilesMapperHelper.ATTACHMENTS, attachments, + FilesMapperHelper.REPRESENTATIONS, representations)); removeMappedFileReferences(attachments, formDataMap); } @@ -154,6 +159,7 @@ class SemantikFormDataMapper { map.put(HEADER_CUSTOMER_ID, document.getDocumentElement().getAttribute(HEADER_CUSTOMER_ID)); map.put(HEADER_CLIENT, document.getDocumentElement().getAttribute(HEADER_CLIENT)); map.put(HEADER_CLIENT_ID, document.getDocumentElement().getAttribute(HEADER_CLIENT_ID)); + map.putAll(customHeaderReader.getHeader(document)); return map; } } \ No newline at end of file diff --git a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapper.java b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapper.java similarity index 58% rename from intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapper.java rename to intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapper.java index 660117443c7e8b5052218890bc13731491a1df7e..f81827d8ce300e2cbe80c98770041574e7df7d6b 100644 --- a/intelliform-adapter/src/main/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapper.java +++ b/intelliform-adapter/src/main/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,12 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -34,19 +36,27 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import lombok.extern.log4j.Log4j2; +@Log4j2 @Component class XmlToJavaMapsMapper { - Document parseAsW3cDocument(InputStream xmlDatenInputStream) { + static final String REST_RESPONSE_NAME = "rest_response_name"; + static final String FILE = "file"; + @Autowired + private JsonService jsonService; + + public Document parseAsW3cDocument(InputStream xmlDatenInputStream) { try { DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); @@ -66,13 +76,13 @@ class XmlToJavaMapsMapper { } } - Map<String, Object> mapXmlToJavaMaps(Node node) { + public Map<String, Object> mapXmlToJavaMaps(Node node) { return mapChildNodes(node.getFirstChild()); } private Map<String, Object> mapChildNodes(Node node) { - Map<String, Object> childs = new HashMap<>(); + Map<String, Object> childs = new LinkedHashMap<>(); NodeList nodeList = node.getChildNodes(); @@ -80,7 +90,7 @@ class XmlToJavaMapsMapper { Node currentNode = nodeList.item(i); - if (currentNode.getNodeType() == Node.ELEMENT_NODE) { + if (isElementNode(currentNode)) { if (isSimpleTextNode(currentNode)) { @@ -99,41 +109,50 @@ class XmlToJavaMapsMapper { return childs; } + private boolean isElementNode(Node node) { + return node.getNodeType() == Node.ELEMENT_NODE; + } + private boolean isSimpleTextNode(Node node) { + return node.getChildNodes().getLength() == 1 && isTextNode(node.getFirstChild()); + } - return node.getChildNodes().getLength() == 1 // - && node.getFirstChild().getNodeType() == Node.TEXT_NODE; + private boolean isTextNode(Node node) { + return node.getNodeType() == Node.TEXT_NODE; } - @SuppressWarnings("unchecked") private void addChildElement(Map<String, Object> childs, Node currentNode, Object content) { - if (childs.containsKey(currentNode.getNodeName())) { + addToExistingChildElement(childs, currentNode, content); + } else { + childs.put(currentNode.getNodeName(), getContentValue(currentNode, content)); + } + } - if (childs.get(currentNode.getNodeName()) instanceof List) { - - List<Object> list = (List<Object>) childs.get(currentNode.getNodeName()); - list.add(content); - - } else { - - List<Object> list = new ArrayList<>(); - list.add(childs.get(currentNode.getNodeName())); - list.add(content); - childs.put(currentNode.getNodeName(), list); - } - + @SuppressWarnings({ "unchecked", "rawtypes" }) + private void addToExistingChildElement(Map<String, Object> childs, Node currentNode, Object content) { + var existingChild = childs.get(currentNode.getNodeName()); + if (existingChild instanceof List list) { + list.add(content); } else { - if (isFileNode(currentNode)) { - childs.put(currentNode.getNodeName(), createFileContentMap(currentNode, content)); - } else { - childs.put(currentNode.getNodeName(), content); - } + var list = new ArrayList<Object>(); + list.add(existingChild); + list.add(content); + childs.put(currentNode.getNodeName(), list); + } + } + + Object getContentValue(Node currentNode, Object content) { + if (isFileNode(currentNode)) { + content = createFileContentMap(currentNode, content); + } else if (isJsonNode(currentNode)) { + content = getJsonValue(currentNode, ((String) content).trim()); } + return content; } private boolean isFileNode(Node currentNode) { - return currentNode.getNodeName().equals("file"); + return currentNode.getNodeName().equals(FILE); } private Map<String, Object> createFileContentMap(Node currentNode, Object content) { @@ -149,4 +168,20 @@ class XmlToJavaMapsMapper { return contentMap; } -} + private boolean isJsonNode(Node currentNode) { + return isRestResponseName(currentNode); + } + + private boolean isRestResponseName(Node currentNode) { + return currentNode.getNodeName().equals(REST_RESPONSE_NAME); + } + + private Object getJsonValue(Node currentNode, String content) { + try { + return jsonService.readAsListMap(content); + } catch (de.ozgcloud.common.errorhandling.TechnicalException e) { + LOG.error("Error parsing json content from <" + currentNode.getNodeName() + ">.", e); + return Collections.emptyList(); + } + } +} \ No newline at end of file diff --git a/intelliform-adapter/src/main/resources/application-dev.yml b/intelliform-adapter/src/main/resources/application-dev.yml index bcffdb52bb97919c517bc19a49c630e82a8a4aef..69939e0578616b5710a27692610dff3ab0af785c 100644 --- a/intelliform-adapter/src/main/resources/application-dev.yml +++ b/intelliform-adapter/src/main/resources/application-dev.yml @@ -1,13 +1,13 @@ grpc: client: - pluto-kiel: - address: pluto-clusterip.sh-kiel-dev:9090 + vorgang-manager-kiel: + address: vorgang-manager-clusterip.sh-kiel-dev:9090 negotiationType: PLAINTEXT -kop: +ozgcloud: adapter: organisationseinheiten: 9081994: kiel 9080859: kiel fallbackStrategy: FUNDSTELLE - fundstellePlutoName: kiel \ No newline at end of file + fundstelleVorgangManagerName: kiel \ No newline at end of file diff --git a/intelliform-adapter/src/main/resources/application-local.yml b/intelliform-adapter/src/main/resources/application-local.yml index 97e71c76717160afa474a2a9418f415524555e13..10ee8e7354442d3a3643c1f11d187a4da104cc0b 100644 --- a/intelliform-adapter/src/main/resources/application-local.yml +++ b/intelliform-adapter/src/main/resources/application-local.yml @@ -1,12 +1,12 @@ logging: config: classpath:log4j2-local.xml level: - '[de.itvsh]': INFO + '[de.ozgcloud]': INFO grpc: client: - pluto-local: + vorgang-manager-local: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT @@ -17,9 +17,9 @@ management: server: port: 9292 -kop: +ozgcloud: adapter: - targetPlutoName: local + targetVorgangManagerName: local fallbackStrategy: DENY routingStrategy: SINGLE diff --git a/intelliform-adapter/src/main/resources/application-test.yml b/intelliform-adapter/src/main/resources/application-test.yml index 293e1f23210f2e2c8f64afd2135a6105659c6ffc..6626522d82be3fcb592d256d7853da3baa432955 100644 --- a/intelliform-adapter/src/main/resources/application-test.yml +++ b/intelliform-adapter/src/main/resources/application-test.yml @@ -1,13 +1,13 @@ grpc: client: - pluto-kiel: - address: pluto-clusterip.sh-kiel-test:9090 + vorgang-manager-kiel: + address: vorgang-manager-clusterip.sh-kiel-test:9090 negotiationType: PLAINTEXT - pluto-sl: - address: pluto-clusterip.sh-sl-test:9090 + vorgang-manager-sl: + address: vorgang-manager-clusterip.sh-sl-test:9090 negotiationType: PLAINTEXT -kop: +ozgcloud: adapter: organisationseinheiten: 9081994: kiel @@ -15,6 +15,6 @@ kop: 9535669: sl 235046657: sl fallbackStrategy: FUNDSTELLE - fundstellePlutoName: kiel + fundstelleVorgangManagerName: kiel diff --git a/intelliform-adapter/src/main/resources/application.yml b/intelliform-adapter/src/main/resources/application.yml index 351db3c4fa007f2cc42c977ab92dee5c482bcd62..8d7d9cb1ba81a598daca364603737a73aad0aa4f 100644 --- a/intelliform-adapter/src/main/resources/application.yml +++ b/intelliform-adapter/src/main/resources/application.yml @@ -1,7 +1,7 @@ logging: level: ROOT: WARN - '[de.itvsh.ozg]': INFO + '[de.ozgcloud]': INFO server: port: 9292 @@ -31,17 +31,17 @@ management: grpc: client: - plutoschleswigflensburg: + vorgang-manager-schleswigflensburg: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT - pluto-kiel: + vorgang-manager-kiel: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT - pluto-nf: + vorgang-manager-nf: address: static://127.0.0.1:9090 negotiationType: PLAINTEXT -kop: +ozgcloud: adapter: routingStrategy: MULTI organisationseinheiten: diff --git a/intelliform-adapter/src/main/resources/logback-spring.xml b/intelliform-adapter/src/main/resources/logback-spring.xml new file mode 100644 index 0000000000000000000000000000000000000000..ac9706e95c282256f752bd433446e6c92488431b --- /dev/null +++ b/intelliform-adapter/src/main/resources/logback-spring.xml @@ -0,0 +1,20 @@ +<configuration> + <include resource="org/springframework/boot/logging/logback/defaults.xml"/> + <include resource="org/springframework/boot/logging/logback/console-appender.xml"/> + + <springProfile name="!oc"> + <root> + <appender-ref ref="CONSOLE"/> + </root> + </springProfile> + + <springProfile name="oc"> + <appender name="LOGSTASH" class="ch.qos.logback.core.ConsoleAppender"> + <encoder class="net.logstash.logback.encoder.LogstashEncoder"/> + </appender> + <root> + <appender-ref ref="LOGSTASH"/> + </root> + </springProfile> + +</configuration> diff --git a/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh b/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh index 48c256b4c0d26a8e75f4820aba813ce28d17dfe0..da2dd23409f59026ed3b75dfe90c8e7d216e9597 100755 --- a/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh +++ b/intelliform-adapter/src/main/scripts/create-demo-vorgang.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den # Ministerpräsidenten des Landes Schleswig-Holstein # Staatskanzlei # Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -24,8 +24,8 @@ # -# Dev: https://afm.dev.ozg-sh.de/ws/if -# Test: https://kiel-afm.test.ozg-sh.de/ws/if +# Dev: https://kiel-afm.dev.by.ozg-cloud.de/ws/if +# Test: https://kiel-afm.test.by.ozg-cloud.de/ws/if URL=http://localhost:9292/ws/if if [ -n "$1" ]; then @@ -35,329 +35,9 @@ fi echo "Send request to ${URL} ..." echo -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiIHhtbG5zOnQ9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iIHhtbG5zOnU9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdXNlciIgdDppZD0iMjAyMTA0MTQzMjQxMjAwOTAyMDciIHQ6dGltZXN0YW1wPSIyMDIxLTA0LTE0VDA3OjAwOjEyLjQ4OFoiIHQ6c2VuZGVyPSJzdGFnZS5hZm0uc2NobGVzd2lnLWhvbHN0ZWluLmRlIiB0OmZvcm09IkVpbmdsaWVkZXJ1bmdzaGlsZmUgTWluZGVyasOkaHJpZ2UiIHQ6Zm9ybS1pZD0icGZtX3Bvc3RmYWNobWl0dGVpbHVuZyIgdDpjdXN0b21lcj0iS3JlaXMgU2VnZWJlcmciIHQ6Y3VzdG9tZXItaWQ9ImtyZWlzLXNlZ2ViZXJnL2tyZWlzLXNlZ2ViZXJnIiB0OmNsaWVudD0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmNsaWVudC1pZD0ibGFuZCIgdTpVc2VybmFtZT0iYWZtdDcwQHdlYi5kZSIgdTpQcmluY2lwYWxUeXBlPSJDaXRpemVuIiB1OnVzZXJuYW1lPSJkZTkzN2ExNy1iMTU2LTRhYWYtOTQ3Ni0yNjU4YmM4NzI2NTkiIHU6R2l2ZW5OYW1lcz0iRGF0YXBvcnQiIHU6QXNzdXJhbmNlTGV2ZWw9IkxvdyIgdTpkaXNwbGF5TmFtZT0iRGF0YXBvcnQgU0gtVXNlciIgdTptYWlsQWRkcmVzcz0iYWZtdDcwQHdlYi5kZSIgdTpFbWFpbEFkZHJlc3M9ImFmbXQ3MEB3ZWIuZGUiIHU6Zmlyc3ROYW1lPSJEYXRhcG9ydCIgdTpsYXN0TmFtZT0iU0gtVXNlciI+PGxlaXN0dW5nZW4+PGhlaWxwIGxhYmVsPSJIZWlscMOkZGFnb2dpc2NoZSBMZWlzdHVuZ2VuIj50cnVlPC9oZWlscD48aGlsZmUgbGFiZWw9IkhpbGZlIHp1ciBUZWlsaGFiZSBpbiBkZXIgR2VtZWluc2NoYWZ0Ij5mYWxzZTwvaGlsZmU+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48c2NodWwgbGFiZWw9IkxlaXN0dW5nZW4genVyIFRlaWxoYWJlIGFuIEJpbGR1bmciPmZhbHNlPC9zY2h1bD48dW50ZXJiIGxhYmVsPSJMZWlzdHVuZ2VuIMO8YmVyIFRhZyB1bmQgTmFjaHQiPmZhbHNlPC91bnRlcmI+PC9sZWlzdHVuZ2VuPjxiZWdydWVuZHVuZz50ZXN0PC9iZWdydWVuZHVuZz48bmFtZWlkPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvbmFtZWlkPjxyZXN0X3Jlc3BvbnNlX25hbWU+W3sibWVtYmVyY29udGV4dCI6ImRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OSIsIm1lbWJlcnNjb3BlIjpbeyJ0ZW5hbnQiOiJTSCIsIm1haWxib3hndWlkIjoiYzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyIiwibWFpbGJveG5hbWUiOiJOL0EiLCJtYWlsYm94ZGVzY3JpcHRpb24iOiJUZXN0IiwibWFpbGJveHR5cGUiOjEsImd1aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJpZCI6MjM1OTkxNn1dfV08L3Jlc3RfcmVzcG9uc2VfbmFtZT48bWFpbGJveGd1aWQ+YzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyPC9tYWlsYm94Z3VpZD48bmFjaG5hbWU+dGVydDwvbmFjaG5hbWU+PHZvcm5hbWU+dGVzdDwvdm9ybmFtZT48Z2VidXJ0c2RhdHVtPjIwMDAtMDQtMDc8L2dlYnVydHNkYXR1bT48ZGV1dHNjaD5kZXV0c2NoPC9kZXV0c2NoPjxiZXRyZXV1bmdfb19zY2h1bGU+ZGFoZWltPC9iZXRyZXV1bmdfb19zY2h1bGU+PHN0cmFzc2U+dGVzdDwvc3RyYXNzZT48aGF1c251bW1lcj4xMjI8L2hhdXNudW1tZXI+PHBsej4yMjIyMjwvcGx6PjxvcnQ+dGVzdDwvb3J0PjxwZmxlZ2VncmFkPmtlaW5lcjwvcGZsZWdlZ3JhZD48a3Jhbmtlbmthc3NlPnRlc3Q8L2tyYW5rZW5rYXNzZT48dmVyc2ljaGVydW5nc251bW1lcj53ZXRzZXQ8L3ZlcnNpY2hlcnVuZ3NudW1tZXI+PHNjaHdlcmJlaGluZGVydW5nPmZhbHNlPC9zY2h3ZXJiZWhpbmRlcnVuZz48ZWdoX2ZvbGdlYW50cmFnPmZhbHNlPC9lZ2hfZm9sZ2VhbnRyYWc+PGJldHJldXVuZz5kYWhlaW08L2JldHJldXVuZz48ZWx0ZXJuPjxlbHRlcm4taXRlbT48cm9sbGVfZWx0ZXI+dmF0ZXI8L3JvbGxlX2VsdGVyPjxuYWNobmFtZV9lbHRlcj5TSC1Vc2VyPC9uYWNobmFtZV9lbHRlcj48dm9ybmFtZV9lbHRlcj5EYXRhcG9ydDwvdm9ybmFtZV9lbHRlcj48Z2VidXJ0c3RhZ19lbHRlcj4yMDAwLTA0LTA5PC9nZWJ1cnRzdGFnX2VsdGVyPjxmZXN0bmV0el9lbHRlcj4yMzQ8L2Zlc3RuZXR6X2VsdGVyPjxtYWlsX2VsdGVyPmFmbXQ3MEB3ZWIuZGU8L21haWxfZWx0ZXI+PGFsdF9hZHJfZWx0ZXI+ZmFsc2U8L2FsdF9hZHJfZWx0ZXI+PC9lbHRlcm4taXRlbT48L2VsdGVybj48c29yZ2VyZWNodD52YXRlcjwvc29yZ2VyZWNodD48Z2VzY2h3aXN0ZXIvPjxwZmxlZ2VmYW1pbGllPmZhbHNlPC9wZmxlZ2VmYW1pbGllPjxhcnp0PnRlc3Q8L2FyenQ+PGRpYWdub3Nlbj50ZXN0PC9kaWFnbm9zZW4+PHVudGVyc3VjaHVuZ2VuPjxhdWdlbiBsYWJlbD0iQXVnZW5hcnp0Ij5mYWxzZTwvYXVnZW4+PGhubyBsYWJlbD0iSE5PLUFyenQiPnRydWU8L2hubz48a2ggbGFiZWw9IkRpYWdub3N0aWtlbiBpbSBLcmFua2VuaGF1cyI+ZmFsc2U8L2toPjxvcnRobyBsYWJlbD0iT3J0aG9ww6RkaWUiPmZhbHNlPC9vcnRobz48b3RoZXIgbGFiZWw9IiI+ZmFsc2U8L290aGVyPjxwc3ljaGF0ZXIgbGFiZWw9IktpbmRlci0gdW5kIEp1Z2VuZHBzeWNoaWF0ZXIiPmZhbHNlPC9wc3ljaGF0ZXI+PHNvemlhbCBsYWJlbD0iU296aWFscMOkZGlhdHJpc2NoZXMgWmVudHJ1bSI+ZmFsc2U8L3NvemlhbD48L3VudGVyc3VjaHVuZ2VuPjxtYXNzbmFobWVuPjxlcmdvIGxhYmVsPSJFcmdvdGhlcmFwaWUiPnRydWU8L2VyZ28+PGtnIGxhYmVsPSJLcmFua2VuZ3ltbmFzdGlrIj5mYWxzZTwva2c+PGxvZ28gbGFiZWw9IkxvZ29ww6RkaWUiPmZhbHNlPC9sb2dvPjxtdXNpayBsYWJlbD0iVGVpbG5haG1lIGFuIGVpbmVyIE11c2lrZ3J1cHBlIj5mYWxzZTwvbXVzaWs+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48cHN5Y2hvIGxhYmVsPSJQc3ljaG90aGVyYXBpZSI+ZmFsc2U8L3BzeWNobz48c2Nod2ltbWVuIGxhYmVsPSJTY2h3aW1tZW4iPmZhbHNlPC9zY2h3aW1tZW4+PHNwcmFjaCBsYWJlbD0iU3ByYWNoZsO2cmRlcnVuZyBpbiBkZXIgS2luZGVydGFnZXNzdMOkdHRlIj5mYWxzZTwvc3ByYWNoPjx2ZXJlaW4gbGFiZWw9Ik1pdGdsaWVkc2NoYWZ0IGluIGVpbmVtIFR1cm4tL1Nwb3J0dmVyZWluIj5mYWxzZTwvdmVyZWluPjwvbWFzc25haG1lbj48anVnZW5kYW10X2tvbnRha3Q+ZmFsc2U8L2p1Z2VuZGFtdF9rb250YWt0PjxqdWdlbmRhbXRfYWt0ZW5laW5zaWNodD50cnVlPC9qdWdlbmRhbXRfYWt0ZW5laW5zaWNodD48cGVyc29uYWxhdXN3ZWlzPjxwZXJzb25hbGF1c3dlaXMtaXRlbT48ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3BkZiIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuM0Y0QzVGOUI5NzM3MzMzOTMzQjkzNTZFNDlBQTM1RUIzRDkyNzJCOSIgbGVuZ3RoPSIxODE5MjYiPnRlc3QucGRmPC9maWxlPjwvcGVyc29uYWxhdXN3ZWlzLWl0ZW0+PC9wZXJzb25hbGF1c3dlaXM+PHNvcmdlcmVjaHRzbmFjaHdlaXM+PGZpbGUgY29udGVudC10eXBlPSJhcHBsaWNhdGlvbi9wZGYiIGRlc2NyaXB0aW9uPSIiIGlkPSJhc3Npc3RhbnRzLjdDOUFDMDc0M0NFMDY1QTc0RTBEQzJEODVGOTY4MkJGQzQ5MDM1QkIiIGxlbmd0aD0iMTgxOTI2Ij50ZXN0ICgxKS5wZGY8L2ZpbGU+PC9zb3JnZXJlY2h0c25hY2h3ZWlzPjxlcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz50cnVlPC9lcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz48ZGF0ZW5zY2h1dHo+dHJ1ZTwvZGF0ZW5zY2h1dHo+PHBvc3RmYWNoYmV0cmVmZj5JaHIgQW50cmFnIGF1ZiBFaW5nbGllZGVydW5nc2hpbGZlIGbDvHIgTWluZGVyasOkaHJpZ2U8L3Bvc3RmYWNoYmV0cmVmZj48cG9zdGZhY2huYWNocmljaHQ+U2VociBnZWVocnRlL3IgQW50cmFnc3RlbGxlcippbiwgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0lociBBbnRyYWcgd3VyZGUgZXJmb2xncmVpY2ggw7xiZXJtaXR0ZWx0LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHLDpGd0LiBTaWUgZXJoYWx0ZW4gdW5hdWZnZWZvcmRlcnQgZWluZSBSw7xja21lbGR1bmcgenUgSWhyZW0gQW50cmFnLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHJlIFZvcmdhbmdzbnVtbWVyIGZpbmRlbiBTaWUgaW0gYW5nZWjDpG5ndGVuIERva3VtZW50LiAmbHQ7YnIvJmd0O0JpdHRlIGdlYmVuIFNpZSBkaWVzZSBWb3JnYW5nc251bW1lciBiZWkgYWxsZW4gQW5mcmFnZW4genUgSWhyZW0gQW50cmFnIGFuLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O01pdCBmcmVuZGxpY2hlbiBHcsO8w59lbiZsdDtici8mZ3Q7SWhyIEtyZWlzIFNlZ2ViZXJnJmx0O2JyLyZndDsmbHQ7YnIvJmd0Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtLcmVpcyBTZWdlYmVyZyAmbHQ7YnIvJmd0O0VpbmdsaWVkZXJ1bmdzaGlsZmUgZsO8ciBNaW5kZXJqw6RocmlnZSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtQb3N0YW5zY2hyaWZ0OiZsdDtici8mZ3Q7SGFtYnVyZ2VyIFN0ci4gMzAmbHQ7YnIvJmd0OzIzNzk1IEJhZCBTZWdlYmVyZyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCZXN1Y2hlcmFuc2NocmlmdDombHQ7YnIvJmd0O0J1cmdmZWxkc3RyLiA0MWEgJmx0O2JyLyZndDsyMzc5NSBCYWQgU2VnZWJlcmcgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0ZheDogKzQ5NDU1MS85NTEtOTU2NSAmbHQ7YnIvJmd0O0UtTWFpbDogJmx0O2EgaGVyZj0ibWFpbHRvOmludGVncmF0aW9uLmtpbmRlckBzZWdlYmVyZy5kZSImZ3Q7aW50ZWdyYXRpb24ua2luZGVyQHNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7SW50ZXJuZXQ6ICZsdDthIGhyZWY9Ind3dy5zZWdlYmVyZy5kZSImZ3Q7d3d3LnNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7PC9wb3N0ZmFjaG5hY2hyaWNodD48L215Rm9ybT4=</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4IiBJc3N1ZUluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjxzYW1sOklzc3Vlcj51cm46ZGF0YXBvcnQ6b3NpOnNlcnZpY2Vrb250bzppZHA6cnoyOnN0YWdlOnNoPC9zYW1sOklzc3Vlcj48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PFJlZmVyZW5jZSBVUkk9IiNfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCBzYW1sIGRzIHhzIHhzaSIvPjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PERpZ2VzdFZhbHVlPi8raURwbHVXdGFMd20rY1M5aCtYVEc0aTBiQy9jYS9WbjdMMWFObWtXNFk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkdVMm9NOWNTZWFyZCt0MlU1WTBzNDVQKzlQdzJKNVdwSzh6MXNYa2NvT0RHY0lhVzljU3dKa0RTc2U0Z0lHQ1VYTXYxcWRhbytJdmFuQlJReXc3Mmo1SFVWdFNkWktBUkg5NjBoeEJ4YVhQRVN3VUQ5OTF4TzlYWVJ2ZmoxZU5waTNkRWpVRWtKUEN3T1g2NmlsWUZhQ0VCeFdwOXF4MGVVZVdzdnVOOUg1aytoWFJpdHpPdGdRMmFTenUrZUlzQnpOU3hoVHJkSXJPck9nV0orVHEwTmhZOC84WDNUT3EzQW9qMHJJTHcrVEZYMWFENmo2NUNWKzQ0eGtCWjlDK0F3NENrcTRRYUk4ckt6UzY4djlReUt2MTVOT2dhcmx6TGE3OUNNc2h1aUk4eDZldFZOSHpHcm15RC9Nc243bmticlhEWTdoQUNuL294bXlydk1YQXpGdz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlDZXJ0aWZpY2F0ZT5NSUlHM3pDQ0JNZWdBd0lCQWdJVGJRQUxpdm01eVVoSU9TYmQwQUFCQUF1SytUQU5CZ2txaGtpRzl3MEJBUXNGQURBK01Rc3dDUVlEVlFRR0V3SkVSVEVXTUJRR0ExVUVDZ3dOUkdGMFlYQnZjblFnUWNPMlVqRVhNQlVHQTFVRUF3d09SR0YwWVhCdmNuUWdRMEVnTURRd0hoY05NakF3TkRJM01EY3dOelUwV2hjTk1qSXdOek14TURjd056VTBXakNCcWpFTE1Ba0dBMVVFQmhNQ1JFVXhHekFaQmdOVkJBZ01FbE5qYUd4bGMzZHBaeTFJYjJ4emRHVnBiakVTTUJBR0ExVUVCd3dKUVd4MFpXNW9iMng2TVJFd0R3WURWUVFLREFoRVlYUmhjRzl5ZERFTk1Bc0dBMVVFQ3d3RVZGb3hOREZJTUVZR0ExVUVBd3cvYzJGdGJDNXBaSEF1YzJWeWRtbGpaV3R2Ym5SdkxuTjBZV2RsTG5ObGNuWnBZMlZ3YjNKMFlXd3VjMk5vYkdWemQybG5MV2h2YkhOMFpXbHVMbVJsTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFwUFRUZHhpQ3laenJEU2NZclQ5ckNxcHl1RFRqYzY1ZTJTTzBjRE03Mmd0dW1zOFZqQVp2T1Jic09vWm90dEFUYmlSWWpXM2t1Z3ZkeGFHdk1lYlRCNE93YVd0UDlwUDNRdTZjaWVrRG9IdmpQUHQyTG05TmdNT3BTVFNMSENxT3QrdWFiNEdYU1NPQmt3TXFlNDNMa2RaU3E5WS9tazJ6QlBZcXlVMzEwN2dkd01xUWRGdWhqZU5iYVEvMFFYa1laTGdVeFR1OGpVSmxGZXh1QkxZTjZ1WHJHVllyV0dQTU9Vdk83cGYzc3BzMjRnUVJFWlVHMkJkU0tkbjhqaDRjR0Y2ODhtNk5uTlBOVGZ5L3BWbmRDVDQzY0lGT0JQSHRvTitTcWs2ZGVKVVJoY3hyeE56U3Z2RUYvRWVMOE1WSUU3Ym5IRGhaZGtmbXU5MkVldlNoQXdJREFRQUJvNElDWnpDQ0FtTXdIUVlEVlIwT0JCWUVGQmczOU0yVGlPNkE0aHh1QjFKKytLbTgxYUVpTUE0R0ExVWREd0VCL3dRRUF3SUZvREJLQmdOVkhSRUVRekJCZ2o5ellXMXNMbWxrY0M1elpYSjJhV05sYTI5dWRHOHVjM1JoWjJVdWMyVnlkbWxqWlhCdmNuUmhiQzV6WTJoc1pYTjNhV2N0YUc5c2MzUmxhVzR1WkdVd0h3WURWUjBqQkJnd0ZvQVVzZUttMi95SjVUZm83NkxMT295WTBQUkpKTjh3UmdZRFZSMGZCRDh3UFRBN29EbWdONFkxYUhSMGNEb3ZMM0JyYVM1elpYSjJhV05sWkhCaGIzSXVaR1V2WTNKc0wwUmhkR0Z3YjNKMEpUSXdRMEVsTWpBd05DNWpjbXd3Z1lBR0NDc0dBUVVGQndFQkJIUXdjakFyQmdnckJnRUZCUWN3QVlZZmFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdmIyTnpjREJEQmdnckJnRUZCUWN3QW9ZM2FIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyRXZSR0YwWVhCdmNuUWxNakJEUVNVeU1EQTBLREVwTG1OeWREQU1CZ05WSFJNQkFmOEVBakFBTUQwR0NTc0dBUVFCZ2pjVkJ3UXdNQzRHSmlzR0FRUUJnamNWQ09yYVk0WE0zRUNDcVpjZ2hOVGpjNEg0cFhhQlhvTzFsanVEdnJ0dUFnRmtBZ0VpTUNjR0ExVWRKUVFnTUI0R0NDc0dBUVVGQndNQkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSUFnSXdNd1lKS3dZQkJBR0NOeFVLQkNZd0pEQUtCZ2dyQmdFRkJRY0RBVEFLQmdnckJnRUZCUWNEQWpBS0JnZ3JCZ0VGQlFnQ0FqQlBCZ05WSFNBRVNEQkdNRVFHRFNzR0FRUUJncWxYZzMyQlNBSXdNekF4QmdnckJnRUZCUWNDQVJZbGFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyVnlkR05zWVhOekFEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFPbG9Kc05vaUdoN09TRWdLelF1TEE1ZUozUFpLOGJ4MGdmVXlOZVJvSVlVQnErZ1lVSW1IM2tRU3R1bDg2WXhwU3JrUzNGNkU3c2pqWitncHRXai95aDcwMUYzR0EvZEk3TDVBTGNmSXdWWjlVckIzdnlKWHYwWGNQSmlMb05uZ3N0TDdBUzFobFV3d0NYN0pCS1FVdnFnS2dMWGFyWGpHYko2emZCMlVTSG9LSWJkVlo4R0ZhUENPWU5QZmlHanBDaSs4WUllTWY5eHRhSUJ6dGFRUEJ2eW4yVC9CNzBNSjBLK1JFZTdzTUNSSXBmYTdsZThRNVBlaGJEQWpkOWhCb3hzbWJtUXhxZmtKUHNYVDNqeGIxZk5pWHRyNjFRVkh0ODQ4dTNkOXhCVkc5OSthRlZlNnJRd01wdDA4TWpBYWdWemNpS2RlRU01WTAzaUNBVFdabDZEYjZINjhlVU9FdTdJTmxmNDF1UGQ3U0FOMnpRT1pIZ3pnZTJjbXNwcGZlKyt4NU1VK3YyUy9rOUJrVHQwU2FqWEtHcjczdk92VU1pMUhvNjEwMkpKdWg5K2NyVDRRM1VFRkp3QStkZHVVK25MVDRDWGZjOGs3RGVCTGJBME1IQzNhOXFLcmZKcnNlM2NkVmdRQmVSWFFDTk55OGJHV2swdHNueXhWMDJhdG92TnJ6ZXBMekE3dCtOU2lPNUNUWXo5U3NXSXRLTk5Wd3kyZ3ZwQjVNU1Fsc2tQRWNFMzh2UTYvc1p2Nks0MGczbnY1Q2Z1RlMyait2eDdsSTVCVmJQSW1KNDN3QXB0dktnUVAyVEtuTFEwTmRCWE5VSzlQZGI3MlJtM1BGTlp3eHVMdncyV1BXNk9SNVRvdk44Q3VIdHNGTmU0UHlPTVg2QnN4elVqb0dFMD08L1g1MDlDZXJ0aWZpY2F0ZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OnBlcnNpc3RlbnQiIE5hbWVRdWFsaWZpZXI9InVybjpvc3A6bmFtZXM6cmVhbG06c3RhZ2U6c2giPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iX2Q3M2VlMTJlYmIwMjY0OWQyM2Q4M2U2OWM2OWM4NTcxIiBOb3RPbk9yQWZ0ZXI9IjIwMjEtMDQtMTRUMTc6MDA6MTMuNjM4WiIgUmVjaXBpZW50PSJodHRwczovL3N0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUvb3NpL1NoaWJib2xldGguc3NvL1NBTUwyL1BPU1QiLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdE9uT3JBZnRlcj0iMjAyMS0wNC0xNFQxNzowMDoxMy42MzhaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc3RhZ2UuYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgU2Vzc2lvbkluZGV4PSJiZjA0NjNhNy0xYjdkLTQ5ZWMtODE5Yy1jZDFhZGM4ZTFlZGEiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj5odHRwOi8vZWlkYXMuZXVyb3BhLmV1L0xvQS9sb3c8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJVc2VybmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5hZm10NzBAd2ViLmRlPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkFzc3VyYW5jZUxldmVsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxvdzwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJUaXRsZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5IZXJyPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkdpdmVuTmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+RGF0YXBvcnQ8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmFtaWx5TmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+U0gtVXNlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbEFkZHJlc3MiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+YWZtdDcwQHdlYi5kZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJQcmluY2lwYWxUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkNpdGl6ZW48L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iQ2l0aXplblByb2ZpbGVUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPlN0YW5kYXJkPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPg==</content> - <contentType>text/xml</contentType> - <id>saml-assertion</id> - <name>SAML-Assertion.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNj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</content> - <contentType>application/pdf</contentType> - <id>assistants.3F4C5F9B9737333933B9356E49AA35EB3D9272B9</id> - <name>test.pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNj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</content> - <contentType>application/pdf</contentType> - <id>assistants.7C9AC0743CE065A74E0DC2D85F9682BFC49035BB</id> - <name>test (1).pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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ZW5kb2JqDQozNCAwIG9iag0KPDwNCi9PcGVuQWN0aW9uIFsgMSAwIFIgL1hZWiBudWxsIG51bGwgMSBdDQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL1BhZ2VzIDE2IDAgUg0KPj4NCmVuZG9iag0KMzUgMCBvYmoNCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MTQwOTAxNDUrMDInMDAnKQ0KL1Byb2R1Y2VyIChjaXQgcGRmc3VpdGUgXCh3d3cuY2l0LmRlXCkpDQovQXV0aG9yIDxmZWZmMDA0YjAwNmMwMDYxMDA3NTAwNzMwMDIwMDA1NzAwNjEwMDZlMDA2ZTAwNjUwMDcyPg0KPj4NCmVuZG9iag0KeHJlZg0KMCAzNiANCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDA2OCAwMDAwMCBuDQowMDAwMDAwMjU1IDAwMDAwIG4NCjAwMDAwMTI3MjYgMDAwMDAgbg0KMDAwMDAxMjc1MCAwMDAwMCBuDQowMDAwMDQ0MzE5IDAwMDAwIG4NCjAwMDAwNTQxODMgMDAwMDAgbg0KMDAwMDA1NDIwNiAwMDAwMCBuDQowMDAwMDU0MzkzIDAwMDAwIG4NCjAwMDAwNjU3NTEgMDAwMDAgbg0KMDAwMDA2NTc3NSAwMDAwMCBuDQowMDAwMDY1OTY0IDAwMDAwIG4NCjAwMDAwNzc4NTkgMDAwMDAgbg0KMDAwMDA3Nzg4NCAwMDAwMCBuDQowMDAwMDc4MDczIDAwMDAwIG4NCjAwMDAwODkwNTkgMDAwMDAgbg0KMDAwMDA4OTA4NCAwMDAwMCBuDQowMDAwMDg5MjE3IDAwMDAwIG4NCjAwMDAwOTEyNjAgMDAwMDAgbg0KMDAwMDA5MTI4NCAwMDAwMCBuDQowMDAwMDkxNDk3IDAwMDAwIG4NCjAwMDAwOTE4MDYgMDAwMDAgbg0KMDAwMDA5MTk5MCAwMDAwMCBuDQowMDAwMTAwNDEyIDAwMDAwIG4NCjAwMDAxMDA0MzYgMDAwMDAgbg0KMDAwMDEwMDY1OCAwMDAwMCBuDQowMDAwMTAxMjA5IDAwMDAwIG4NCjAwMDAxMDE2MjMgMDAwMDAgbg0KMDAwMDExMDE3MCAwMDAwMCBuDQowMDAwMTEwMTk0IDAwMDAwIG4NCjAwMDAxMTA0MTMgMDAwMDAgbg0KMDAwMDExMDk5MiAwMDAwMCBuDQowMDAwMTExNDI4IDAwMDAwIG4NCjAwMDAxMTE0OTAgMDAwMDAgbg0KMDAwMDExMTYwOCAwMDAwMCBuDQowMDAwMTExNzIwIDAwMDAwIG4NCnRyYWlsZXINCjw8DQovSW5mbyAzNSAwIFINCi9JRCBbIDw4YmVlYWQzNmY0ODliNDBkNzk2NWZhNDQ5ODVjOWFmNT4gPDAxMDJlNWRhZGQwNTgzMzQ4YTMzN2NiOTc3ZjE0MzQ5PiBdDQovUm9vdCAzNCAwIFINCi9TaXplIDM2DQovRG9jQ2hlY2tzdW0gLzA1NjMzRjY4QUU3RkI1MUU5MzA1QTBDNDdEMTI3MjlGDQo+Pg0Kc3RhcnR4cmVmDQoxMTE5MzMNCiUlRU9GDQo=</content> - <contentType>application/pdf</contentType> - <id>myForm-pdf</id> - <name>Eingliederungshilfe-Antrag.pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPC9oZWFkPgo8Ym9keSBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTFwdDsiPgogICAgICAgICAgICBTZWhyIGdlZWhydGUvciBBbnRyYWdzdGVsbGVyKmluLCA8YnI+Cjxicj4KSWhyIEFudHJhZyB3dXJkZSBlcmZvbGdyZWljaCAmdXVtbDtiZXJtaXR0ZWx0Ljxicj4KPGJyPgpCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHImYXVtbDtndC4gU2llIGVyaGFsdGVuIHVuYXVmZ2Vmb3JkZXJ0IGVpbmUgUiZ1dW1sO2NrbWVsZHVuZyB6dSBJaHJlbSBBbnRyYWcuPGJyPgo8YnI+IApJaHJlIFZvcmdhbmdzbnVtbWVyIGxhdXRldDogCjUxLzUxLjIwLzIwMjEwNDE0MzI0MTIwMDkwMjA3LgpCaXR0ZSBnZWJlbiBTaWUgZGllc2UgVm9yZ2FuZ3NudW1tZXIgYmVpIGFsbGVuIEFuZnJhZ2VuIHp1IElocmVtIEFudHJhZyBhbi48YnI+Cjxicj4KPGJyPgpNaXQgZnJlbmRsaWNoZW4gR3ImdXVtbDsmc3psaWc7ZW48YnI+CklociBLcmVpcyBTZWdlYmVyZzxicj4KPGJyPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+Cjxicj4KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDlwdDsiPktyZWlzIFNlZ2ViZXJnIDxicj4KRWluZ2xpZWRlcnVuZ3NoaWxmZSBmJnV1bWw7ciBNaW5kZXJqJmF1bWw7aHJpZ2U8YnI+Cjxicj4KUG9zdGFuc2NocmlmdDo8YnI+CkhhbWJ1cmdlciBTdHIuIDMwPGJyPgoyMzc5NSBCYWQgU2VnZWJlcmc8YnI+Cjxicj4KQmVzdWNoZXJhbnNjaHJpZnQ6PGJyPgpCdXJnZmVsZHN0ci4gNDFhIDxicj4KMjM3OTUgQmFkIFNlZ2ViZXJnIDxicj4KPGJyPgpGYXg6ICs0OTQ1NTEvOTUxLTk1NjUgPGJyPgpFLU1haWw6IDxhIGhlcmY9Im1haWx0bzppbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgIj5pbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgPC9hPgo8YnI+CkludGVybmV0OiA8YSBocmVmPSJ3d3cuc2VnZWJlcmcuZGUiPnd3dy5zZWdlYmVyZy5kZTwvYT48L3NwYW4+Cjxicj4KPC9ib2R5Pgo8L2h0bWw+Cg==</content> - <contentType>text/xml</contentType> - <id>EmailBodyTemplate</id> - <name>EmailBodyTemplate.xml</name> - </attachments> - <caller/> - <client>Schleswig-Holstein</client> - <clientId>land</clientId> - <customParameters> - <key>AbsenderBehoerdenkennung</key> - <value>afmsh:afm_eGewerbeAbmeldung</value> - </customParameters> - <customParameters> - <key>EmailAdresseSachbearbeitung</key> - <value>oscar.mourbare@dataport.de</value> - </customParameters> - <customParameters> - <key>EmailSubjectTemplate</key> - <value>EGH Stage Deposit Prüfung</value> - </customParameters> - <customParameters> - <key>EmpfaengerBehoerdenkennung</key> - <value>afmsh:12345_eGewerbeAbmeldung</value> - </customParameters> - <customParameters> - <key>mailboxguid</key> - <value>c5a446b7-d6b0-4c61-9ad2-aae600857982</value> - </customParameters> - <customParameters> - <key>PostfachAttachmentIds</key> - <value>myForm-pdf</value> - </customParameters> - <customParameters> - <key>PostfachBodyTemplate</key> - <value>Sehr geehrte/r Antragsteller*in, <br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte beachten Sie, dass die Bearbeitungszeit nach Eingang aller Unterlagen 2 Wochen bis 2 Monate beträgt. Sie erhalten unaufgefordert eine Rückmeldung zu Ihrem Antrag.<br/><br/>Ihre Vorgangsnummer finden Sie im angehängten Dokument. <br/>Bitte geben Sie diese Vorgangsnummer bei allen Anfragen zu Ihrem Antrag an.<br/><br/><br/>Mit frendlichen Grüßen<br/>Ihr Kreis Segeberg<br/><br/>---------------------------------------------------<br/><br/>Kreis Segeberg <br/>Eingliederungshilfe für Minderjährige<br/><br/>Postanschrift:<br/>Hamburger Str. 30<br/>23795 Bad Segeberg<br/><br/>Besucheranschrift:<br/>Burgfeldstr. 41a <br/>23795 Bad Segeberg <br/><br/>Fax: +494551/951-9565 <br/>E-Mail: <a herf="mailto:integration.kinder@segeberg.de">integration.kinder@segeberg.de</a><br/>Internet: <a href="www.segeberg.de">www.segeberg.de</a><br/></value> - </customParameters> - <customParameters> - <key>PostfachIsHtml</key> - <value>true</value> - </customParameters> - <customParameters> - <key>PostfachSubjectTemplate</key> - <value>Ihr Antrag auf Eingliederungshilfe für Minderjährige</value> - </customParameters> - <customer>Kreis Segeberg</customer> - <customerId>kreis-segeberg/kreis-segeberg</customerId> - <form>Eingliederungshilfe Minderjährige</form> - <formId>pfm_postfachmitteilung</formId> - <id>20210414324120090207</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> - <sender>stage.afm.schleswig-holstein.de</sender> - <timestamp>2021-04-14T09:01:49.030+02:00</timestamp> - <username>de937a17-b156-4aaf-9476-2658bc872659</username> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} +SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) - -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIiB0OmZvcm0tdmVyc2lvbj0iMi4wMTMiIHQ6dXVpZD0iNzgxNGI2YjUtMmZlYy00ZDBiLTg4OGYtYTM3N2ExOWIwZGEzIiB0OmlkPSIyMDIxMTIwODQyNjkyMDE3OTIwMCIgdDp0aW1lc3RhbXA9IjIwMjEtMTItMDhUMTA6NTE6MzIuNTMxWiIgdDpzZW5kZXI9InN0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUiIHQ6Zm9ybT0iV2FobGhlbGZlcmluIHdlcmRlbiIgdDpmb3JtLWlkPSJvZHBfd2FobGhlbGZlci9vZHBfd2FobGhlbGZlciIgdDpjdXN0b21lcj0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmN1c3RvbWVyLWlkPSJzaCIgdDpjbGllbnQ9IlNjaGxlc3dpZy1Ib2xzdGVpbiIgdDpjbGllbnQtaWQ9ImxhbmQiPjxnZWJpZXRfaWQ+OTAwNzE3ODwvZ2ViaWV0X2lkPjxzZXNzaW9uaWQ+ZjA1M2M0MmMtZjU0ZS00ZTZlLWIxODMtNWVmM2QxZDFlMDQyPC9zZXNzaW9uaWQ+PGFubGllZ2VuX2lkPjg5Njc5MTM8L2FubGllZ2VuX2lkPjx6c3Rfb25saW5lX2RpZW5zdD5XYWhsaGVsZmVyIC0gQWx0ZW5ob2x6L0UtTWFpbC1adXN0ZWxsdW5nOzI1NDQwNDQwMDtodHRwczovL3d3dy5kYXRhcG9ydC5kZS9kYXRlbnNjaHV0ei87aHR0cHM6Ly93d3cuZGF0YXBvcnQuZGUvaW1wcmVzc3VtLztFTUFJTF9MTjs7b2xhZi5sZWllckBkYXRhcG9ydC5kZTs7dHJ1ZTwvenN0X29ubGluZV9kaWVuc3Q+PGdlYmlldGJlemVpY2hudW5nPkFsdGVuaG9sejwvZ2ViaWV0YmV6ZWljaG51bmc+PGRhdGVuc2NodXR6X3p1c3RpbW11bmc+dHJ1ZTwvZGF0ZW5zY2h1dHpfenVzdGltbXVuZz48d2FobD5MYW5kdGFnc3dhaGwgU2NobGVzd2lnIEhvaGxzdGVpbiA4LiBNYWkgMjAyMjwvd2FobD48d2VpdGVyZV93YWhsZW4+dHJ1ZTwvd2VpdGVyZV93YWhsZW4+PGVpbnNhdHpvcnQ+PGF1c3NlcmhhbGIgbGFiZWw9Ik5pY2h0IGltIGVpZ2VuZW4gV2FobGJlemlyayI+ZmFsc2U8L2F1c3NlcmhhbGI+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48d29obm9ydCBsYWJlbD0iTnVyIGluIFdvaG5vcnRuw6RoZSI+dHJ1ZTwvd29obm9ydD48L2VpbnNhdHpvcnQ+PGVyZmFocnVuZz5KYTwvZXJmYWhydW5nPjxmdW5rdGlvbj48YmVpc2l0emVyIGxhYmVsPSJCZWlzaXR6ZXI6aW4iPmZhbHNlPC9iZWlzaXR6ZXI+PHNjaHJpZnRmdWVocmVyIGxhYmVsPSJTY2hyaWZ0ZsO8aHJlcjppbiI+ZmFsc2U8L3NjaHJpZnRmdWVocmVyPjxzdGVsbF9zY2hyaWZ0ZnVlaHJlciBsYWJlbD0iU3RlbGx2ZXJ0cmV0ZW5kZTpyIFNjaHJpZnRmw7xocmVyOmluIj5mYWxzZTwvc3RlbGxfc2NocmlmdGZ1ZWhyZXI+PHN0ZWxsX3dhaGx2b3JzdGVoZXIgbGFiZWw9IlN0ZWxsdmVydHJldGVuZGU6ciBXYWhsdm9yc3RlaGVyOmluIj5mYWxzZTwvc3RlbGxfd2FobHZvcnN0ZWhlcj48d2FobHZvcnN0ZWhlciBsYWJlbD0iV2FobHZvcnN0ZWhlcjppbiI+dHJ1ZTwvd2FobHZvcnN0ZWhlcj48L2Z1bmt0aW9uPjxwb3N0ZmFjaG5hY2hyaWNodD5TZWhyIGdlZWhydGUvciBBbnplaWdlbmRlKnIsICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHIgQW50cmFnIHd1cmRlIGFuIGRpZSB6dXN0w6RuZGlnZSBTdGVsbGUgZ2VzZW5kZXQuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0locmUgVm9yZ2FuZ3NudW1tZXIgdW5kIHp1c3TDpG5kaWdlIFN0ZWxsZSBmaW5kZW4gU2llIGltIGFuZ2Vow6RuZ3RlbiBEb2t1bWVudC4mbHQ7YnIvJmd0O0JpdHRlIGdlYmVuIFNpZSBkaWVzZSBWb3JnYW5nc251bW1lciBiZWkgYWxsZW4gQW5mcmFnZW4genUgSWhyZXIgQW56ZWlnZSBhbi4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtNaXQgZnJldW5kbGljaGVuIEdyw7zDn2VuJmx0O2JyLyZndDtJaHJlIE9ubGluZS1CZWjDtnJkZSZsdDtici8mZ3Q7Jmx0O2JyLyZndDs8L3Bvc3RmYWNobmFjaHJpY2h0PjxuYW1laWQvPjxyZXN0X3Jlc3BvbnNlX25hbWUvPjxtYWlsYm94Z3VpZC8+PG5hY2huYW1lPmZyZ2g8L25hY2huYW1lPjx2b3JuYW1lPmZyZ2g8L3Zvcm5hbWU+PGdlYnVydHNkYXR1bS8+PHN0YWF0ZW4+REU8L3N0YWF0ZW4+PHN0cmFzc2VfbnI+PHN0cmFzc2VfbnItaXRlbT48c3RyYXNzZT5zZmc8L3N0cmFzc2U+PGhhdXNudW1tZXI+MjI8L2hhdXNudW1tZXI+PGFkcmVzc3p1c2F0ei8+PC9zdHJhc3NlX25yLWl0ZW0+PC9zdHJhc3NlX25yPjxwbHpfb3J0PjxwbHpfb3J0LWl0ZW0+PHBvc3RsZWl0emFobD4yMjIyMjwvcG9zdGxlaXR6YWhsPjxvcnQ+c2RmZ3NmZDwvb3J0PjwvcGx6X29ydC1pdGVtPjwvcGx6X29ydD48ZW1haWw+c2RmZ3NAYXNkZi5jb208L2VtYWlsPjx0ZWxlZm9uPjIzNDwvdGVsZWZvbj48T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjI1NDQwNDQwMDwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+RGF0YXBvcnQtQUZNLVNILUVudHdpY2tsdW5nPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+PHp1c3Rfa29udGFrdHN5c3RlbWtlbm51bmdfbmIvPjx6dXN0X2tvbnRha3RzeXN0ZW1rZW5udW5nX2xuPm9sYWYubGVpZXJAZGF0YXBvcnQuZGU8L3p1c3Rfa29udGFrdHN5c3RlbWtlbm51bmdfbG4+PHp1c3Rfa29udGFrdHN5c3RlbWtlbm51bmdfd3MvPjx6dXN0X3N0cmFzc2U+QWx0ZW5ob2x6ZXIgU3RyYcOfZTwvenVzdF9zdHJhc3NlPjx6dXN0X2hhdXNudW1tZXI+MTA8L3p1c3RfaGF1c251bW1lcj48enVzdF9wb3N0bGVpdHphaGw+MjQxNjE8L3p1c3RfcG9zdGxlaXR6YWhsPjxvcnRJRD45MDA3MTc4PC9vcnRJRD48enVzdF9vcnQ+QWx0ZW5ob2x6PC96dXN0X29ydD48enVzdF90ZWxlZm9ubnVtbWVyPis0OSA0MCA0Mjg0Ni00MDMyPC96dXN0X3RlbGVmb25udW1tZXI+PHp1c3RfZmF4bnVtbWVyLz48enVzdF9lbWFpbGFkcmVzc2U+UmFtaW4uSmV5cmFuaUBkYXRhcG9ydC5kZTwvenVzdF9lbWFpbGFkcmVzc2U+PHp1c3RlbGx1bmdfbmFjaHJpY2h0ZW5icm9rZXI+ZmFsc2U8L3p1c3RlbGx1bmdfbmFjaHJpY2h0ZW5icm9rZXI+PHp1c3RlbGx1bmdfZWxla3Ryb25pc2NoPnRydWU8L3p1c3RlbGx1bmdfZWxla3Ryb25pc2NoPjwvbXlGb3JtPg==</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>JVBERi0xLjUNCiXi48/TDQolQ3JlYXRlZCBieSBjaXQgcGRmc3VpdGUgKHd3dy5jaXQuZGUpIGJ1aWxkIDU3MjcNCjEgMCBvYmoKPDwNCi9Hcm91cCA8PA0KL1MgL1RyYW5zcGFyZW5jeQ0KL0kgdHJ1ZQ0KL0NTIC9EZXZpY2VSR0INCj4+DQovQ29udGVudHMgMiAwIFINCi9UeXBlIC9QYWdlDQovUmVzb3VyY2VzIDIyIDAgUg0KL1BhcmVudCAxMCAwIFINCi9NZWRpYUJveCBbIDAgMCA1OTUuMjQ3MjQgODQxLjg2MTQxIF0NCj4+CmVuZG9iagoyIDAgb2JqCjw8DQovRmlsdGVyIC9GbGF0ZURlY29kZQ0KL0xlbmd0aCAzIDAgUg0KPj5zdHJlYW0NCnicnVfLquQ2EN33V3gdaEdVetnQCPrlwOwmuZBFyC6ZgZAEMpv8fqQqvewrq69Dg5GrfVRVR0dVkhhh+Pf0zyAGMQqcBj3rEWEaJgXjJOXw7ffTz98Nf/MX/vft6+n2dtJmnAar7TgbGN5+G75fYADjp3r78stFgDvjRaCDi5Du7J+KDNqpizDOjyy9T+Gd/5rDt5qGV3reiuEeEA+Xp+EpyfAMMzBgcfICwv369un0fDt9PnG0P/4QAg8p+pdPAwx/hNCNHqxUowUY/jppOdWGP4efPHoHBHYDioYeyEzzCDUoGbogI0azAkVDFyRxFCtQNPRA2sxrUDJ0QUqMagWKhi4IYJxXoGjogdQkR1mDkqEL0mqcVqBo6ILQeOHXoGjogeS8UUQydEFmo4hk6ILURhHJ0AXBRhHJ0AOhZ1jXoGTogjzDq8VNhi7IM7ySUTL0QOAZXi1uMnRBnuGVjJKhC/IMrxY3GXZBlsuIIUx4DQhj9hCIYpwrCL/3MRRK7Ybe32HqWj0HAOKoq1otqFIDhNqqnLkAurMMVTQ8UUiuqiB9VfV12pdWJWbQXJHBBGsq5PGDUJz9c44TlT/Aitm/Gl/T+RuYSpVeR4ooQ1tphrrnz4G4NHzC7Gz6Ropdj8yN0MUhZocQvGAIXNI0PJl21IJMCOicIyLrFCPqZ9d2diWCaIJbGN5p+CjDZzcFY01pxZsUlhj/4n8hTt8lTVj5Y3G3PXjmbYwbAinAK6y9RPyLjS/egeFPgUKhfzmq+F9lmOv/Mu3ExJOsKv9HLuO3NLuKCsiIaigjucm/j67LqJpG1WYUrplAuDnMmqCtw4orDB/Vx47fZ0jhWghiUZBqHpGVbjYwj9NONnevCxOWkZdL0HOTnX/PFNpCbEk8ZrvEXfEqyWY48HCK2A3zPWMAgHEc/YSQwn7PjsPBDwXVpYmHfddiGuU71wjFXUwhpWVSLKL4v2OQG1YKRuVS6EwYfcd/6VCj0KwIqpIJDzRFMSQhtEHPtmwsUzZO0vDawE/GMWHsKSwt8nItOAcTB08c4tWVh/bPWzyZn6PMeRIa8iSRhsUlBx5ikx4oK5o+T8GB2MJnd3X0bFo6XYA45LwikxzYnbjlXOhWkXO3Kb6Se866n7spcR/K3YSJ++lNuiE+Egzeg3in4iAX7aIe/qZKlhVI2mMF4yMk+cz7lIe4uIxgkiotX2P3TwTwppfb/R1iksLp9yvLQyTeGgQlTqM4qigivz7BvKiyW8W0bqrjY41aVUWEVFPl6HvUM293DoUrHn6kZLfDOlpS+pnjNOJO5lvB1t1noczMZs/ESn9v1KUiRXokKkpre8VFO9CjK63mmc63jXxpx26axOuO054Qn5k7Xu9po+qY9JKcmuLzbEOvsRcJ8ZRTBSMrFAuRizp9jy5vwAqyVFUytdxz6mzU/nkvsWHbbmIDtKU92NdHHGVhhA7JdRGoBUzLmA8D57Ik5vKOhKidV6vTjuSwahTSLai1S7bEcl1dFXraD+9K2H7s7BPUKDrnxLy/lqqQQqW7m8Nymemz1HTFJ99rraQ+S3Lave7Q1SCyUR+6iI0X0bWnPR6d3r3JsMzSzslH8I8vWAy07eGo2CTuXhDqla7yf5bz6va49zLmpjMpo4Z7ceK8f/Sng2BV46Wq2kB9T+zvAfTbt3GsAb6+mVUhWap64jvRx/XVdnJYX+hrxE5nid0yB6TLVYPDLXRxj62+PZBHM4DjefhisHciqHtJuWPEq+jrJM/xPhIn+H9ZNsM7nCX4orJX0XtZtg8JUtfFYoU/Wu3agR3PT9tuC26ksG1S6xvls6zbh9Jo++/Wws/Df3hikqcNCmVuZHN0cmVhbQplbmRvYmoKMyAwIG9iagoxMzgxCmVuZG9iago0IDAgb2JqCjw8DQovR3JvdXAgPDwNCi9TIC9UcmFuc3BhcmVuY3kNCi9JIHRydWUNCi9DUyAvRGV2aWNlUkdCDQo+Pg0KL0NvbnRlbnRzIDUgMCBSDQovVHlwZSAvUGFnZQ0KL1Jlc291cmNlcyAyMiAwIFINCi9QYXJlbnQgMTAgMCBSDQovTWVkaWFCb3ggWyAwIDAgNTk1LjI0NzI0IDg0MS44NjE0MSBdDQo+PgplbmRvYmoKNSAwIG9iago8PA0KL0ZpbHRlciAvRmxhdGVEZWNvZGUNCi9MZW5ndGggNiAwIFINCj4+c3RyZWFtDQp4nMVYS4vkNhC+96/wOTCOqvSwDU1DT+90YG+bDOQQcssDQhLIXvL3U6oqWZJHlnuWhDDgaZdVD331lMwIw9+nvwYzmNHgPPjFjwjzMDsYZ2uHzz+fvv9q+PNk4orh22/i0shCLx8HGH47+TAGP0yzHwFg+OPk7VwSfh++O33aYwrzaComJfSYwow1UyJ0mbwdXcWkhC4TunGpmJTQY/JLGG3JlAhdpjCNc8WkhC6TXchTJZMSukxgxqliUkKPyRHClXMToctECIeKSQldJvS1cxOhx2QJYV8yJUKXiRCunJsIXSZCuAqjROgyEcKVcxOhx4SEcBVGidBlIoQr5yZClwl9HUaJ0GMCQrhybiJ0mSi7qzBKhC4TIVw5NxF6TMuGZzlmmUwdDvq+yzJJhQvMwq/k1LDHgEjiCg5977GwHaUSed+w8N/nX0/Prye/xO8TjgsteP1p+PoOA5jh9ZcfzgAXPBt3CWfAy5M9mzs/0VhzvTzhGeyFXmd6gDMLeOOZGiI1RNaJ18cFJCX+XFRQ/gCTWeg1nM2zrIH58uPrx9PL6xtLEe0475i6p+8C5tzQCctlSmus2dUo2HjP4LFCXBUCCcI5YmMEGzIh7h5JMlx5Jx5e+D/EVTXpHm30ZHOiCDcZ3N980xYbFRjLgrN4NCwR12/0DOUCVRmpiGw7+TdEPj+dEbLpN+WP9hby+COBJ6LpaQNJCPR/itJEv83eEKtYk12ipt1v9PMDG1TtprZK4Y7fBFvDbqZ1tOxKlmLIOy2M5AXqDVgJuoJ3mJb1PeHcaN94Am4x4ERzigh7jRiCRl8DRwUKNAymBO9zDI/n0qKNP+/i0SR6pbNafO7Cb9+FfmXo88WnqJePmOObPaPFgl8EC7xxZN1WUUWE0ooan0PoLTaS4L+HHhggEgFYC81eqOTxwsp3UbtCIRIL+7DM4RBN3+CZs7XSdYumsjOsywiUUOfdHcfEh4yS6EtaH/ELQiMlyoB1Ze1IqbeitQFr3oLI8b5yNaLwyW4QlZ4VW4Coy9DUoSgOyR1hNah00yYm1h1siiW+LUuNTcNNjZEU+BBJ23RLOeJYQdqWxHldkcXovnPM0kqaDNeX14uDSu4uRUQB6v4zTOrUbRUQqNcW+QbDKP9FhQBZx7OJM+WqfoVrIC5iHbBY2FhRNNmDESUscyMRKLeqDHfY7E9f4oHe+BJCy/E8vhSDSZEP4iux6EA0HfZxR3QGlYvxpPNXRS/GJ/W8dDRd2rbuwCTAcdoZ1m45J/2ay4Im2+AsZxbmUvE4FH52PHD3UdZI1tB6fGsSVm0daybBWgNf+qbSDBnaplpfFNT34q9GNqW/30icRtM2cttQyjlPutVdK8h1HRPLpth3pKPc9TuKJZDVldftzACPwNMWz00cdyu4GEZ5vHQM23SduzQ+xWnKFgpQByBQYrt/SxfMZQNYm/wjvoDWoPegGUeOaMu+8/mNQqxnl51bs78k+0tOmvDw/HFsblslxIMzPbrGUkLuVERJkPlNXSYUbpX1KdYj4LcDp1nK3J2mgLmxk5jpUs9vBwdgFo6UPju16wHhFIk0q6RQnN4RiTiZvfLeugPIU2IR9zK4afV4ycPFgefbqpPno5TqZ3cXlNY7te0djlCz2rIkA8UVqOfVHEeog33XSLC7lT/7600fPzK3LbVrriVM3FpctitlXgbPGzNqWG9jQCm8V1Q3R0/9KU3T5MH4YJNtDRIfMueEvoVUKnZajM7Eb4/7a4zfyyqhh+TtaPdkq+Oz3nxViVK006D3ENQdn6bjzTeNl81b3XyIj6jsef3JVHoXahcdKmw7Vf//QUcO6yhJ4fU/I+YcLbcYh4p7f0/Quk90XjjTCesQ+iYycjORZzDtivN+ZeZTrgt8YhSK3A3wTniMwOLiUQa7az4lWsfJo/NgugPobX/e9WjdANVtXGNJS5GRxc7k+iWNoG5K3aCoWtYV9zfF9Vh5zZPPPusd9rqFT8M/GbRAtw0KZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjE0OTYKZW5kb2JqCjcgMCBvYmoKPDwNCi9Hcm91cCA8PA0KL1MgL1RyYW5zcGFyZW5jeQ0KL0kgdHJ1ZQ0KL0NTIC9EZXZpY2VSR0INCj4+DQovQ29udGVudHMgOCAwIFINCi9UeXBlIC9QYWdlDQovUmVzb3VyY2VzIDIyIDAgUg0KL1BhcmVudCAxMCAwIFINCi9NZWRpYUJveCBbIDAgMCA1OTUuMjQ3MjQgODQxLjg2MTQxIF0NCj4+CmVuZG9iago4IDAgb2JqCjw8DQovRmlsdGVyIC9GbGF0ZURlY29kZQ0KL0xlbmd0aCA5IDAgUg0KPj5zdHJlYW0NCniczVdNi9swEL37V+hciDqjL8tgDEk2Luxt20APpbd+QGkL3Uv/fkcjyZYbR4npHsqCscbzpDdvRjNZkCh+N78ECJCgvLCdlQq98Aal11o8f27evxI/Gwge4u2b4BogtHgUKL411klnReutRETxo7Hal4bv4l3zdA3kvIQFKBmqIN1JuwAlQxWEILsFKBlqIOeVNCUoG6ogq6VfgJKhClJW6gUoGWog2znZlqBsqIJIYbUAJUMVRAq7BSgZqiDEZUVkQw1kSOFFcrOhCrJmWUbZUAWRwovkZsNVUBtr2jEmLANCu2sIpajCCkhc1zFMpTyG1xcY/nv+2hzOje0CoFWyI4fzJ/F6RIEgzl8+9IiD6sEMrkc17HQPIz8VaNgPO9WjHmjp6YEGOrRg2eqC1QVoy/7BgXYJr13aaP6ALXS0dD0cog/64eP5sTmdL5gqRffgCtVr5w0I/cqZ2A1t9tFw9cSojbXS5wPVdCCGjY7KJWHoHOKwyyS0QQi6IX/mD7iPHwrX0bQwpncdvqrjEFxokbH0dH08hV+hCAYPFHQ6oruh2moQxDFug5le0Er16sCEw/aRF2UW8zuOgSMhTVDTJeAUI7H17AaTc/xGm7YBwZrXFVctl+v/p7jaB0nG62ozf9d52W7ln2mxYknTMbnpe1K8fqrCOcVl3BwanopMcTEdixwrCO6aNfibmoEbOXQtSLVVA+KT66l0iXmJFs4XPwqmN6VZJ/PAbaceBv2IcVvDUHwtYJHVxV3KqcAjh7dPsecs3AxnlRSGLoqRUoiMelx8rcaHmifFWnwXF/iB6+F4D8P1bfdR8EDrEF6PE9n0eqqStd5Iu7mm/g7jFvf1U7beo3ogNP1hc4NwoX/quUr03LCL1le0r5W7snO3418lZ3hwupCqeD8hzfqczNLApQhRFDeVIqYtMgJN8q1KRbPAbM65IqlSo9L/0D2YgaG+2m1O1jxcUi8Ptz7WBt8CPx+vc6+/r8+v8zHdkAdejM9Ovw3iNNd6HiWmLVp5mpg84aexvtOJ5wuOdRq9m8b6XOr8WBvJU9HHSGy6iOMkQLKUd4c3MJNfDIh/Adw7TtYDKYou3s/xlh7hH+SX1uOiQVBkxfCGRcYDSbQ8g053ld4647w/TmO7CPxJ/AF6K2sMDQplbmRzdHJlYW0KZW5kb2JqCjkgMCBvYmoKODY2CmVuZG9iagoxMCAwIG9iago8PA0KL0tpZHMgWyAxIDAgUiA0IDAgUiA3IDAgUiBdDQovVHlwZSAvUGFnZXMNCi9Db3VudCAzDQovUmVzb3VyY2VzIDIyIDAgUg0KL01lZGlhQm94IFsgMCAwIDU5NSA4NDEgXQ0KPj4KZW5kb2JqCjExIDAgb2JqCjw8DQovTGVuZ3RoMSAyMTIxMg0KL0ZpbHRlciAvRmxhdGVEZWNvZGUNCi9MZW5ndGggMTIgMCBSDQo+PnN0cmVhbQ0KeJzVfHl8FMXWaJ1eZp/MvpAOTA+ThGVCEjIJEEDSLIlBQMKeAUMyJIFEIYmZAURUwioEEVDEy6Kg4gIiDIuCCxIVd7jgfr1+Slzv/dxAL25AOu90zUwIuLzv9977583QPdVVp06dOludU9Uh0ji3mhhIE2GJVDkn1PCPAw+sJoQcJwSslfMiIjvqvXQstxLCrJzZMGvO5kPXnSOEqyFEfXDW7AUz63r2ZAgxpBCS91xNdajquaH/zCJk6D8QR78arNgsL1ETMsyMz6k1cyI3re92E+Iblos4M2bXV4ZMvzz6ISHDK7D9b3NCNzU8z85CfMN/xWexLjSn+kHjxJ8JGeEmRD+9oT4c2Uh6txMy9ialvaGxuuGOkQcO4/PfCGGHYx3gV/kYsKhSnhmW41VqjVanNxiTTGaL1WZ3OF3uLslCStduHtHb3Zealt6jZ6/e/ow+mVnZfXMCuXn9+g/IHzj4qiEF0tBhw0cUFl1dPPIa8v/phz/OHye38ouJgyyg98s+3EBiJ/MJaf9Webp0l6f8v6VCE/s5SI6QvWT7ZU0ryW14331Z3VHyEnmclraQNX+B9mmyK17aQDaR2/8U7nqyFPHswPEvfSqwdgH5G458mDyKitIdAjjqDfHWj8jrf4wKPoXXyV3kMYS8ixzC+xa0jIXMj+QuZjypYz5gF5MlZBXOcRvUkrUIX0F2wDQyHWtjn+mkmtRfgbSZrCMPk5vRCjs+/OL2/xDjxQNI+SrEs5HUkhtRkqaL3dp/JLncV8Qov0uOsh6kfQ95knZZnOirLmavZ55imLa78WE9mYVXCNDKmDXs0L/g5v/1R7UY/YKde1PRofZ35EVI+0cooWeQGyelq6dNDZZOmjhh/LiSsdeOGT3qmpHFVxcVjhg+bKhUMOSqwYMG5g/o3y+vb3ZWZp+Mnj3S01J93b0et91iNiUZ9TqtRq3iOZYBkiFGoaIwyqaJlqKQr9AXKu6TIRa6a0b0ySj0FVVExZAYxR8u3VdcTKt8oahYIUbT8SfUqboiKiHkzCsgpRik1AEJZnEwGawM4ROjJ0b4xMMwdVwplteM8AXF6He0PIaWuXT6YMQHrxd7UKoUasXCaNG8mubCCqQR9ul1w33Dq3V9Msg+nR6LeixFe/oa9kHPIUALTM/CgfsYojEqw+JMC0NV0ZJxpYUjBK832CdjZDTJN4I2od9UUEZVw6NqilKsVUgnq8V9GS3Ndxw2kxkVfkOVryp0XWmUDWHfZrawufn2qMUf7eUbEe118xdunHl1NMM3ojDqV7COGt8xzqhLQ0KUTzP7xOafCE7H9923l9eE4jWqNPNPRClGmeFRGF/qVT5CEfK6ubnIJxY1VzSHDrc3zfCJZl/zPoOhuaEQ2U1KShHF4fZnVgvRojuCUXNFDQwMxqdeNH5U1DZuWmmUSSsSa0JYg/8KfN4BgtfSAVPyZ80E2YLMQQ57vQobVh+WyAx8iDaNK409i2SGsJ9IWf5glKlQWloSLY5JSktToqWje4UPZTtqQmlzlEsbWeUrRI6vDkWbZqB2Xa8IxmeOJv0seH3NVouYnxWksCJSNbKqVozy6cgk7NW5A+qN0qXZTB+Sfo79fCfgAOkWq5jvQzQKnkJfYUX837waNyIQkdHF/pgiTCyNSiOwIIXiEivcl52FPUIVKLDaEVSY0SxfQ9TuG9YhXYWswtoJpbRLvFvUPjxKKirjvaJZhdSuxMLmihExEhRcvnGlT5NAe+u+XFE4ECC5JDhCAXYORy1LL2wurZoZ9VQIVWh3M8VSwRuVgijhoK+0OqioHXKoV6tAlSNIdWVi6agJvlHjppYOiBMSa1DQcWmFV6DxlQoxNKiAUU2aRixlBDaIgGasEIuw4Bs2GO9RdZoGLzMynNYqijtssFgKAklAIxnRXmJh9Yg4nPJ8GVJeUafhxQlsKuUR8QwvFrxBb+zTJ4PBZjE+MPbQKEwtTjShm8IGDern8GJapfDSrSi9WOqr9gV9NWJUKilV5qawh3I5zgzK87isJl721IlZyCbixebEg8LMaJFf6Mzc6NX0ueOx+IrmkYlmsVnjGzWhWUHuiyMkSPnIKFFUWBpgEagvUAzah75XNKNJU4Nu3idJijHXDFSQ+EZWNfsmlA6m0OhPbhVuVsayklEwauKwPhno2obt88HKcfskWDlhaunTZozlVk4s3c8AM7xiWHBfKraVPi0SItFaRqlVKpUHUXlQMI3HBw2FF56WCGmirRytoM+Vh4HQOk2iDkjlYSZWZ44NlE4HkgiDLVysRUpAc1inidU10Tr62UcUlkk6XtJIWsnAGBlhHyhV+7HmGYw9tUAOGMAIwj7sNZ5WH4amfVpJiEE0IYQUo3DlpEtDT5paesBAsBu940DDlA+qi7sGhY3LSqFYpSjKLcGa5oqgYmzEiaLBfxAF3xAUk28IEqIyRHW+6mFRvW+YUl+g1BfE6lVKvRpVFJyA3ZtQ9iVRUDRgWqkXTVJMfl1oNn+nSCqITqXZ/GUfJO4ERiI5GDeyRE08kpFR8ayK1Wp4lsOqghNZJyxWyM+3BCyBvtk2r8Vrs3gtJ7jqC1tGsyf4xecX8XkXXNx/K8EBkEVyKXM/xjBJpLtkVhO9juV0iMZk1gksIQUFiMpFUVFkZmv/gIqxmK0uXzpjWfTkc3ue3fvEkT1HDjJ28MLxN0/JGfLX8jdy5jvH4QR4kNbJ8hT2DDeKiCSTbJOqvC6t1sOxPS0W1sNmZ6WYXDp7kj2tJGg3J/lLgklOoi4JOjhQcaDniCBlg5gNJ7Mhmg3raJlkQ8npbGjJhrHZsD0bmrIhKxtM2XA2G07RgmZ6WVnZjfhpbGxUisoDKcjBop+4C+hlsZL8fHfnuVkCOD3ont6jfzcIiJY8XxL4uisTDeQ4XYHcfjhth8XM5mZitcphdwZyhgCTuu/tbk9aF1aBkQnsn//qs6+fCO/MZDTc46oDxUsnNN82b+2kZcXylNVNyaPGwaA9NbWgAQE8YKkNddug7rfr4svyAPaVZUerX2v95MWqZ1EeDJnS/i3n5q4lVtKFzJeKbBaVugtmTga1hRWSVSrCdiElQWMXsHNdumhNJmdJ0GTWsiVBrfOUAC0CbBdgnQBNAjQIUCFAiQDZAtyY+JBL83dnlU8vi5cuYwTyQZlfv/4uxhtjgWhx9KATV4N984a5a7rcH5IfO3vhwn/Dx8+Y1t2+dJMKfnnmjenFfdoJdINkMEC3thfczY/ft3cTndMynFNX1DEX8ZEyqX83PinJ6CZGkprGWxiHQ0CJm41E52C8JUHGGU2DgjRYlwYNaeBJg/Y0aE2DljSISbWxMTaHgrgUO1Q9JkGzF2Xos6vUvn55WGdXB4ZAIMfK5qYn5NaP6yo3LnwogC5oj+ogx+U8fPOJF47cdPvfVq/ctHIB073tjWClZ5Gu307uOzk4tLRmqvyt/Nnnx0599t6br+NcVqHRXIVzUWyvTipm1WrCcRotb+IcQCYEgbRroVULp7XQooWoFrZpoUkLDVrwoBPSwtlOTdu1sE4LY2lTWVxAjR2f+DSV+eHUqPXlBRwsTmrVwYMHeXH37vOt3MALr6ANe9rPMr35DMwaC6VUo92uN5m0HOd0JPEaviSoN2nBwGoljYmxKvxtckJZDHnyCVSBgN9CAh2j5CgDpal83fMsvrxA/4Aj4PBZFLb1Z3oHy/5x67K8m157LVCQOkLj/ol5e+mPPy5tm3RtQRL1Je2fyrVcs/wN8sYhaRmecECeQY5k+S1AJ8DmeR0ebqdcu2QJ1YvJ7d+yZ5CXTtKdTJb6diVJSSaXyqRK9VkdiFLPajRiSVBjZpNLgqxzXSo0pIInFdpToTUVWlLjGkEus+mCyxUiLW7HXsWMeyga4fJlQl5Mw/OoVrB5VAXgzoU7chjmoGo3q2775023b2puvnflgj01U8EObqbf1BkL4IULtp39zJHe0PD5sXdPf/Da68h7A/pP/yX/yXJ6HeF0iv8krHCl/wQzg4pptZiZHgGn1cL40YE+t2fvs4oDNcun5dw334a3wIXft986LgfkTwnlUwXaj5XfiPaTSiZKmd2sapXbgJmdlU1LN3hN3nDQZPKYmCTWZGLRnMJBh5rVhoMuNajRXRQEyq40eipwV0ziMbqIT/F9yBSrjXIsL7cfltWXzGYIcFb5l58eftW/u9/hLbu4ni9Gnv/i14+/+fHY1qVLNm5sunbFGOZj+R755tVbhCiIoJ86B7gPPm6Td+zddXLfvZsPXB2TeQnOxYdz0eNsekp2q8pAVMSNriwc1KpZRzioUBynt2MRQ77FvLEXTTlRRvo432//+c+574D89t2hNQ8+sv7u7ds2MC/I2+Q7oBEq4Qa4Xr5L3gR9wSr/KL8pvyt/DSkos1pCOAOun3rSW7JrOJ4nWi0xGIlWp40EdSrOTRTvErMKdDBIRA7SoGMcPrMVvHlezvCP/cHnvgRDm559iDsjPyU3yxtegiRmEizfhPi3In4T4tcRv2TnNAyjN/Acx6pUGiAQCRLEr6B3FwQCWQnT65sdyPNa+Ly0gMXr2Aqz5BdhzCMwZRM3+PNdX15woyNlSRB5l4y864J6kEUmSZl+lceYbEsjxObUGlWq7L5Obfee3XvODZq6g03VvTtrNqfMDZrVbJ+5nfna2fnn/873o/Gno/j756GdKFrgdKA7dXQDNtebcKG2mF6gVfXjkn/992ft9y8ML//hzVM/rIjcvvET+fyi5atuXbTct3XNqs3Q6+51sOqlf77/cvNzdk44uOCB1449uuCgi3M+zRjP3DR/waK5bReXLl97q/zxGiUeyUef8BTGC71JlTRYreruSBGMhAgOFefPMHZn3W5PSTDFbWZ1JUE16zRnAMmAsxnQmgEtGVCRAU0ZUJABWN8RBKABKPMO/MV06apP/UEWZMZ03+lSx9f6buDqxrJP/evUGx95t7nWNa1aVDpj8Zal17zzxoF3Uh40La27OZI9/d61t43sCf5Njyxf45kybuJEqSS5e88xdSUbtty22l485ppRmYN7p6VedU0o7ve4rrjG69DzFUsZFpUebcDl1iRRZ2dXnN12N6xzQ5MbGtxQ4YYSN2S74bS7Y534cxvxXrnanf/+ux/hy1+/PrL8vvvXrL7nwdVMN/kLtAQvWJhs+Yz8aeubJ//r/Q9OxeLBlaho3yNtySQkDbZqtTqSrEsWUqxO4sS1xGk2mnTEcSoFWlIgmgJn6b09BVpToKNyewo0pEBZWTz2omtZTny97uSd+2Z7LfF4yuKz5PYIdGNcdLV2Oixsfu/rgks2HlTtAoZl2CEPLdj/MLPnhnm5++9vW8NOOIKrXf7YhrJ9x9uykOauyNTB/BvEQdZKNUYbqIBhHJyDczl1ppKgDmekwgjJpjKBw+PKco11lbsWuda6trnUJlcBFve6jrpOu8641IPKscTE2lgTgu6l9bxLmlxV7JJ6ZBSLrmxXhYuVXCgJv7/sRowwURYFgZg9U3nkUI8RiDkNnBmuo1SjXA5FKl0h4IDag3/725IVo3L7+AqHvMMeujiSPbT05g1LDKs0RdeFllI5jKcx02KSQqZLeVab22W3Exv6fRs6fqdNxXXtlowuMzmZtdtdkaBdpTj8WWpwqiGsXqpm4o6/rLPr93fWfYVGvCkW0OH74wui2mfzOrysYgQYK/3yzcs/ik/lf7t+x8N3jLytIJrFetuWCnP3nPoF3jzdTnY/5Hhr76blOzL7Mz9vkodOPYe0X4u0d0E/1ZNUSvlqlZDi6I5Ud08zp6hUvXqnWcwWcyRocduWjMEbjDFZwMxjQiB4PO5w0EPXrhj9MeJJwBp3WP6EDv2RCTu9dAJ+yLs0kx4xfYo5MK7Lr1+93+5+JhVMK7fse3TmjA0PLV86/27Dk/ZfXnz3m3vX3R+F5S+9/8IRy/kVy8KLty5uvHHpzfVJT7z4cvT2nd04y34qF4zP2TfQPrqQmVIhMdptKrXaZmSTBbOrJOixL7KvtZ+2c3a72SyqGlRNqlOqVhVPVGZVBX1swQq1FpcCnQ5VUuf0CDQYU7RHmeGNBYGsMv/lMUM8GO+ckMRcE9hWrqpYbHrK0br78zNnWx/5KOXppMbatU1M93+cqplt2PoMpho2sIBn971JU69/PhZLZOHa1J+uTVbST0q28FaG0QAPNjvhLFw4qLFYQK9SgbIGIt+zApcWwo5oAZXam6eEdA5IAjWYwMveuKuthll+5BV5HZNrlO/tZ4YfoUB+AQruYJ+6OPpOdr5quq3t22vslIez6Pq7kXQjQyQxhSSZNI6uDhPhPKImJclq1YeDVjWg5qck1kpFfeOKcBlvAnlD+CskjQThP69jVuDuB7c1jV25IHyP8TAK+L0vR214K7yyG3N60dwD62+5ZeXkSNOtN1p2vvb60+MffHDX9HuLNlHapsEpZizTgKutR7JgOMcDeTa4DU4CkwWAsSyaPeWGEo57HdPgHJzavh35WhPXeSWWLZH8XS0qg96FMayK9aVaku3Jc4N2O6vVJmGsZlhrYHS8AcMd8VK4E7iUjXWKzxJpjT3m20lAtKnTlSKdrbqzn+/y43vfXwQVsn3C7rwDm3f23R9+6ctDG1fctuWB25ZsgBOnZRlmwHiog5Xyp57d8qfy2Wnl597f9Mjdix86tbcj9wyjbvtINrlTmiz26qVWO5JMmSxrciRzOX27uscFuzpFYlH3GhdUqy2kIAlMSfVJjJ5NSrJY9CVBJDG1JEicLTmwPQfW5UBTDjTkQEUOlORANq0suzIXTag+eqOsDlF3NnFF0jyNSQogIW2MBHGZoImJg5o/Juw9MEi9CsXPIEfg/od2fPzzfxpuWlCnfy4Tlh3/e+9Byd4RV1dNU6kKD02t3Bx8edHSonL77o2PHVRxg5Y1jp9qgdRn98mZJePUDebahltm3T71vglBjsmuGldaEVsbm/E2hOZ+86RxLCE8JjjEcZaHVh5O89DCQ5SHbTw08dDAg4cHEw9nOzVt52EdD2N5aKddTtH6DuCOBfN3iWA8CUR9R2Y0H+SPn8+l9EzAlW0zNxDTyhnSRQazc2BVGkxAVCyHzoUzgVrZTSGOd/VwTA8H9bBDDxv0sEwPET1U6WGiHiQ95OpB1INdD0QP5/TQqgeEb/kT+BEUPlUPnB6+SKDdTsGa/gjMTiH7n6PQMTp2UIxVFIijQ3Y0dR4yBhAbCWliTlGionS0dXpo0EMJJRypVk8vS3zKO9TrMiZeAujM49+BJRLv+GLeyQwVX6OE/g7wOiYwZW0vs+a2B5nwKjZ99aqL/1wd0w8tIeoV6Fu7wEWp3d1FozgMu9oCGjNYzJxGrQY9qzbqtFojZ+/CC8mrBRBabllUnC9AbwG6CKAT4DcBvhbgQwHeEOCwAKuETcJOgb1JgFoBBgrXCFMFtpcAyQIYBKhpE+BbAT4W4LgARwR4XICtAiDWWwS4QYDrBBglwGAB/AKkCKAX4KIA3wjwXwK8KcBzCXiyRoBFAswRoFyAMQJkCQUC01UAkwCI/wzFf5Li3yvAfQKsVWBvFZhpFHqQAH1wGgIYBRhwQYDvBPhIgBOCVA/PCvCEAFsEwAEW0gFGCdMEJp8S1IUS9Bsl6GNKUGwC99EJ3EonUEYncJUASgdcKZlyYZGwTTgqnBbaBRURQOM2c1rWbjSCxorhAsoJbwFAaZffeGP5X8j4SoXo0IjyPwa/HF4B8KO/iqmGsoeCXrqsTLnRsNbHpvdIAtYHAZvT1c9qU376DwEI8P/64pw7Mzm1/Qs59Gpbn3R3wc+HfhogaoXuoHmVXTTxw8jWi1X84ouLH9tfBxw76+LdH9zjC69n98f0604lNkf/4yYV0iCHxWLVqK3qLsk2rLaqHawREwfzqWRoSYZoMpyl9/ZkaE2GjsrtydCQfEVoTlcfa37BZaE5xANxX6cQPWDBOAquGvjQrdFHn+xdMWnRpoMH1cAuvr5y79/bspg9jfW50XvalvDH5duuWqKL5RLMSlxPbMQnmVU2pNNgd5hUOjNnwli9oECR2KUEJqDkAE4HTQFisbLDcqdql4bzN8xMTUsd3DCPHdLYfDht9Uzdw7oXDrYdp2sWh254PNqcmpjJNKmfEYiBYVW8BpdutDjWajEw5UGDgW6OW6NWKLHCWSu0WGGdFSqskG2FLCsk+KHkKYH8jkA5ByVqzc+3Kqu9l/UqAtWCWqXGYnoPbu0Dbbc9+ApT8CHTr22atkvfg4zpyZQU2CpXKXvs3A8pE5bIfeGtwilUdqT9Wyafrh22Q7GtMWQLevbYzpgDAgBb7pdr7XzreVGBfwxjJJnuUUyUcnitluhYNUZNRl5THlzLwzM8LOBX8QyuMBqW5wkAVx4ElmjLg8QqGhM7fJeS/bJY4NLhzSwY4sevx7g+F+9icy7+nb2XX7xVHrxZdmwlcRpUDNKQDOOlM26SbDYmJSelCKzOrTOxRG1nk6zrUmAZTfeqUmBECuSmgJgC9hQ4R/PBYymwgwJEUqAiBSZSAHMKcCkw6wvafDAFNtDmEto/lbZh53dp07JOeGNIYxhX0y4xdAjfH3G92QlXDJE+gejZBKJRCUQXUuCLBK6mFGAa6PhSChRQ+klKx5JSfpl3+J03+MuF5lKg4wpQ53QpjI4lv/3RnHyQpZwIoHVBN3ANgf6oEPxkbd8e8oYV8toBXpbbdQHm29NUGtS9hp/Y3VvXHai+KLEtu+rqj1yciM4ia9Dt3Xo+5GDfOr8IZTYU9eYhlJmWXCP5NQyr1qo5htPp1RjKoorwLEb7qEJgbaJraAVdRjEKoBR3Xvo6r329ILH4cQ9duJ+devEM+/XFR9hVa7nJW1dfeETRleWYF32DsUgyKZcGWTUaPXTRd0kRrDzdNnAaHVpi+j/cNiCBy12TxR7brYnv5jI96GFNep4FBv5+14Ab2Dae7hsw4YtPXNo3YN5C33FYPg+LlfiJGEmm1MVIiEaHjiLJpNdtnaY3Ef6xaRqyFa8sf2K3JcGRNEfsjMGXZ8nDNGhxes+F00tfOrn1+juHrrztJLP15Enl3EOewnXlxtB92zKpv5t4LBqNlmjT0yycg4mdexhMGoHpTs890qEgHdalQ0M6eNKhPR1a06El/X937hHf/PF27+FzdmykODodeyTBpXOP85N57qBqD6AuZN+/+LVXjty8/IYFBSs3rVioHHw8p3lQDvKqR/txfWfaqsrkc/LHn7049eim9954mfraZ1HQtyG/lLOPHpKNVas5wmk1HL91GvqzrdPARGnM6rwtRQ8t8Hr2pZdeYm84efLiPcgaAu1tyltwyptusEdqB0wpVAZTEmvTGlgLa9eo7Zj2ajSg1zjYJBurMYHBwqod85ww0wkTnVDkhH5OSHWC0wmcE8454SsnHHPCfifscMJGJ6xIQI6gkJgQqJxQ+7MTPnPCu054xQlPUbhlTohQ0M4YVQmMT1F0Gyi6WidMTqBDgC+c8D4dEmEeccIqJzQ6ASromKmUqAHn6FDHKI4mOs4oJ2TTZqTnAm3arqCXsmGhE6oo9lwnCE44Swd40wkH6fDLaGuBExizE4iTHnGW/y6YvSJaKb+y/cqo5vIY6DJv5QrgwjQdo5kyJcqhC2GH3/Kxl4Kb/hjbKDdu41tHUrXpT5+S39p/SJ1q+eyFI5meE1GmbWefnW3ZaINe955r2GltXZ5fzSbTtYXqEvkIdckl6TCX4nAN2zKNkJjyxAJuRWs++qhjX1Llw1iiF9yGsXUvQrxar2jVaEWtv3dKWkkwxey2EIeDi9mUV0scVX4Y5YcCP/j94PGDyQ/f+OG0H571w+N+WO2HhX6o98Mg2qr3w/XY/CZt3kubF/lhmh/G+kHwwwU/nKGdOwA2+CE2gJ8CcH4454ePEqix7w1+yKVNOHD+BdqGPbfTnhGKelSCND0dIDb8DkpXrFWgSE/5gWmhPdf5oUKhCN11th+y/ED8sdPuxFL1B3Ke/jsB/9l6lRB/TmKvNv/SBnNixzC2bqX/wZ5tx9atL9HOkskN4RUH4s544MbZC9emsAO23bjjnv2TG+YtZfbcd1N0+6Xd3PDUGTfMqdj/phJJ3nfT3gfa1lC5H8HbLfRdhzukENUTjHKsEg/ZPIg8mHkgPOSfTeTXmEpX8FDCg0QbznZKvWOV5kT9XpqMd4YXO3LwP1nwr8jEjxxVAr14rJaFNPLEIyUpNOK6zhJWCcViTjvOxVg3DLiOMq/xiy8IW2N9eRH7GkmJlEV0OqOa43gjb0rSg4rVEN4qmqDFBFETbDdBkwkaTFBhghITYH0HtUru0zmYjm+vJwKLdGWpRCNM4vldnzDnDbu5aOjRi6VIQvGxUnYrzoEhD8hfquswPi0g15LbpCJB3WvA1Sa1JLlcbi8hfd2mAfzYEq7re0GOMxiueT9oG/5+0GUzGTwGRs8abAZb7uDBae8HBxMmG6xcdm5un/eDuYTuZWH02XE+m6XEopaAP7btc+U+T2LHk6FnUP3j63quVdk9D/QPsCqHXTmJzMtlUn3dOcZht3KBnNT+LhXn657K5JmtxJvDWfnOq17/fuq68IlFlbNZ1bCXbrzvicX/XvPReFWPrZG0cSW3X7tZ/uTFH+U73r0Per2yHnpv779efmLPD/K9R3+DZ8D6A0x/uu3BZXXV900tr7z1VE8X859n5Hd2lJYWLVx4/MkdkPzIU9tl1Y7g9OYf7z4Ajnvel+ecf0H+8P5RUxqmTDsKoa/ADW+Q9iflpz6beeuiT5fetPLt+65DmZe1f8v9ym8kfcidksdAuqb4nCqed6agFmUazDZn8UhD0FBrYE0G8B1uPyvlY1WRb7Jvpo81+sDAGXxsly5iebC+KwS7wqiuqGxdQct37cKxGP9XqGC8CkaoUH9sl84AFCkoK0JMDkpC4C8r8/9uK53zimziMAwjq0w2LzfVe8VhGM/9Kp+Uv2lrG/+0eOrA068XNN5f8egTVXngAOasHHjOs2fzzv2FS14cunjerNF+ZU8dZqYtmr9oYeHkAenOtGum3Tz2yWN37/M2VDfUD500yG/y+AdObOxkC3rSKLnULMtpCNFzeoNRjTlciRpa1aA+3P6plGkbuUC9Ss2Y1KBRq7U0tcOcp8UIUSNsN0KTERqMUGGEEiMoudAlM6HpHZ37jf4rrcXipTmuV7GVUJvq6FHm/FFmTVuYX9y2m5mIRkL9kYhxbg3SaCZFUm+W0SYl6RnWYjXoMctkiao8KLHAYpIn0vQSs03JCmIsw1TGzyq7MpLkOxhuwRAbU2x4Xd48/FnrbeU1N8k/wIlP7NDoiSxZ28wWbr3oO/FNbB+SY9FW9WSNNEujBZ1WxxG9EuJzRoPHWGBklFu5sd3ImYyx4iIjn2+UJkwurjA2GbcbW4ynjPxpTJaNsWeOGM3GbKMUb2w1njVq1QyodZzGhMmqI5auF7jyYboSmvvx3hhbEDA0sCZiPS+oKQuVNJnNlu9advAgfPSOPBL+Dt/PkRfxxy+GGKOc1XYvzkFNCPsbxn86uE76FYhKq2MZRqVj9QYtY1KBY4sBlhmgwgATDTDCAKIB7AbgDNBqgHcNcMwA2w2w4XKYGMCsWHOsrXPDR7Q+hncarRcur19N60fRer0B+mPDm5c3FPzPCOmA+T0AU2KALAOYDUAM8SSz/C+W5z/PNP840cRV4PKTA28sTisAW4Cpfk+e3/K9cYCvx89HcTWQer48dx7zIsrCy+xn2lCnk8gEKcdAWJWW1/GcnoNkrjfHqDVODfCaNA3DaXRJRiOj0zEm82llHT3LMzwueAXHy8ouvSthyc9X9sKUy+JSDhjTXLxLrYce/dP682wAXgNNH/mrp+dv3Dr/iPzvPsjqldzUWctGni8Gpp0U/zpyxQ3Qi9oazc8wRtSS7pIFA0QNr9HpY1nZllhW1inRuJSRxbOxjx6jyVg8fqwmm7libhdRkcFSD1aFiYtawxeoFqnWqlgVm800ME2M8pcMJq6Aq+e2cScxRSJdssoCgRNlOfiPslVJZ8ChBUc1+znmv1OZQSfgwc3yXfL6Tb8bQ8UQFsdgs7kGroljOSggi8hajGNUvIkpYOqZbcxJhmf+YIz+eVrMt3GMqTjG55s3QT3UbZannyCkvT12RsMvtKZjpo1ZExlEvsH5dZW0LNO3ryWdZfIOt79xMC/AJqf5LXl5hN5wfe/DvcRM5RfS3C1VMmPmxnIs+g6e49cHCUcuO+ijawGG314ltz30UNs7D3MvHcZPbI+bH4O6oiFDpHS1BpUA7ZbXsDqtqCvRMdm6Ct06XYvurI7P0oGaYXmwUrVED9ixYxpzFqiZ4OoPATbplbYXXocVEyfCstf5xRfF335jW2m+qawH1XQvw0YyJJeJ12GIZXeoksqDKpY3lQcxOnJ02uq6RLud4Xzo0EXCmjFjsHhz+ln56l3ya8fbfoC3YSYsb1HOv9C9DtzyzW3MyX/KT+/hF8ub5CdBBbYL+1Yqf6/G0rjuaxqbOUk3UiMN1Ns0NkHgkjQuQjQc6xH1tmRbcnnQlmpjxphswA6xAYe/Zt5m43jequy3cEJ5kLNeuR1XXlZ+4x+cZsdP5GPEK9ut3QAwmvEqM7DlxmbCfS1/f67tGEPg7B1Njz0lf791g3wUhm66d5z8oLwVwnu3w5rn3sLp7Lp1V1f703C+cYY8LNzW/pvMLYnZwqz2b/nt9Px1hjRIrTISm9utcijnr04HBq1OcLNOp8AK5vKgYGN15cFstaRm1qlb1YwaF5kmESpEEEWgIXFAORK98r2iy94ZVoKyWABBlCNMjMnylJUuFrTNggYY8zWkjn1q8Dv3nZNlsP7YfOYaeRozqUF+9vmP5ZadzKswBW66f0+/m+rkD+Vz8k/ymxOL5e1ycuOtURil2MRqXJN/oDaRrorZxHcxm2BAECzpDHgOt//noKdrF2NnmwByJ9rSWlxH+5I50lCPNcPdQyUaDIT0yBC5nECqGxxuULnBb4BkAyjRmJ13G1LZVKEkmEpEB6tV3tRpCMDYAFAFj2tiQUeMFXPtCXZQ50jfClHeWMiCxDtHPeiLVv2HxA83aQoVe+9KrUSxGHI5ubXP7Xq8gcndXnjdjEmh66bl9xuYt2LOhtUHv/n385/eOLZ7//HZh6HHxof77ujac/JYaebAfssmX1XVJ3tizpiy7Q9eRFP//KsHVq6dVdy3a/qgfPGW2LsAIdSDD1APktCXZEvJDo0JzVpI0aPe6jnOjXpra6IbomV/ZmM06qZBt1p5hTAmX8J/sFM+9sGH8suPQCNc8wEMfvQl+bezP8q/gv67c8Azr34sH9wfhTGfwHi49XH5mU9ADRnyP1Cyv8ivQx/q5+g7UlSm5rifO480J0smlnG5FD8ncEIXFekkUCBolezXGFPoYaK0neg1GBaBWsUzLMurtXreaFhmhHlGGGGcaKwysv2MkGoEpxE4I/xshC+M8L4RjhnhKSPsUOBWGDca2SojqIxOY7qxyDjZyM9S0V+l5RXj+8avjJpNxg+NDAJNVtBCZ5RK889G9piCIN3YDzty/WcaHzE+Ret54+H2FqnfVcOK843Q3QigBGDMOSWIPYXhF3tQiWLXYTDGRmgkO9EIkhFyaTxLu3a3uosx1GWUfiXGBqMCrcJ4DTg1y2hUJsI4qN+lLhcUVfR3ii/KGxv9jdM7hxW/2ydIOGt014kIWQs+rRLbKeGdV/5Y/uhFWCyvfxWSwPC6vB5WwHPyCCaDSZKnwcNt59reVmysBnVsAX1ncbqUz5pdTo1W6zSzyYLJBUbW5bLZCPpPjmjMGklTolmn2a45pWnVaAwsXgaMpw028fJ3ZC6VLn9PJqZ9oq0jG0z4Hdb9tXwRTP+CnvdsnSK/fOo9+fWHYDYM+xQyr36y74fcefkd+bzcJr8Madc+9fw+GPkpjIPbok8MXhj3l/fjHHrhOmAjI6UMI66dZs5hT+JZgq4RI30HtDgg6oDtDmhyQIMDKhxQ4gBlabqUedAcrJP58N1TaVoeexGZnq1xzEdPyPKdR489/fw7z6+Xf7HfdvYRdvHFtS+8dvJVturi+sd/XUoS5zLcerou9pO6As+rNIyK1enpERDwajVyVM3i2qhX+Pb7t7+ULXTl5MeHd5jFWi9+f5T9b+7LtnP3t73ML94aG4OXp7AX0Zac8IXUbtOYLFadVsuarJzbpbGZbC6L1kT4kiAR7nLDEjdE3FDlhvFuGOaGXDeg77S6gXHDOTd84Ya33fCiGw66YYcbOsNP7gTvpPCzYh3e79Rh41926AwPUTdsd8MGNyxLvDg50Q0j6LuTohvsbuDccNYNrW541w3H3P8j+P6tbmlqHL4DuAOyA6wDZ2cYpiSBi7ihJfFKJ1ZmucFMKzteXfizw+crD6ovyxPKf7+p+5c9EmoYP4zqlCfYuvfIQ00sAEwXujHKli4kMUevyUnPfGyGRZ7Q8gWfNJot+u55uWJ4ZI08RX+76hc/l9e2K6nHJ8aXmX0XXnli5wSqN1XkIHc1dz/mpsOldAwWVSxrNOxkcPlkyhnGgFExBtZPBLXvq6G/+nYMKPgDdJOChp+xTYpOf/IQe9XMS3fNmG13y6Xw2N3wGFMhT4Tdd8FueeJdiTixJh6nTZGywGCwaW0syyVpidGo5ViX28DYGHQzNpIIyog19m4tioau2zkFf/zyVXzZVnJbajA5nJJmAJsIyrg7MPofeZS593tgDz0A63599D55EJy492FmZNshfvF7z9/3fkrbA+y3Cxe3/Urfb1boJdxvC+vKTYN/Yjyxv8F/Tfptc+Lvtds/laeoV/DK6bam44+4sZ96iHwtGd655rLPKBUhJ5hdZBEXJpPxmoLXMniVrGLyiYcLt3+q1GO7AX8r8CrBqxavrXgFOULy4/1WInxX/B2P17VYr+DJwmsW9p2GvzUKbsTbjG0T1GuIFp/vxDalH+EnEy7++5hqF3mM+5wMxfblWHdYoQd/n+VfbW9TflWxPkew/jH+VfKYxkMewH5lShlxi3gpY6jZrpifKv13k2p64fg4Xh+E1SqwdKx8MgvrV+N4d2I5ROdCiAvba/C6H+sVnDz2r1L6IL/SyWTyPZTC84yGGc1UMa8wv7LT2e3sKfR6dVwrn8mv5H9UlaieV3dTV6j3qN/QZGie03La47qL+on6Ffj9p/5HQ64xyXiNcYfx3aTBSTNMM0w3m+eZXzN/ZeltabXOtj5vI7YZ9p72iH2z/bhddiQ7hjgijoNO0bnSucOV6mp03eGe7D7chXTJSb42eWXyJ1Sqo8hYzD3yMSdjMPbJItehyuxgMGGlrd2grkP2Uzr0APNWfIqVGczwZsbLLEZ2c+JlDmFuj5d5jPk2xssqLO+Il9XkZrI/XtYQO2TEy1qSBFK8rINauDZe1pMU5lDH/+6RybwTLxtJHpv4Xz8wumT7ISXAoTsge9iSeBlIN1aOlxmSxKXEyyzJ5XrHyxzpxk2Pl3mSwt0SL6uw/Ld4WU3OcQfjZQ3pyT8WL2tJCn8qXtYxb/Pfxst6MkDzfLxsINdpfo6XjeR67fh4OYnkap8bUTurNlJ7c3WVWBWKhMTK+oYFjbWzaiJiz8peYk5232zx6vr6WbOrxeH1jQ31jaFIbX1dpqgbfiVcjjgecRSHIhniyLrKzNG1M6pjwOKEUF14fPWsubNDjUPDldV1VdWNYh/xCoArHidXN4aVck5mdnZm4FLjFaC1YTEkRhpDVdVzQo03iPUzLydCbKyeVRuOVDdiZW2dOClzQqZYEopU10XEUF2VOLGj49iZM2srq2llZXVjJITA9ZEapPP6uY214araSmW0cGYH+Z14MSFSPa9aHBOKRKrD9XXDQmEcCykb2lg7pz5DnF9TW1kjzg+FxarqcO2sOmycsUC8vI+IrSGcS11d/TxEOa86A+me2VgdrqmtmyWGccZiuLqxdmYchRipCUWUmc+pjjTWVoZmz16AUpvTgF1noJjm10ZqlNFDs3dlxqhAtsxEdoq1cxoa6+dR8vqEKxurq+twnFBVaEbt7NoI4qgJNYYqkVnIsdrKMGUG8kBsCNX1KZzbWN9QjUROuXr0JUAkK8bIcP3sedVhCl1XXV0VVgRRhVOcjZ1w4Nn19TcoU5lZ34jkVUVq+nSid2Z9XQS71ouhqiqcMzKqvnLuHEVEyOFIgrhQZWM9tjXMDkUQy5xwZk0k0jAwK2v+/PmZobhUKlEomYg566/aIgsaquOiaFSwzJk9GiVfp0htLhWtMokJI0eLYxuQP0VInBgHyBATStk3s298CGRjbUMknBmunZ1Z3zgra2zRaDKC1JJZeEXwuplUY6wg4hXC5xCWKkk9aSALSCOFqsFaUfkLAtILf3NINmbp2Vi6GqHqsX029hdxPaxH+AZ6D1G89aSOZGKLjrb9Nb4cLI2P01FM+2dgaSRiqEQco7HfDGztjFkkE/CpjoRpv1lkLtIRQoihWFOJNXWIS+khkj54/TWGv26dTFvCHfU5SFE2fjNJ4A97/jXWWmwRKZcjtEWhcg6l/Aasq8f14q84ISJcNZVcGFuq6VMVxargnoQQEyhUCe2pcCFCR6ujUBP/YMSxOOJM7F9JpZiArKS4FW2IYa7Hck2cn9cjrxspBVW0X2JuYRz599z/Y72YQKmbR8ccQ+uV5zBtG4bP4fi8YjwbSsebg08KL+YjJcq4NbQcovysor0V7aqL95yB+ib+5ThivG8oLpc6/NYjbIxKpU9GnN8z6T1Mx63DMUQsx2QsUkoV6mZeQYVIORai/I/JfA62RihsJdbPxu+CuK3NQf7ERp0Rt6b51DZrOuaO8N7uVLKXeBHTlplx7RRpbQOW6yntCe71oRJR6K+mVCmlELX1GdhjNh0nRkcN1YkQlWh1XMIRSm2CS1XxWSkUNtCaPqSQaoNi39VxTk5BzzD6DzHGuNVZIxVJzKb0hjvhrqPUVtG6+g7OKlCz4yPFZjybeqAbOqQyk2pZjHtVFFufP+HvTMqbSHzUekpRFX5jco5pVD32nUulFrOimA5Hfse5EOVvfbxfA/VDkTgtc6hV1FC9ayADMYbMQuqUbybVvs62Uhm3lMw4zVn/x/0UuhooBztbRWMHLXOQxtFxm6/rsLW5naw2IYkJ6HlGUy/RENefojjnxCswKLZypafsi+P1vWIWMW2sxecIpSdMeZlJ5zAL28fiCKNpvBzLwXpgdPwHn6FeooUCApBPJsGQ+O8wjIztxAND8deDv4NIAAZi/QD8xXYigVr5G3163wactAta2mBvG5A20I29AOIF+Kmkp+fHop6eH4p6e84W+T3lZxadYUxnxp4pP7P2zN4zvP7LL7p5Pv+syGP6DKTPipyeT1uLPCdbT7eeaWWl1kC/otYit+f779o938G/J31b/M2kr3PIpP/+978n/auYTPqKtHs+vur0pNPATvrkKnbSf7HtHtN7nvcYepPecAtFJ1+EIy2DPS+UpHuee76np/1pKDnccLjpMKtsNLYftuYUeQ4VHBp7qP7QokPbDu09pHY/BQ37t++P7mdN+2HdkxB9EkxPgsZ0oODAmQNsU3RdlIlGW6KnomzW3oK9zPYnok8wLU+ceoLJ2l2wm9n2OLTsOrWLGbtz7U4ma2f9zqM723dyW7ekekq2QP1GOLoRNhZ19dyzweUxbfBsWLRh7Yb2DXz2emk907QeGtY2rWXWrYWWtafWMmPvKL+j/g52RVG7Z9tyWLa0rycSLvCEcSL1dYM9dUV5nmRwT+oScE9SB9hJKpx6BbaV43VdUV/PtKnFnqn4a8uxTuKRPVwOO2k2CwZ2MDuanc3ewvJnxrVLVeMYaVzegCJpXFrPopMlMLJI9BQj5qvx2lsEp4vOFDFNReDMcUyygGmSOcc0iQGUPwGPx1RgKjctMnEmU5ZprKnetNZ02tRuUhdg3RkTW09gLFFeDeThMKzbN3GC3z/qsLp9/KioumRaFFZG0yYod2nc1KhqZZRMmjqtdB/AncHla9aQYV1HRXMmlEYrugZHRauwICmFJiyYu+5zkmHBcCQcmetXPhArkIjfHw4rJVCe/LE2WgJ/GJsRDDvhQ2QuCfvDEQiH0VoiWB+G6VgOo6/B+jBgF7zC/jj+Dkw4wHREhLdIbIhwGPuFEU84Ppx7Ovlf3GuZzw0KZW5kc3RyZWFtCmVuZG9iagoxMiAwIG9iagoxMzU4OAplbmRvYmoKMTMgMCBvYmoKPDwNCi9EZXNjZW50IC0yMTENCi9DYXBIZWlnaHQgOTc5DQovU3RlbVYgODANCi9UeXBlIC9Gb250RGVzY3JpcHRvcg0KL0ZvbnRGaWxlMiAxMSAwIFINCi9GbGFncyA0DQovRm9udE5hbWUgL0NBQUFBQStMaWJlcmF0aW9uU2Fucw0KL0ZvbnRCQm94IFsgLTU0MyAtMzAzIDEzMDAgOTc5IF0NCi9JdGFsaWNBbmdsZSAwDQovQXNjZW50IDkwNQ0KPj4KZW5kb2JqCjE0IDAgb2JqCjw8DQovRmlsdGVyIC9GbGF0ZURlY29kZQ0KL0xlbmd0aCA1MzkNCj4+c3RyZWFtDQp4nF2UTY+bMBCG7/wKjtvDCjw2sCtFkbJJkHLoh5rtDyDgZJE2gAg55N/X77xuK/WQ6AHGM88M2Nn2sDsM/ZL9mMf26Jf03A/d7G/jfW59evKXfkiMpF3fLvFK/9trMyVZWHt83BZ/PQzncbVKsp/h2W2ZH+nTphtP/kuSfZ87P/fDJX36tT2G6+N9mj791Q9Lmifrddr5c8jztZm+NVef6arnQxce98vjOSz5F/D+mHwqem2o0o6dv01N6+dmuPhklefrdFXX68QP3X/PKsslp3P70cwh1ITQPJeXdWBRLiuwJRdgRxZwQX4Fl8qVA1fKRQ1+YYzef2V+jd8oW+U3cg7ekrXujmzAe7K61axlA5uc+VHL0L/cg6N/Caa/hb+hv9W10V+Z/haehv4WPRr6yw5Mf6s56V/CzdC/3ILpX23A9C/Qi6F/CX8T/ZFf6C/oXejvkFPoL+hL6O/gL/R38BH6F6glcf4aE/3fwPSvNH/013j6V3AT+gvmJvQvNT/9Hd6R0N+hR6G/Q7ylv0N+S/8C87T0d+jXRn/UtfH7gZulf4V5WvqLxtBfUMvS3ypHf61L/z3el6V/oXno7/R+9MecbfRHv5b+NXI6+u8wZxfnr0z/Gjkd/Sv04uL80aOL88fMHf2dxtO/wtxc/H7Qr6N/IboZ467DtsS58We7p+19nsNW18NF9zh2dz/4v+fPNE5Ypb/fd8sWvg0KZW5kc3RyZWFtCmVuZG9iagoxNSAwIG9iago8PA0KL1N1YnR5cGUgL1RydWVUeXBlDQovRmlyc3RDaGFyIDANCi9UeXBlIC9Gb250DQovQmFzZUZvbnQgL0NBQUFBQStMaWJlcmF0aW9uU2Fucw0KL0ZvbnREZXNjcmlwdG9yIDEzIDAgUg0KL1RvVW5pY29kZSAxNCAwIFINCi9MYXN0Q2hhciA3Mw0KL1dpZHRocyBbIDc1MCAzMzMgNTU2IDU1NiA1NTYgMjIyIDI3NyA1NTYgNTU2IDMzMyA1NTYgNTU2IDU1NiA1NTYgNTU2IDUwMA0KNTU2IDU1NiAyNzcgNTU2IDU1NiA1MDAgNTU2IDU1NiAzMzMgNTU2IDU1NiAyMjIgNTAwIDk0MyA1NTYgMzMzDQoyNzcgNjY2IDI3NyA2NjYgODMzIDYxMCA1NTYgMjc3IDU1NiAyNzcgNzIyIDI3NyA4MzMgMjc3IDU1NiA3MjINCjEwMTUgNjY2IDcyMiA1MDAgNTAwIDUwMCAzODkgMjc3IDU4MyA1ODMgNTU2IDY2NiA3MjIgNjY2IDc3NyA1NTYNCjYxMCA3NzcgNTU2IDUwMCA3MjIgNzIyIDYxMCA1MDAgNTgzIDcyMiBdDQo+PgplbmRvYmoKMTYgMCBvYmoKPDwNCi9MZW5ndGgxIDExOTYwDQovRmlsdGVyIC9GbGF0ZURlY29kZQ0KL0xlbmd0aCAxNyAwIFINCj4+c3RyZWFtDQp4nOV6e3xUVZLwqfvoV5J+JN23kzTQt9PmZV6QTkAwkEtImiBoXkTSYEyadIcEknSb7hBxdAijjhLAMKuzOjoCu+s4igodfBB1RpnZn87OCDv4GsdhHfExu+OoAzuL7iyam61z+iYERv1+v+/3/ffd7nNPnao6VXWq6tQ5TYgPDoVJKhkhPFG6+oPRrRtaryGEHCcE0ru2xuVDmwPVCJ8mhLuzO7qp//6j150jROghRP/Upr5t3fdG/vklQlLnEGJb2xMOhlYecZQSMjeKMhb2IGKL+h09jh/B8WU9/fEbn0iL4dy5KJ9E+yJdwV8t0lUQMq8Kx0v6gzdG3+BP8zi+EcfyQLA//Hp1VQOO7yMkJRqNxOJvkcunCLncQOnRwXCUTD6+GMcFaNNexAF+6JOKoI6OOV4QdXqD0ZSSarHa0jPsDsmZmZXtIv+fPOJx8Ti5RdxBHGQbe1/0CEuInQwTMvUJHV14q+um/vv/pRUG9oYsyCWfkY9nEX5GXifPkQT59WxuyIdCGj1IJx+Sc+Tlr5OK8tywhoHvklfJS+Tpr+HjyKMwSX4LWZjnRxGiuGpyCtrRnoOIGyJ74EvYBh5yAKyMugBlm0H4CllLYYqcRuvuIafJPVBLTosxPgsJv+VeIj/kd3AnyCto8zXcHsRNkbfIcZgPdSRGniIPMwEx1LdntkRM938k95FbL2DFQ+pPxB2T84lt6nPyDPkJ88B2Mko6ZyadhT/DXtyTWWCA6Zi+ME3U1/ObuWc4bvJuHHyPbMIWhLeRew+//JLlHFQjag+I5G604H1oImMo5ZD6rPoQuZ4c5t4kreQv5GHBocNdxb9HrNx5YlHfgD9N/ReZYLZ3kZRJy9RnSWG6HcIwcQhv0xyaekndjn49Qf6C3n8TspSVG9YH2lrXtjQ3NTZcc/Wa1Vetql/pr6tdUbNcqV62tOrKJYuvWLSwcsH8stKS4oL8vNzLvDked6bdZrWY01JMRoNeJwo8B6RYTkBnXYLPlW3+oLfOG6wvKZbrMntqS4rrvP7OhByUE9gJed76eobyBhNyp5zIwy44C92ZUJCz+xJOJcmpzHCCVa4iVVSFV06cqPXKE7C+qQ3hPbXegJz4lMFXM1jIY4M0HHg8OINZRa2V6xL+rT2jdZ1oI4ynmFZ4V4RNJcVk3JSCYApCiQJvdBwKlgEDuIK6JeMcMaRRtbjSumAo0djUVlfr8ngCJcWrEmZvLSORFUxkQrcioWci5V5qOtkljxcfG909YSUbO4tSQ95Q8Lq2BB/EuaN83ejoHQlbUaLQW5sovOnDTFx5OFHsra1LFFGpq5tn9Ky+oBISYq7VK49+RnA53k8/uRgT1DC6XOtnhIIJbkUCmts89HH50dejo36v7B/tHA1OTI1s9MpW7+h4aupotA7dTRrbUMTE1HO7XAn/7kDC2tkDSwLa0v3NqxMZTRvaElyuX+4JIga/1V7PFS6PbYan8evIBN2CzkEPezzUDbsmFLIRB4mRprbkWCYbXUeIUlYUSHCdlHJsmuJopZSRacrM9E4vxnZ1S9toQshdFfLWocd3BRMjGzG7NtPAeK0J8+cuj3c03SYvLgswXhmtWhXqlRNiHjoJZ82egHlDp4xa2cD8ebL71IUK8mzp8mIviqFy6rx1ndp3a08mCpDR0fVFyURY25ZQahFQglrE6sbnl+GMYCcGrLeWBTNR5o0m7N6amehSs+p6W9rYFG1awr4iQTq7tFmJsjq2r+S60c7apAlUlrep7Vnimzo9XiG7nvSRChKopczSCsyyvLrRtlB3wt3pCuG+65bbXJ6EEsAIB7xt4QBNO/RQ4WkXS44Ay5W1batbvKub1rddoRmSJFBxQm7dJWK8ba6kGEzAhCHXILdxLj6AjFZEyH4EvDVV+E7ocw3YrOhwhqWJW1Mlt4GLTHOjGYlCuS5cq/HR8UVCRZpOK+qnpenoEOWsqHd5Ap7kU1LMIVnWFOMMA3Vq/TQJyxQSDJifK+oZivoykya93OYNewPeHjmhNLbRtVH3MC9rzmA+12K19qLRLGehm4gHydMD6syEv8g127mJlWw8M6y/hLxqmiyPGryrW0apcK8mkKDlqxKEprByhc3FagHd0F6svbIVtzTb0KPjikI3c88SKsS7KjTqbWmrYtxYT25x3UR1pZPVsHptTUkxlraacS/c2TSuwJ0t69uexSNXvnNt2xEOuBWdNYHxy5DW9qxMiMKwHMVSJB3IdEAlNePAwPhdzyqEjDCqwBBs3DUBhOEM0zggXRNcEmdNKspjihTCIUVIUpRpbgFxhiRuhOHYM06oyxSTqBgUo5LKpXGucaCoI4h5Dk9JI5AnUyENXOM4q5mhJ2Bk3Ki4khwjyKEkLbyz9YLq1vVtT6YSnMbeqKiGPpgumT0YbDxW6uQQTZSbAz2jnQG62YiEocEvJMC7DMPkXYaG6FITJm+4JpHiraH4aoqvTuJ1FK/HFAUJcPoIxr4xATQDNrR5cEvK2b90jVo/pZEKYFEZtf6hBI07gbeRcrw38kRP3EqajhN5jjcaRF5AVPWJshO2dFi82Oaz+RbMz/DYPBk2j+2EEP7igTX8CXHH+e1i5RdO4SN2cSI78ZVgsrqVOrz1CCLwJP20iEg4IMJeEUZEaBRBEYGIcFaEY9OkqAidIrhFQOaT03hkbqfPDclnUHtIdTW1iRrkQ2N2Qj61g+ofQ5UhvA07SKNSlm6xWA16q94p2YhV73DwfEpjgLcecMJeJ5x1QsIJSTjqhDNOaNd0kOoiG/FlVvuqZxZONcEy8JVLDtRn9eboaO+x2fXw0OLHhx+fUP/4s+5b1P+ALAO/8eboG8cnm7nrYe7hnZM/FY+rW/p7qG134O1MFRqIRJYpuQZJIsSS6UxLbwwY0qyihTj2Z8L2TDiZCYczoSMTyjIhuXRcbbWvaFYQfLaKvHzPPHD4lnG+cqcjj9kzJvKQypuEQqWtZqGntqJ3iK8KDJemH5032F5i+dhy8MeTn2KMONI49YlQIlxD0kkWiSgrnCarTUpJ4XmbiXdlSynNAcljtdVbJDCLaKROl9Ec0FmJuSmw3QpW+iXSfhdEXNDhggYXlLmSMSLV5WXt7UUkE92XThZnlnVc315EzXZqLqSmiznEZiW+8nSbw2OXfOWLRA5ydHpPKXBXnVPPg+ncR59PXjXU9/18MMbUA11beHjIMGAHDzggFWT1FfU3hn3/sMOp/o4fH7351lvpejDnxBsw54y4ogplrkU0EZHYM3TmjoCOFy0dATF9xA7z7SDb0VJ0p2bjjD/BzgleDKdMoCKvCGxonnjDY+ovfjX5MqgQgu+qb31y6tXzL5zmXvmd+vzj4g71B+r4B2e+XEl/wHCkCv05gv7MIz7Sr1Rflp+v1zvMlmKetzj4ygpdAfpPRwLmXjNXYgbeYnabOaNgTk9PaQqkW7PKSFlD4DIPkV6shIZKoAaWlyczkL7Rix3t7enoz4t9mfRmXmXFwmqorKApoM/VMpQ51mHmvTl5+V5dht7MOShqGVTCzgcTp05+dNXaa1YZ1VOuj1858fvC+fK8rIKCknmbwybd1sDejc1FK6+s6V9mf+yBRxKcsGjzppXN5n3/9Kvn1K0b6nT36Uw6oSf8JmdEl9VXXb26fvtKmttZU3/mvidegfvuSmVuRmqqKc2QJgiSM03UiQ0Bk85g0FmIrSGAyc/c7yuz+ejqktvYx77J9di8lb5FPofP4dXWoYOHbv7uznvbEidOVFV7lvak37GT+/YLqvrC5L82rDYfyiHa3hJCuLcySYNSRjKter3BkJmdZbXb+caA3ZpqMRDHgWzYmw1nsyGRDUk4mg1nsmft+/Lq6mmjZrb9he0+s+mSXubXsC2v7TpWBbgOtud/wtevixRn/MjNKkETzRGsS/AI1iVaY69VFvJ6PREEg1G0CA4gLQEgjXhkGCFhhANG2G6ETiO4jXDGCCeNcIzhR4yzSiErUujG6hn/YWmu9DgAzRyDLFqIhMlf//oLXljyxcuaf3T70D955G7lemceIW6De55Vb5hnKMjP4amTrM5snjrKjZ76sADeKIDbCmBtAVxZAKcK4PkCeGB6WFYAnLsASAGcLoCTBfh7BvYXwEgBdDJae7tmZ8esok1zurra6ZvlXurfdNp/nY+dvosqrt7Gpz7UumXG4xUP9P21Urfo/uF9D6sfPdTcK1LvHxqd7f1Pvj3w1i8nmyhh/+7Jw1NT5FtTn4hX6d5MzyNphNj0xAx3Yf5kKxYO0tPFPA4kItl5c26RrbKSsBck52B9sZFVSnGaWRTMQkZ6msATY0eAZHRmQGMGKBkwkgHRDDiWAQcyYH4GyBla+R6cDpZvVskRZZIFHpbhCyvpAgn3uvqO+grk779/30HIV5+2wxww8Dd8+fCPn3j6Ub7xy33qOfVtVr8t4nnuft2bLJdKlUw9HtMCj7kEBPZsEDrQYsWYWk9IWVF7+UXpjJWu0ufwYIM3X5oc+rl4/hQ+TOYdWMPGMD8l4iFVijxXZ7GkOdFH3hx7dkPAZreaSYqDlxuwokpRL2CN8rH8m30wsVCClWNlx45Fna1M71uI9RRYhWJlSBh7619ij5RwRlE9Y8A8FTq+OHZCPdV3w+Dw0OC7nAfX+Vboeu9Ntvb7hTfVjYmT6JfPJ468+NTjx5J3jAt7ya+U4B1DFPBO5kheKpJ3ie3Td4kzX3eX+Js7BO4a8fj5Ciqfno+LsJ5nkhrlMrvDZLTwvNHBZ2fp0rCUmfAstHfauTTebiczJY2Wa3rgYWGbXaYvHHiSUywFb47NigFfJJo5rvlz9RyY//rieVn9Q2pn29vvNPalQbZlx2t2yAUdHnZFxx41t3Sp31dHw6G0yKGO6bULQ7j2FLJIcREwGYxGU0qKnheEtFTQGywi3mkdZWnQzooZxiVZH8rTkyEqx70GenZ1AY8R+Br13W20WMB3oFS9DX4Af1qrbhaPf3kIjqnrJ/uS/3RFz9fNmP9m4iRucrvSlJphzHC5BIsxE+/CAu+RU+0uu6sjYLG77ZxdtEupq+x2QRQz8OjlhTkdASH9gAf2emDEA1EPdHqg0QOKB+azr+yBmQvehcOZXiCK6A2CghcffOmL6ZEtFGKxkwUHJto8oOmFiypfmFFB0eULxc3q6SkyWc3dDhwYb7/zsSfV724bVhPQfMsNzeqH6ijsuOtW+Ltjr4k7njx844/m2g/Dmx2N6j+tU40vq32bmK/rMQ/cWDMLyKBSp9d57K5sLBrZdp1QeLknzck75zUFfu6CThee6S63izMJLpfTypuaAnb9ZXpOr+elxsshcTnMvxyUy6HscrZOTDxfWXvyDEye7WyJiy+5KOEC6T5aNA9ohcCyWMrhUU/zSE/ziG4l5zxecKtTH7z7af5/OzaNbO1b1/Pnh9edOfWzj+f+T+r13aHQ1Ru2vzS8EqoefHLP93OvVqqUiqWOsqYd1z/wxN/flV2z3FdVtig9e9GaYVyrF4vAIXZvXqFclpaBCchxDsEhOCWTpSlgohd5oSGQIVrA8aITRpzsmlLtm76mYJaVJ4s5yzF6DOExzgxOXk/nAhadt9U/7tv3w/0NXYWF9Ve+yd/85W38zS/ccPdd1qeNi+tbX6A+344+v05YgnsKz3EznuJEMkiZTrws4RGVLqU69MRyIBP2ZsLZTEhkQhKOZsKZzP/DOQ5s69GKZHd68iq9ZvQi3jbgvmPdt+C1XT2XKl7xBJ7hwpLJf1A/OLyTq/1yYrRn78pvRV8/zh2mNXKteo2wHvPBQ4pIUFmSmWMyuQU+H01z8yXFLosjtyHgdFgthQ2BVIuD6JsC1wrdwlaBzxHKBU5Eb3ICcUVLaPUsb09elX0zr4viT+3F6Oey6C+FRV6dN4ezWdPpoVixcJEHz0q7wNOaylbFrX35P+dAlqWrcaiP49qnfnryN8c/2SDikWDSqectwwPvvRsdVq+5d7dn+VV771q85Rf0bAEjyP/svTGj764v3/uPT/jf//h59T51//PJGtutruNojU0jOYqVpOn0Jj5NjxdaM954XcnS6WS1k1oLedQ2tIp2Thh7cPfuByFr39hd+9V178PPIROc8LP3PlSr1D+rZ9Tqj1B+MxaWZzDORlKr5HM6PQCvMwgpJh0eZY0BwQJ6om8MEIeSAidT4FgKbE+B5Oa5cDOe8RhW8Erw0OuPx9EMk2oxb1J1XNEvuEde+eXkdSfoejhcT+30etKIXsebiM70N+vRfuQuTLdZuXyPRDs9d2DPXrqcXbv2qev+BC9COmTAS+9/oC5TP1H/pC77EOVPncf71VL6lxZ4TpkCYjOnCXqdySTYeEOG3S4ZDQbHmATbJNgiQbsEDRJciT/RJXBJkCbB/0jwsQTvSPBrCR6VnpW4ByTYI8H2afbVEiylvEUSh9w9UxK8LX0kca9I8FMJHpPgQQl2SvAtCfop7waJQ+4iCbIkSJHgCwk+leCUBCckeJax/0CCXZT3FonbIMEqynulxM2VAPBH3/PSKeljiT9Mde+SuAapQ+IqqCCXxF2BVr4rAep9SoIHqIFjEhdi9lWztaCuDyWlmnK8KME90kMSh1ZFqIbVEofUMxJwx6STEjcmHZa4qASSYkqrJxIYMtIEg8VmMumxBuFl0ear9vl8gAcA7pSOCwfE4MxzvXbP7Lhh9jN40aPxtM/cSbVnep+lO2d+fWDcC4HPy9fzHvBkVEOGJ0NyLsrwiB71rcdTvRWH1LfUP4LhiDnrIJQ8bHbN+SEI3D0l46cnB4QlX7501RB38+RtFbtu444S9vdJjpBDZ3OPdliqPuPcyb+N/cuqnrzpP8pMnVev0e3DWxxofzhL7juiX6ZeQ1bMxlz0zMF8PcEtJjuFD8gYP5fcIcRII46J+AvExUgVd5BkIe0OxI3pkY74b9GGeMs0ns7BNqbNqUeaF2nbsa1FuFsgpBl7TreY5jX+ZugmT5G/Qid+DnA53EbuCPcXfiu/l/8tVrQ24U7hN6JV3K3jdH7dPXqTfol+UP+PhoOa9XNIBd4hsrFxxErKyHW486/m1+I9hVLnwcDMGq+dWS8QC46SMIecYQ2mcno1WCB2cqsGi3g3uVeDdSSD/EiD9eQmMqHBBtyb5RpsxHu/X4NN0AtrNTiFzOF+OvPX5VLubQ1OI5W8XoPNJJuvQktAMOLocf5aDQYyT+A0mCMGQdZgnlQIBRoskALhOg0WyRzhNg3WkTzhgAbryTnhZQ02kALxOQ02kjni+xps4l4TVQ1OIVcYTmpwKrnOaNDgNLLZGNJgM6kw/mtt76beeO9N4ZAcCsaDclckum2wd1NPXC7oKpTL5y+YL6+MRDb1heUVkcFoZDAY740MlJpWXMpWLjejiPpgvFheNdBVuqZ3YzjJK7cEB2I1kb7Q8lhXeCAUHpRL5Euolwxlyn1teDBGEeWl8+eX+i5wUIYSyjBrUm9MDsrxwWAo3B8c3CJHui+2RR4Mb+qNxcODiOwdkFtLW0rlxmA8PBCXgwMhee3MxIbu7t6uMEN2hQfjQWSOxHvQ4s1Dg72xUG8X1RYrnVnILI+0xMNbw/LVwXg8HIsM1ARjqAstWz7Y2x8plod7ert65OFgTA6FY72bBpC4cZt88RwZqUFcy8BAZCuK3BouRru7B8Oxnt6BTXKM+iUWHuzt1kTI8Z5gnK68Pxwf7O0K9vVtw9j1R3HqRgzWcG+8h2oP9h0sTVqBbulGn8q9/dHByFZmXkmsazAcHkA9wVBwY29fbxxl9AQHg13oLPRYb1eMOQN9IEeDAyV1Q4ORaBiNXLdyzQVGNCvpyFikb2s4xrgHwuFQjAYihEvsw0mouC8S2UKX0h0ZRPNC8Z6SWfZ2RwbiODUiB0MhXDM6KtI11E9DhB6OTxsX7BqMIC3aF4yjlP5YaU88Hl1SVjY8PFwa1KLShUEpRcll30SLb4uGtVAMUin9fWsw8gM0akMstHQRLavWyA1R9I8fjZM1hmJ5OjMXlC7QVKAbe6PxWGmst680MriprMG/htRiRdqELY7tJqxUISJjC+I4iFAXiZAo2UYGGVcPYmX8PdFFCrEvJ/PJAmwyWYlcEaT34XwZq38E+aPsHWRyI2SAlBITo3yztHKEmjUr6tnsYoRW4fwulLAG521E6my5MmnB0QCJkRoc9+HM5Qh3IdcAwpRXJiXYvnnuN1PlGdnXMp7YDEc5WjUfP6XE95UypiWUzEj4ak29TAv1eJxRqOX92A+SLYiL4An2TX6RkS/MohhDSpiNQkwqld2KHC2Mq5HNpJ6JM20DjGvtV2hsQI3dOL+LRXSas4vJppmRlBxBuEfz8WYyxOIaQ046b3ptMdT8txH56hxpYdZtZTqvZng6jjFaDY5j2rqSPlvO9PXjiPpiGC2hensYHGT+DLHZNNcGtJkbMfvkb9Qja3ODWlwG8BNB3qSVdE6x5u9u9o4xvQOoQ0Z4Ol9ibJ29LG6zrZCZx4LM/8mY9yM1zni7EN+Hn23avutH/yS1btR21jDbpz0za0d+Tw6L7AVfJLOlW8tTmWGjCEeY7dPeK2ERofaHmVUUCrJ9vxFn9DE9STt6WE4EWUTDWoTjzNppL4W0VVELowxTQupYNtDdHtY8uQ6rxJqvlJj01uyMjLG9spX57YLsAWZtiOEiM56lXH2apuSK+1g12jITlW6WZUnvhZi0kq/xbzfzTVzTGmEWhfCTjHMyoyI4d4hFLbmLkjkc/xvPBZl/I9q8KFKorqQt/WxX9LC8i5IleKssQ+vop5Rl3+y90qXtlFLN5rL/63nUrijz4OxdMThjSz/auEbb8wMze21o1q6djkQLVp41rEpEtfzxa56TL5FA98qlNXMB6ltwySqS2diL4zizJ8Z8WcrWsAnpDahhDf1vaOy3Rz55i3zFs7wVqgnAYtIKy7S+BhS8Z7thOfZu7K8kPliC+CuwRzp5CN/nsHF4t14KC5CyAGeWYT8fx7QvhkIyhTMLEX85jgsQn499vjbOw3Eu9rna2As5jD9HGxchHXvSCPQGXsbeh0FQGuHkJLw4CdZJiHwByhcw8tnezw58xv/n2Up32dn9Z7mOM1B2puNM5Mz+M++eEf/9Q9n9hw+Xut8/ne9+7/RS97tL32n9/VK+lbwz/x3uHeBby5anwDyUbcW3jE3Bxk8dg3lKQdYc/7/xU25yCn4nVLnfeG2O+/XX8tydr+599dirPO0SCJx+VZyYOvbkq1lz/dg/9aopzW+ZwJ+3FnjxhTy38nzhcr/yfE6+fwI8St4zS91kAiITMHHU5CZHgRyVjypHO49Gj4q023v05NGzR8UJkJW0emR9uvNp7sDTJ5/mULJifjrF7Lcc6TjCjfNVbmp2FqnG1oCNJ2P4BjQ+SynIK/S7D5cdrj68/7BgOQzKYbPkJ09Enxh5gj/9xNknuMcOVroPNua5nwUXZB+pohZlPwOWR8HyCPwEnJBBqjAODuXbjVXufQ/kux/E9kNsIw/Aff4C9/57D9/L/b2/0m25x30Pd/fePPfffS/PbRlzj0XGto+NjYl37c5zN+wBy25QdqdY/Jad7p3cd2+3uDtuh4Xf8X+H24q6h7DFscWwFUbBFQU+Cuei8Jvov0e5nigEojAxdVa5JYrujAzUuwf85e5syGzN8mW26n18qw7jEsS5nR3l7g7sr19f777On+/esP5G93r/AndGeXqriNEVyvnWCA8Wvppv4CP8dl7saAGlpaDYr7TMy8FXRqZ/S/O3mnc1800Nc9yN2LIaChu4QENvAzcB6UqJP9e9yp/lrvd73Ctx0X/1oxNgTr2rVSp3tNrA0mott7RygBlLptwTYDviMmJnVUqwd1uqLR2W7RbBYimzNFgiljHLu5Ypi74acWcsfIRAA4ERCUSYgL3ja1uKilZP6KeaVyf0jRsScGcit4W+lab1Cd2dCdK6fkPbOMBdgdv37CE1c1cnylvaEp1zA6sTIQQUCowgYJ07LpGaQCweiw8VaQ/E4rQjtIshEItRElDUDAtDx2LxeJwkp8SKYqSIvpEA+CYxxog8lJnK0r5A34SqY2qAccbilIlNHqJvNqJYKog9qCE2o55JTnaZ/wsnM87EDQplbmRzdHJlYW0KZW5kb2JqCjE3IDAgb2JqCjc1NjEKZW5kb2JqCjE4IDAgb2JqCjw8DQovRGVzY2VudCAtMjExDQovQ2FwSGVpZ2h0IDEwMzMNCi9TdGVtViA4MA0KL1R5cGUgL0ZvbnREZXNjcmlwdG9yDQovRm9udEZpbGUyIDE2IDAgUg0KL0ZsYWdzIDQNCi9Gb250TmFtZSAvQkFBQUFBK0xpYmVyYXRpb25TYW5zLUJvbGQNCi9Gb250QkJveCBbIC00ODEgLTM3NiAxMzAzIDEwMzMgXQ0KL0l0YWxpY0FuZ2xlIDANCi9Bc2NlbnQgOTA1DQo+PgplbmRvYmoKMTkgMCBvYmoKPDwNCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlDQovTGVuZ3RoIDMzNw0KPj5zdHJlYW0NCnicXZLLboMwEEX3fIWX6SICOwluJISUQCKx6EOl/QCChxSpGMuQBX9fz0zaSl2Azjwuvsw4Lqqysv0cv/qxrWEWXW+Nh2m8+RbEBa69jaQSpm/ne0TvdmhcFAdtvUwzDJXtxiyL4rdQm2a/iNXBjBd4iOIXb8D39ipWH0Ud4vrm3BcMYGeRRHkuDHThO0+Ne24GiEm1rkwo9/OyDpK/hvfFgVAUS7bSjgYm17TgG3uFKEuSXGTncx6BNf9qaseSS9d+Nj60ytCaJNt9HlgRp4/IG2KtkLec3yHviFWCnLJ2i6y5RyI/spbye86fkA/MdNaRuUQuiMsCueQ8nXtipvyZeRNYJsxH5Lt/7JfsX1MP+09TZPav0b9k/6lGZv8K/1eyf31AZv8KfUr2rzUN8z41HCvu/Wddor15H1ZFl4N2hNvpLfzeHzc6VNHzDbbBpbkNCmVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoKPDwNCi9TdWJ0eXBlIC9UcnVlVHlwZQ0KL0ZpcnN0Q2hhciAwDQovVHlwZSAvRm9udA0KL0Jhc2VGb250IC9CQUFBQUErTGliZXJhdGlvblNhbnMtQm9sZA0KL0ZvbnREZXNjcmlwdG9yIDE4IDAgUg0KL1RvVW5pY29kZSAxOSAwIFINCi9MYXN0Q2hhciAyNQ0KL1dpZHRocyBbIDc1MCAyNzcgNjEwIDM4OSA1NTYgMjc3IDcyMiA1NTYgMzMzIDYxMCAyNzcgODg5IDcyMiA2MTAgMjc3IDU1Ng0KNTU2IDcyMiA1NTYgMzMzIDYxMCA2MTAgMzMzIDUwMCAzMzMgNzc3IF0NCj4+CmVuZG9iagoyMSAwIG9iago8PA0KL0YxIDIwIDAgUg0KL0YyIDE1IDAgUg0KPj4KZW5kb2JqCjIyIDAgb2JqCjw8DQovUHJvY1NldCBbIC9QREYgL1RleHQgXQ0KL0ZvbnQgMjEgMCBSDQo+PgplbmRvYmoKMjMgMCBvYmoKPDwNCi9Db3VudCAxDQovRmlyc3QgMjQgMCBSDQovTGFzdCAyNCAwIFINCj4+CmVuZG9iagoyNCAwIG9iago8PA0KL0Rlc3QgWyAxIDAgUiAvWFlaIDU2LjcgNzczLjE2MSAwIF0NCi9Db3VudCAwDQovVGl0bGUgPGZlZmYwMDQ5MDA2ODAwNzIwMDY1MDAyMDAwNDQwMDYxMDA3NDAwNjUwMDZlMDAyMDAwNjkwMDZkMDAyMDAwZGMwMDYyMDA2NTAwNzIwMDYyMDA2YzAwNjkwMDYzMDA2Yj4NCi9QYXJlbnQgMjMgMCBSDQo+PgplbmRvYmoKMjUgMCBvYmoKPDwNCi9PcGVuQWN0aW9uIFsgMSAwIFIgL1hZWiBudWxsIG51bGwgMSBdDQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL091dGxpbmVzIDIzIDAgUg0KL1BhZ2VzIDEwIDAgUg0KPj4KZW5kb2JqCjI2IDAgb2JqCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTEyMDgxMTUxNTYrMDEnMDAnKQ0KL1Byb2R1Y2VyIDxmZWZmMDA0YzAwNjkwMDYyMDA3MjAwNjUwMDRmMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNjAwMmUwMDM0Pg0KL0F1dGhvciA8ZmVmZjAwNGIwMDZjMDA2MTAwNzUwMDczMDAyMDAwNTcwMDYxMDA2ZTAwNmUwMDY1MDA3Mj4NCj4+CmVuZG9iagp4cmVmDQowIDI3IA0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDY3IDAwMDAwIG4NCjAwMDAwMDAyNTEgMDAwMDAgbg0KMDAwMDAwMTcxMCAwMDAwMCBuDQowMDAwMDAxNzMwIDAwMDAwIG4NCjAwMDAwMDE5MTQgMDAwMDAgbg0KMDAwMDAwMzQ4OCAwMDAwMCBuDQowMDAwMDAzNTA4IDAwMDAwIG4NCjAwMDAwMDM2OTIgMDAwMDAgbg0KMDAwMDAwNDYzNiAwMDAwMCBuDQowMDAwMDA0NjU1IDAwMDAwIG4NCjAwMDAwMDQ3NzcgMDAwMDAgbg0KMDAwMDAxODQ2MSAwMDAwMCBuDQowMDAwMDE4NDgzIDAwMDAwIG4NCjAwMDAwMTg2OTcgMDAwMDAgbg0KMDAwMDAxOTMxMyAwMDAwMCBuDQowMDAwMDE5Nzg4IDAwMDAwIG4NCjAwMDAwMjc0NDUgMDAwMDAgbg0KMDAwMDAyNzQ2NiAwMDAwMCBuDQowMDAwMDI3Njg3IDAwMDAwIG4NCjAwMDAwMjgxMDEgMDAwMDAgbg0KMDAwMDAyODM4NSAwMDAwMCBuDQowMDAwMDI4NDMyIDAwMDAwIG4NCjAwMDAwMjg0OTQgMDAwMDAgbg0KMDAwMDAyODU1NiAwMDAwMCBuDQowMDAwMDI4NzQ5IDAwMDAwIG4NCjAwMDAwMjg4NzYgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9JbmZvIDI2IDAgUg0KL0lEIFsgPGFhNThmNDE1OWVlNzI2NWY1MTg0N2ZiNmU1NmZmYTA1PiA8Y2Q3MmFiZTE4ZDk4NGM4NjAyMTJjOTU5NzM5MzNiNmU+IF0NCi9Sb290IDI1IDAgUg0KL1NpemUgMjcNCi9Eb2NDaGVja3N1bSAvOTA3Q0UzMzczRTZCREE3QzVERjk1NUNGMERBNEU3ODYNCj4+DQpzdGFydHhyZWYNCjI5MTIzDQolJUVPRg0K</content> - <contentType>application/pdf</contentType> - <id>myForm-pdf</id> - <name>Wahlhelferin.pdf</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CjwvaGVhZD4KPGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsgZm9udC1zaXplOiAxMXB0OyI+CjxwPlNlaHIgZ2VlaHJ0ZS9yIFNhY2hiZWFyYmVpdGVyKmluPC9wPgo8cD5FaW4gbmV1ZXIgQW50cmFnIHd1cmRlIGdlc3RlbGx0PC9wPgo8cD5BY2h0dW5nOiBBbnR3b3J0ZW4gU2llIG5pY2h0IGF1ZiBkaWVzZSBFLU1haWwuIERpZSBFLU1haWwgd3VyZGUgYXV0b21hdGlzY2ggZXJzdGVsbHQuIEVpbmUgQW50d29ydCB3aXJkIG5pY2h0IGJlYXJiZWl0ZXQgdW5kIGdlbGVzZW4hLiBCaXR0ZSB3ZW5kZW4gU2llIHNpY2ggYW4gZGVuIGltIEFudHJhZyBnZW5hbm50ZW4gQW50cmFnc3RlbGxlci48L3A+CjwvYm9keT4KPC9odG1sPgo=</content> - <contentType>text/xml</contentType> - <id>EmailBodySachbearbeiterTemplate</id> - <name>EmailBodySachbearbeiterTemplate.xml</name> - </attachments> - <caller/> - <client>Schleswig-Holstein</client> - <clientId>land</clientId> - <customParameters> - <key>EmailAdresseSachbearbeiter</key> - <value>markus.fraedrich@dataport.de</value> - </customParameters> - <customParameters> - <key>EmailSubjectSachbearbeiterTemplate</key> - <value>Wahlhelferin</value> - </customParameters> - <customer>Schleswig-Holstein</customer> - <customerId>sh</customerId> - <form>Wahlhelferin werden</form> - <formId>odp_wahlhelfer/odp_wahlhelfer</formId> - <id>20211208426920179200</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> - <sender>stage.afm.schleswig-holstein.de</sender> - <timestamp>2021-12-08T11:51:57.542+01:00</timestamp> - <username/> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} - -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJeG1sbnM6dT0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS91c2VyIgoJdDp1dWlkPSI4OGRhYTdkNC0xOTNhLTQzZmUtYjc1OC0wZDk0NGExOTk3YTQiCgl0OmlkPSIyMDIxMDkyMTM2MDQ0MDkyNzAwMiIgdDp0aW1lc3RhbXA9IjIwMjEtMDktMjFUMDg6MDA6NDQuMzUzWiIKCXQ6c2VuZGVyPSJzdGFnZS5hZm0uc2NobGVzd2lnLWhvbHN0ZWluLmRlIgoJdDpmb3JtPSJLbGVpbmVyIFdhZmZlbHNjaGVpbiBnZW0uIMKnIDEwIEFicy4gNCBTYXR6IDQgV2FmZmVuZ2VzZXR6IChXYWZmRykiCgl0OmZvcm0taWQ9IndhZmZlbi9rbGVpbmVyV2FmZmVuc2NoZWluIgoJdDpjdXN0b21lcj0iRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIiIHQ6Y3VzdG9tZXItaWQ9ImVhLXNoIgoJdDpjbGllbnQ9IlNjaGxlc3dpZy1Ib2xzdGVpbiIgdDpjbGllbnQtaWQ9ImxhbmQiCgl1OkZhbWlseU5hbWVzPSJGaXNjaGVyIiB1OlByaW5jaXBhbFR5cGU9IkNpdGl6ZW4iCgl1OlVzZXJuYW1lPSJzdXNhbm5lLmZpc2NoZXIuZGF0YXBvcnRAZ21haWwuY29tIgoJdTpDaXRpemVuUHJvZmlsZVR5cGU9IlN0YW5kYXJkIgoJdTp1c2VybmFtZT0iZjIyZTExZjctMTJjNS00NTdjLTEwYzQtMDhkOTdjZDVjZmNhIgoJdTpHaXZlbk5hbWVzPSJTdXNhbm5lIiB1OkFzc3VyYW5jZUxldmVsPSJMb3ciCgl1OmRpc3BsYXlOYW1lPSJTdXNhbm5lIEZpc2NoZXIiCgl1Om1haWxBZGRyZXNzPSJzdXNhbm5lLmZpc2NoZXIuZGF0YXBvcnRAZ21haWwuY29tIgoJdTpFbWFpbEFkZHJlc3M9InN1c2FubmUuZmlzY2hlci5kYXRhcG9ydEBnbWFpbC5jb20iCgl1OmZpcnN0TmFtZT0iU3VzYW5uZSIgdTpsYXN0TmFtZT0iRmlzY2hlciIgdDpyZXF1aXJlZC1sb2dpbi1sZXZlbD0iTE9XIgoJdDplZmZlY3RpdmUtbG9naW4tbGV2ZWw9IkxPVyI+Cgk8S29udGFrdHN5c3RlbVR5cEE+MjMzMDM0NjAwPC9Lb250YWt0c3lzdGVtVHlwQT4KCTxLb250YWt0c3lzdGVtVHlwQj4yMzMwMzQ2MDE8L0tvbnRha3RzeXN0ZW1UeXBCPgoJPEFubGllZ2VuSUQ+ODk2NjY3MTwvQW5saWVnZW5JRD4KCTxuYW1laWQ+ZjIyZTExZjctMTJjNS00NTdjLTEwYzQtMDhkOTdjZDVjZmNhPC9uYW1laWQ+Cgk8cmVzdF9yZXNwb25zZV9uYW1lPgoJCVt7Im1lbWJlcmNvbnRleHQiOiJmMjJlMTFmNy0xMmM1LTQ1N2MtMTBjNC0wOGQ5N2NkNWNmY2EiLCJtZW1iZXJzY29wZSI6W3sidGVuYW50IjoiU0giLCJtYWlsYm94Z3VpZCI6IjZlZWI3Yzg3LTVmYTctNDE2ZC1iNzY5LTE1MGUzNGE2M2UzZCIsIm1haWxib3huYW1lIjoiIiwibWFpbGJveGRlc2NyaXB0aW9uIjoiIiwibWFpbGJveHR5cGUiOjEsImd1aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJpZCI6MTc2MTQ2NzZ9XX1dCgk8L3Jlc3RfcmVzcG9uc2VfbmFtZT4KCTxtYWlsYm94Z3VpZD42ZWViN2M4Ny01ZmE3LTQxNmQtYjc2OS0xNTBlMzRhNjNlM2Q8L21haWxib3hndWlkPgoJPGFudHJhZ3N0ZWxsZXI+CgkJPHBlcnNfYW5yZWRlPkZyYXUkMDI8L3BlcnNfYW5yZWRlPgoJCTxwZXJzX25hY2huYW1lPkZpc2NoZXI8L3BlcnNfbmFjaG5hbWU+CgkJPHBlcnNfdm9ybmFtZT5TdXNhbm5lPC9wZXJzX3Zvcm5hbWU+CgkJPHBlcnNfZ2VidXJ0c25hbWU+RmlzY2hlcjwvcGVyc19nZWJ1cnRzbmFtZT4KCQk8cGVyc19nZWJ1cnRzZGF0dW0+MjAwMC0wMS0wMTwvcGVyc19nZWJ1cnRzZGF0dW0+CgkJPHBlcnNfZ2VidXJ0c29ydD5IYW1idXJnPC9wZXJzX2dlYnVydHNvcnQ+CgkJPHBlcnNfZ2VidXJ0c2xhbmQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfZ2VidXJ0c2xhbmQ+CgkJPHBlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfYW5yZWRlPkZyYXU8L2JfYW5yZWRlPgoJCTxiX2FucmVkZV9zY2hsdWVzc2VsbnI+MDI8L2JfYW5yZWRlX3NjaGx1ZXNzZWxucj4KCQk8Yl9nZWJ1cnRzbGFuZD5EZXV0c2NobGFuZDwvYl9nZWJ1cnRzbGFuZD4KCQk8Yl9nZWJ1cnRzbGFuZF9zaWduYXR1cj4wMDA8L2JfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+CgkJPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvYl9zdGFhdHNhbmdlaG9lcmlna2VpdD4KCQk8Yl9zdGFhdHNhbmdlaG9lcmlna2VpdF9zaWduYXR1cj4wMDA8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+CgkJPHNoX3N0cmFzc2U+SGF1cHRzdHJhw59lPC9zaF9zdHJhc3NlPgoJCTxzaF9oYXVzbnVtbWVyPjE8L3NoX2hhdXNudW1tZXI+CgkJPHNoX3Bsej4yMzc5NTwvc2hfcGx6PgoJCTxvcnRfYXVzd2FobD45MDA3NDA0JDAxMDYwMDA1PC9vcnRfYXVzd2FobD4KCQk8b3J0PkJhZCBTZWdlYmVyZzwvb3J0PgoJCTxHZWJpZXRJRD45MDA3NDA0PC9HZWJpZXRJRD4KCQk8R2ViaWV0QkVaRUlDSE5VTkc+QmFkIFNlZ2ViZXJnPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDYwMDA1PC9HZWJpZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXIgLz4KCQk8a29udF9tb2JpbG51bW1lciAvPgoJCTxrb250X3RlbGVmYXhudW1tZXIgLz4KCQk8a29udF9lbWFpbD5zdXNhbm5lLmZpc2NoZXIuZGF0YXBvcnRAZ21haWwuY29tPC9rb250X2VtYWlsPgoJCTxrb250X2RlbWFpbCAvPgoJCTxwZXJzb2VubGljaGVFaWdudW5nPgoJCQk8bWFlbmdlbHZvcmhhbmRlbj50cnVlPC9tYWVuZ2Vsdm9yaGFuZGVuPgoJCQk8ZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+dHJ1ZTwvZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+CgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz50cnVlPC9NaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz4KCQkJPG1hZW5nZWxCZXNjaHJlaWJ1bmc+c2Q8L21hZW5nZWxCZXNjaHJlaWJ1bmc+CgkJCTxlcm1pdHRsdW5nc3ZlcmZhaHJlbmJlc2NocmVpYnVuZz5zPC9lcm1pdHRsdW5nc3ZlcmZhaHJlbmJlc2NocmVpYnVuZz4KCQkJPG1pdGdsaWVkc2NoYWZ0YmVzY2hyZWlidW5nPnNkPC9taXRnbGllZHNjaGFmdGJlc2NocmVpYnVuZz4KCQk8L3BlcnNvZW5saWNoZUVpZ251bmc+Cgk8L2FudHJhZ3N0ZWxsZXI+Cgk8R2ViaWV0SUQ+OTAwNzQwNDwvR2ViaWV0SUQ+Cgk8enVzdGFlbmRpZ2VzdGVsbGU+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjI0NjM3ODA4MjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDMwMjI5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5PcmRudW5ncy0gdW5kCgkJCUdld2VyYmVhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQk8c3RyYXNzZT5IYW1idXJnZXIgU3RyLjwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj4zMDwvaGF1c251bW1lcj4KCQk8cG9zdGxlaXR6YWhsPjIzNzk1PC9wb3N0bGVpdHphaGw+CgkJPG9ydElEPjkwMDc0MDQ8L29ydElEPgoJCTxvcnQ+QmFkIFNlZ2ViZXJnPC9vcnQ+CgkJPHRlbGVmb25udW1tZXIgLz4KCQk8dGVsZWZheG51bW1lciAvPgoJCTxlbWFpbGFkcmVzc2UgLz4KCQk8ZGVtYWlsYWRyZXNzZSAvPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmcgLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6IC8+CgkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJPGxlaWthS0VZTElTVD45OTA4OTEyMjAwMTAwMDwvbGVpa2FLRVlMSVNUPgoJCTxhdXN3YWhsX3p1c3RlbGx1bmc+enVzZW5kZW48L2F1c3dhaGxfenVzdGVsbHVuZz4KCQk8Yl96dXN0ZWxsdW5nPgoJCQlCaXR0ZSBzZW5kZW4gU2llIG1pciBkZW4gS2xlaW5lbiBXYWZmZW5zY2hlaW4gYW4gZGllIHZvbiBtaXIgYW5nZWdlYmVuZQoJCQlBZHJlc3NlIGRlciBIYXVwdHdvaG51bmcuCgkJPC9iX3p1c3RlbGx1bmc+Cgk8L3p1c3RhZW5kaWdlc3RlbGxlPgoJPGVtcGZhbmdlbmRlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwNjg4NzM8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyCgkJCVNjaGxlc3dpZy1Ib2xzdGVpbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPlJldmVudGxvdWFsbGVlPC9zdHJhc3NlPgoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+CgkJPHBvc3RsZWl0emFobD4yNDEwNTwvcG9zdGxlaXR6YWhsPgoJCTxvcnRJRD45MDA2NDAyPC9vcnRJRD4KCQk8b3J0PktpZWw8L29ydD4KCQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDk4OC04NjUwPC90ZWxlZm9ubnVtbWVyPgoJCTx0ZWxlZmF4bnVtbWVyPis0OSA0MzEgOTg4LTYxNjExMTE8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2U+ZWEtcG9zdHN0ZWxsZUBlYS1zaC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmc+YWZtc2g6OTA2ODg3M19BdXNuYWhtZUxLV0ZhaHJ2ZXJib3Q8L2tvbnRha3RzeXN0ZW1fa2VubnVuZz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4KCTwvZW1wZmFuZ2VuZGVzdGVsbGU+Cgk8ZXJrbGFlcnVuZ2VuPgoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPgoJCTxjaGVja19yaWNodGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD4KCQk8Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+CgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD4KCQk8Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCQkqIE1pciBpc3QgYmVrYW5udCwgZGFzcyBkdXJjaCBkYXMgRWlucmVpY2hlbiBkZXMgZWxla3Ryb25pc2NoZW4KCQkJQW50cmFnZXMgdm9uIGRlciB6dXN0w6RuZGlnZW4gU3RlbGxlIEdlYsO8aHJlbiBlcmhvYmVuIHdlcmRlbiBrw7ZubmVuLgoJCTwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCTxiX2dlYnVlaHJlbl9pbnRybz4KCQkJR2Viw7xociBiZWkgQXVzc3RlbGx1bmcgZGVzIGtsZWluZW4gV2FmZmVuc2NoZWluczogNjAsMDAgRXVyby4KCQkJQmVhcmJlaXR1bmdzZ2Viw7xociBiZWkgVmVyc2FndW5nOiA0NSwwMCBFdXJvLiBTaWUgc2luZCBnZW3DpMOfIMKnIDM5CgkJCVdhZmZHIHZlcnBmbGljaHRldCwgZGVyIHp1c3TDpG5kaWdlbiBCZWjDtnJkZSBkaWUgenVyIER1cmNoZsO8aHJ1bmcgZGVzCgkJCUdlc2V0emVzIGVyZm9yZGVybGljaGVuIEF1c2vDvG5mdGUgenUgZXJ0ZWlsZW4uIFp1ciBQcsO8ZnVuZyBJaHJlcgoJCQl3YWZmZW5yZWNodGxpY2hlbiBadXZlcmzDpHNzaWdrZWl0IHVuZCBFaWdudW5nIGhvbHQgZGllIEJlaMO2cmRlIGVpbmUKCQkJdW5iZXNjaHLDpG5rdGUgQXVza3VuZnQgYXVzIGRlbSBCdW5kZXN6ZW50cmFscmVnaXN0ZXIsIGVpbmUgQXVza3VuZnQKCQkJYXVzIGRlbSB6ZW50cmFsZW4gc3RhYXRzYW53YWx0c2NoYWZ0bGljaGVuIFZlcmZhaHJlbnNyZWdpc3RlciwgZWluZQoJCQlTdGVsbHVuZ25haG1lIGRlciDDtnJ0bGljaGVuIFBvbGl6ZWlkaWVuc3RzdGVsbGUgdW5kIElocmVyCgkJCVdvaG5zaXR6Z2VtZWluZGUgZWluLgoJCTwvYl9nZWJ1ZWhyZW5faW50cm8+CgkJPGJfcmljaHRpZ2tlaXQ+KiBJY2ggYmVzdMOkdGlnZSBkaWUgUmljaHRpZ2tlaXQgbWVpbmVyIEFuZ2FiZW4uPC9iX3JpY2h0aWdrZWl0PgoJCTxiX2RhdGVuc2NodXR6PgoJCQkqIEljaCBlcmtsw6RyZSBtaWNoIGRhbWl0IGVpbnZlcnN0YW5kZW4sIGRhc3MgZGVyIEVpbmhlaXRsaWNoZXIKCQkJQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiB6dXIgRXJmw7xsbHVuZyBzZWluZXIgQXVmZ2FiZW4KCQkJbWVpbmUgRGF0ZW4gdW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcgoJCQlEYXRlbnNjaHV0ei1HcnVuZHZlcm9yZG51bmcgKERTLUdWTykgdW5kIGRlcwoJCQlMYW5kZXNkYXRlbnNjaHV0emdlc2V0emVzIFNjaGxlc3dpZy1Ib2xzdGVpbiAoTERTRy1TSCkgc3BlaWNoZXJ0LAoJCQl2ZXJhcmJlaXRldCB1bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQoJCQlmw7xyIGRpZSBFbnRzY2hlaWR1bmcgenVzdMOkbmRpZ2UgU3RlbGxlIHdlaXRlcmxlaXRldC4gRWJlbnNvIGJpbiBpY2gKCQkJbWl0IGRlciByZWNodHNrb25mb3JtZW4gRGF0ZW52ZXJhcmJlaXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZQoJCQl6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUKCQkJRWlud2lsbGlndW5nIGluIGRpZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIKCQkJZGVtIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50bG91YWxsZWUKCQkJNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyCgkJCWRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZvciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kCgkJCWRhdm9uIG5pY2h0IGJldHJvZmZlbi4gw5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4KCQkJRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuCgkJCXp1c3RlaGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVya2zDpHJ1bmcKCQkJS2VubnRuaXMgZXJsYW5ndC4KCQk8L2JfZGF0ZW5zY2h1dHo+CgkJPGJfbWlzc2JyYXVjaD4KCQkJKiBNaXIgaXN0IGJla2FubnQsIGRhc3MgenVyIFZlcmZvbGd1bmcgd2lkZXJyZWNodGxpY2hlciBOdXR6dW5nIGRpZQoJCQlEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMgYXVmZ2V6ZWljaG5ldCB1bmQKCQkJdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLgoJCTwvYl9taXNzYnJhdWNoPgoJCTxwb2xpY3l1cmw+CgkJCWh0dHA6Ly93YWZteHFhMDAyLmRwYW9yLmRlL3NoL2RhdGVuc2NodXR6L2RhdGVuc2NodXR6ZXJrbGFlcnVuZ0VBX2RlLmRvYwoJCTwvcG9saWN5dXJsPgoJPC9lcmtsYWVydW5nZW4+Cgk8bG9nb3VybD4KCQlodHRwOi8vd2FmbXhxYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jCgk8L2xvZ291cmw+Cgk8Zm0+CgkJPGFuc3ByZWNocGFydG5lcj4KCQkJPGZpcm1lbm5hbWUgLz4KCQkJPGFucmVkZT5GcmF1PC9hbnJlZGU+CgkJCTx2b3JuYW1lPlN1c2FubmU8L3Zvcm5hbWU+CgkJCTxmYW1pbGllbm5hbWU+RmlzY2hlcjwvZmFtaWxpZW5uYW1lPgoJCQk8YW5zY2hyaWZ0PgoJCQkJPHN0cmFzc2U+SGF1cHRzdHJhw59lPC9zdHJhc3NlPgoJCQkJPGhhdXNudW1tZXI+MTwvaGF1c251bW1lcj4KCQkJCTxwb3N0ZmFjaCAvPgoJCQkJPHBvc3RsZWl0emFobD4yMzc5NTwvcG9zdGxlaXR6YWhsPgoJCQkJPG9ydD5CYWQgU2VnZWJlcmc8L29ydD4KCQkJCTxvcnRzdGVpbCAvPgoJCQkJPHp1c2F0eiAvPgoJCQkJPHN0YWF0PkRldXRzY2hsYW5kPC9zdGFhdD4KCQkJPC9hbnNjaHJpZnQ+CgkJCTxrb250YWt0PgoJCQkJPHRlbGVmb25udW1tZXIgLz4KCQkJCTxtb2JpbG51bW1lciAvPgoJCQkJPHRlbGVmYXhudW1tZXIgLz4KCQkJCTxlbWFpbGFkcmVzc2U+c3VzYW5uZS5maXNjaGVyLmRhdGFwb3J0QGdtYWlsLmNvbTwvZW1haWxhZHJlc3NlPgoJCQkJPGRlbWFpbGFkcmVzc2UgLz4KCQkJPC9rb250YWt0PgoJCTwvYW5zcHJlY2hwYXJ0bmVyPgoJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+CgkJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nPgoJCQkJPGF1c2dld2FlaGx0ZV96dXN0YWVuZGlnZXN0ZWxsZT4KCQkJCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjEyMzQ1Njc4PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5PcmRudW5ncy0gdW5kCgkJCQkJCUdld2VyYmVhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgoJCQkJPEdlYmlldElEPjkwMDc0MDQ8L0dlYmlldElEPgoJCQkJPEdlYmlldEJFWkVJQ0hOVU5HPkJhZCBTZWdlYmVyZzwvR2ViaWV0QkVaRUlDSE5VTkc+CgkJCQk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJCQkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJCQk8bGVpa2FLRVlMSVNUPjk5MDg5MTIyMDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPgoJCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmc+CgkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+Cgk8L2ZtPgo8L215Rm9ybT4=</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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</content> - <contentType>image/jpeg</contentType> - <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> - <name>Helge1.jpg</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>UEsDBBQAAAgAACxEj1JexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALESPUgYCUOZqAQAAagEAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAtQAAAQAIAwAAAML9x+kAAAA8UExURYyQkJCTlZ6fo6qknrm2tri6vMW2qsrGv8rQ1d/Uytvm79vq9ezn5O/0+fDq5fT3+vj39////wAAAP///81aQL0AAADpSURBVHja7dK5DYAwEADB4zU2j6H/ZskpAOmk2Qom2HgyFtTU1NTU1NTU1NTU1J+us99Hz6ZexyGmPZu6LluZm6+pqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqan/6AXwWwUaPv4WoAAAAABJRU5ErkJgglBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1spVddb9s2FH3vrxA0YG8M7bgDEi12H1oU2JoURZ0Be2UoSiYmiRpJWfa/3yVp0ZRjOVz8Ilu851zeb1IPn3Z1lWyZVFw0y3R+M0sT1lCR86Zcpn89f0V36afVhwdRFJyyLBe0q1mjERWNht8E2I3KnHSZdrLJBFFcZQ2pmco0zUTLmoGVhejM7uVWlN5X0XQLDtma7XQs2WBHXPISv7MFh+xckj6WbLAQ1JBeiFjyTlWoEBD1uiWan1ixq3jzzzLdaN1mGPd9f9MvboQs8fz+/h5bqTeYelzbycqicopZxcxmCs9v5njA1kyTWPsMNjSp6eoXJqNDQzR5lVW1LaMrYltOhIZuiIyuDQsep3eRx6d3kYfcmujNRE7u8BMI7ePp8VgLso7dy2BHoaKSt9FuOnTIF0J4Uw3BNag193Y2+4jde4DuL8J7yTWTAZxehFNSUR9xUZ8LGuDmGBCIbU2Z+sI3gVAThFvsxB6s8knV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</content> - <contentType>application/vnd.oasis.opendocument.text</contentType> - <id>assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7</id> - <name>Helgetext2.odt</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>OZG-1362Formular</form> - <formId>OZG-1362Formular</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} - -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCiAgICB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgogICAgdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCiAgICB0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKICAgIHQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgogICAgdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKICAgIHQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKICAgIHQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KICAgIDxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+CiAgICA8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KICAgIDxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+CiAgICA8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KICAgIDxhbnRyYWdzdGVsbGVyPgogICAgICAgIDxwZXJzX2FucmVkZT5IZXJyJDAzPC9wZXJzX2FucmVkZT4KICAgICAgICA8cGVyc19uYWNobmFtZT5UZXN0ZXJtYW5uPC9wZXJzX25hY2huYW1lPgogICAgICAgIDxwZXJzX3Zvcm5hbWU+TWF4PC9wZXJzX3Zvcm5hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L3BlcnNfZ2VidXJ0c25hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2RhdHVtPjE5OTUtMDMtMjE8L3BlcnNfZ2VidXJ0c2RhdHVtPgogICAgICAgIDxwZXJzX2dlYnVydHNvcnQ+RmxlbnNidXJnPC9wZXJzX2dlYnVydHNvcnQ+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2xhbmQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfZ2VidXJ0c2xhbmQ+CiAgICAgICAgPHBlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CiAgICAgICAgPGJfYW5yZWRlPkhlcnI8L2JfYW5yZWRlPgogICAgICAgIDxiX2FucmVkZV9zY2hsdWVzc2VsbnI+MDM8L2JfYW5yZWRlX3NjaGx1ZXNzZWxucj4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZD5EZXV0c2NobGFuZDwvYl9nZWJ1cnRzbGFuZD4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZF9zaWduYXR1cj4wMDA8L2JfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+CiAgICAgICAgPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvYl9zdGFhdHNhbmdlaG9lcmlna2VpdD4KICAgICAgICA8Yl9zdGFhdHNhbmdlaG9lcmlna2VpdF9zaWduYXR1cj4wMDA8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+CiAgICAgICAgPHNoX3N0cmFzc2U+S8O2bmlnc3dlZzwvc2hfc3RyYXNzZT4KICAgICAgICA8c2hfaGF1c251bW1lcj43NDwvc2hfaGF1c251bW1lcj4KICAgICAgICA8c2hfcGx6PjI0ODM3PC9zaF9wbHo+CiAgICAgICAgPG9ydF9hdXN3YWhsPjkwMDczMTQkMDEwNTkwNzU8L29ydF9hdXN3YWhsPgogICAgICAgIDxvcnQ+U2NobGVzd2lnPC9vcnQ+CiAgICAgICAgPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgogICAgICAgIDxHZWJpZXRCRVpFSUNITlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPgogICAgICAgIDxHZWJpZXRHTlI5NF9HTlI+MDEwNTkwNzU8L0dlYmlldEdOUjk0X0dOUj4KICAgICAgICA8c3RhYXQ+MDAwPC9zdGFhdD4KICAgICAgICA8aXNvMzE2Nm51bWVyaXNjaD4yNzY8L2lzbzMxNjZudW1lcmlzY2g+CiAgICAgICAgPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPgogICAgICAgIDxrb250X21vYmlsbnVtbWVyPis0OSAxMjM8L2tvbnRfbW9iaWxudW1tZXI+CiAgICAgICAgPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPgogICAgICAgIDxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4KICAgICAgICA8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPgogICAgICAgIDxwZXJzb2VubGljaGVFaWdudW5nPgogICAgICAgICAgICA8bWFlbmdlbHZvcmhhbmRlbj5mYWxzZTwvbWFlbmdlbHZvcmhhbmRlbj4KICAgICAgICAgICAgPGVybWl0dGx1bmdzdmVyZmFocmVuPmZhbHNlPC9lcm1pdHRsdW5nc3ZlcmZhaHJlbj4KICAgICAgICAgICAgPE1pdGdsaWVkc2NoYWZ0SW5WZXJib3Rlcm5lclZlcmVpbmlndW5nPmZhbHNlPC9NaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz4KICAgICAgICA8L3BlcnNvZW5saWNoZUVpZ251bmc+CiAgICA8L2FudHJhZ3N0ZWxsZXI+CiAgICA8R2ViaWV0SUQ+OTAwNzMxNDwvR2ViaWV0SUQ+CiAgICA8enVzdGFlbmRpZ2VzdGVsbGU+CiAgICAgICAgPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTUzNTY2OTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+S3JlaXMKICAgICAgICAgICAgU2NobGVzd2lnLUZsZW5zYnVyZy9LcmVpc3ZlcndhbHR1bmcgLSBBbGxnZW1laW5lCiAgICAgICAgICAgIE9yZG51bmdzYW5nZWxlZ2VuaGVpdGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+CiAgICAgICAgPHN0cmFzc2U+RmxlbnNidXJnZXIgU3RyYcOfZTwvc3RyYXNzZT4KICAgICAgICA8aGF1c251bW1lcj43PC9oYXVzbnVtbWVyPgogICAgICAgIDxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KICAgICAgICA8b3J0SUQ+OTAwNzMxNDwvb3J0SUQ+CiAgICAgICAgPG9ydD5TY2hsZXN3aWc8L29ydD4KICAgICAgICA8dGVsZWZvbm51bW1lcj4wNDYyMSA4Ny0wPC90ZWxlZm9ubnVtbWVyPgogICAgICAgIDx0ZWxlZmF4bnVtbWVyPjA0NjIxIDg3LTM2NjwvdGVsZWZheG51bW1lcj4KICAgICAgICA8ZW1haWxhZHJlc3NlPkdlZmFocmVuYWJ3ZWhyQEtpZWwuZGU8L2VtYWlsYWRyZXNzZT4KICAgICAgICA8ZGVtYWlsYWRyZXNzZSAvPgogICAgICAgIDxrb250YWt0c3lzdGVtX2tlbm51bmc+YWZtc2g6OTUzNTY2OV9rbGVpbmVyV2FmZmVuc2NoZWluPC9rb250YWt0c3lzdGVtX2tlbm51bmc+CiAgICAgICAgPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0eiAvPgogICAgICAgIDxBbmxpZWdlbkJFWkVJQ0hOVU5HPldhZmZlbnNjaGVpbiAvIEtsZWluZXIgV2FmZmVuc2NoZWluPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPgogICAgICAgIDxsZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkwMDgwMDEwMDA8L2xlaWthS0VZTElTVD4KICAgICAgICA8YXVzd2FobF96dXN0ZWxsdW5nPmFiaG9sZW48L2F1c3dhaGxfenVzdGVsbHVuZz4KICAgICAgICA8Yl96dXN0ZWxsdW5nPkljaCBob2xlIGRlbiBLbGVpbmVuIFdhZmZlbnNjaGVpbiBzZWxic3QgYWIuPC9iX3p1c3RlbGx1bmc+CiAgICA8L3p1c3RhZW5kaWdlc3RlbGxlPgogICAgPGVtcGZhbmdlbmRlc3RlbGxlPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KICAgICAgICA8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwNjg4NzM8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KICAgICAgICA8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyCiAgICAgICAgICAgIFNjaGxlc3dpZy1Ib2xzdGVpbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgogICAgICAgIDxzdHJhc3NlPlJldmVudGxvdWFsbGVlPC9zdHJhc3NlPgogICAgICAgIDxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+CiAgICAgICAgPHBvc3RsZWl0emFobD4yNDEwNTwvcG9zdGxlaXR6YWhsPgogICAgICAgIDxvcnRJRD45MDA2NDAyPC9vcnRJRD4KICAgICAgICA8b3J0PktpZWw8L29ydD4KICAgICAgICA8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDk4OC04NjUwPC90ZWxlZm9ubnVtbWVyPgogICAgICAgIDx0ZWxlZmF4bnVtbWVyPis0OSA0MzEgOTg4LTYxNjExMTE8L3RlbGVmYXhudW1tZXI+CiAgICAgICAgPGVtYWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+CiAgICAgICAgPGRlbWFpbGFkcmVzc2U+ZWEtcG9zdHN0ZWxsZUBlYS1zaC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgogICAgICAgIDxrb250YWt0c3lzdGVtX2tlbm51bmc+YWZtc2g6OTA2ODg3M19BdXNuYWhtZUxLV0ZhaHJ2ZXJib3Q8L2tvbnRha3RzeXN0ZW1fa2VubnVuZz4KICAgICAgICA8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4KICAgIDwvZW1wZmFuZ2VuZGVzdGVsbGU+CiAgICA8ZXJrbGFlcnVuZ2VuPgogICAgICAgIDxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPgogICAgICAgIDxjaGVja19yaWNodGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD4KICAgICAgICA8Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+CiAgICAgICAgPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD4KICAgICAgICA8Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPiogTWlyIGlzdCBiZWthbm50LCBkYXNzIGR1cmNoIGRhcyBFaW5yZWljaGVuCiAgICAgICAgICAgIGRlcyBlbGVrdHJvbmlzY2hlbiBBbnRyYWdlcyB2b24gZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuCiAgICAgICAgICAgIGVyaG9iZW4gd2VyZGVuIGvDtm5uZW4uPC9iX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+CiAgICAgICAgPGJfZ2VidWVocmVuX2ludHJvPkdlYsO8aHIgYmVpIEF1c3N0ZWxsdW5nIGRlcyBrbGVpbmVuIFdhZmZlbnNjaGVpbnM6CiAgICAgICAgICAgIDYwLDAwIEV1cm8uIEJlYXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVyby4KICAgICAgICAgICAgU2llIHNpbmQgZ2Vtw6TDnyDCpyAzOSBXYWZmRyB2ZXJwZmxpY2h0ZXQsIGRlciB6dXN0w6RuZGlnZW4gQmVow7ZyZGUgZGllIHp1cgogICAgICAgICAgICBEdXJjaGbDvGhydW5nIGRlcyBHZXNldHplcyBlcmZvcmRlcmxpY2hlbiBBdXNrw7xuZnRlIHp1IGVydGVpbGVuLiBadXIKICAgICAgICAgICAgUHLDvGZ1bmcgSWhyZXIgd2FmZmVucmVjaHRsaWNoZW4gWnV2ZXJsw6Rzc2lna2VpdCB1bmQgRWlnbnVuZyBob2x0IGRpZQogICAgICAgICAgICBCZWjDtnJkZSBlaW5lIHVuYmVzY2hyw6Rua3RlIEF1c2t1bmZ0IGF1cyBkZW0gQnVuZGVzemVudHJhbHJlZ2lzdGVyLAogICAgICAgICAgICBlaW5lIEF1c2t1bmZ0IGF1cyBkZW0gemVudHJhbGVuIHN0YWF0c2Fud2FsdHNjaGFmdGxpY2hlbgogICAgICAgICAgICBWZXJmYWhyZW5zcmVnaXN0ZXIsIGVpbmUgU3RlbGx1bmduYWhtZSBkZXIgw7ZydGxpY2hlbgogICAgICAgICAgICBQb2xpemVpZGllbnN0c3RlbGxlIHVuZCBJaHJlciBXb2huc2l0emdlbWVpbmRlIGVpbi48L2JfZ2VidWVocmVuX2ludHJvPgogICAgICAgIDxiX3JpY2h0aWdrZWl0PiogSWNoIGJlc3TDpHRpZ2UgZGllIFJpY2h0aWdrZWl0IG1laW5lciBBbmdhYmVuLjwvYl9yaWNodGlna2VpdD4KICAgICAgICA8Yl9kYXRlbnNjaHV0ej4qIEljaCBlcmtsw6RyZSBtaWNoIGRhbWl0IGVpbnZlcnN0YW5kZW4sIGRhc3MgZGVyCiAgICAgICAgICAgIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiB6dXIgRXJmw7xsbHVuZyBzZWluZXIKICAgICAgICAgICAgQXVmZ2FiZW4gbWVpbmUgRGF0ZW4gdW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcgogICAgICAgICAgICBEYXRlbnNjaHV0ei1HcnVuZHZlcm9yZG51bmcgKERTLUdWTykgdW5kIGRlcwogICAgICAgICAgICBMYW5kZXNkYXRlbnNjaHV0emdlc2V0emVzIFNjaGxlc3dpZy1Ib2xzdGVpbiAoTERTRy1TSCkgc3BlaWNoZXJ0LAogICAgICAgICAgICB2ZXJhcmJlaXRldCB1bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQogICAgICAgICAgICBmw7xyIGRpZSBFbnRzY2hlaWR1bmcgenVzdMOkbmRpZ2UgU3RlbGxlIHdlaXRlcmxlaXRldC4gRWJlbnNvIGJpbiBpY2gKICAgICAgICAgICAgbWl0IGRlciByZWNodHNrb25mb3JtZW4gRGF0ZW52ZXJhcmJlaXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZQogICAgICAgICAgICB6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUKICAgICAgICAgICAgRWlud2lsbGlndW5nIGluIGRpZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIKICAgICAgICAgICAgZGVtIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50bG91YWxsZWUKICAgICAgICAgICAgNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyCiAgICAgICAgICAgIGRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZvciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kCiAgICAgICAgICAgIGRhdm9uIG5pY2h0IGJldHJvZmZlbi4gw5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4KICAgICAgICAgICAgRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuCiAgICAgICAgICAgIHp1c3RlaGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVya2zDpHJ1bmcKICAgICAgICAgICAgS2VubnRuaXMgZXJsYW5ndC48L2JfZGF0ZW5zY2h1dHo+CiAgICAgICAgPGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyCiAgICAgICAgICAgIE51dHp1bmcgZGllIERhdGVuIG1laW5lcyB6dXIgRGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRnZXLDpHRlcwogICAgICAgICAgICBhdWZnZXplaWNobmV0IHVuZCB2ZXJ3ZW5kZXQgd2VyZGVuIGvDtm5uZW4uPC9iX21pc3NicmF1Y2g+CiAgICAgICAgPHBvbGljeXVybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9kYXRlbnNjaHV0ei9kYXRlbnNjaHV0emVya2xhZXJ1bmdFQV9kZS5kb2M8L3BvbGljeXVybD4KICAgIDwvZXJrbGFlcnVuZ2VuPgogICAgPGxvZ291cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvbG9nb3Mva29wZl85MDY4ODczLmRvYzwvbG9nb3VybD4KICAgIDxmbT4KICAgICAgICA8YW5zcHJlY2hwYXJ0bmVyPgogICAgICAgICAgICA8ZmlybWVubmFtZSAvPgogICAgICAgICAgICA8YW5yZWRlPkhlcnI8L2FucmVkZT4KICAgICAgICAgICAgPHZvcm5hbWU+TWF4PC92b3JuYW1lPgogICAgICAgICAgICA8ZmFtaWxpZW5uYW1lPlRlc3Rlcm1hbm48L2ZhbWlsaWVubmFtZT4KICAgICAgICAgICAgPGFuc2NocmlmdD4KICAgICAgICAgICAgICAgIDxzdHJhc3NlPkvDtm5pZ3N3ZWc8L3N0cmFzc2U+CiAgICAgICAgICAgICAgICA8aGF1c251bW1lcj43NDwvaGF1c251bW1lcj4KICAgICAgICAgICAgICAgIDxwb3N0ZmFjaCAvPgogICAgICAgICAgICAgICAgPHBvc3RsZWl0emFobD4yNDgzNzwvcG9zdGxlaXR6YWhsPgogICAgICAgICAgICAgICAgPG9ydD5TY2hsZXN3aWc8L29ydD4KICAgICAgICAgICAgICAgIDxvcnRzdGVpbCAvPgogICAgICAgICAgICAgICAgPHp1c2F0eiAvPgogICAgICAgICAgICAgICAgPHN0YWF0PkRldXRzY2hsYW5kPC9zdGFhdD4KICAgICAgICAgICAgPC9hbnNjaHJpZnQ+CiAgICAgICAgICAgIDxrb250YWt0PgogICAgICAgICAgICAgICAgPHRlbGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmb25udW1tZXI+CiAgICAgICAgICAgICAgICA8bW9iaWxudW1tZXI+KzQ5IDEyMzwvbW9iaWxudW1tZXI+CiAgICAgICAgICAgICAgICA8dGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZheG51bW1lcj4KICAgICAgICAgICAgICAgIDxlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRlPC9lbWFpbGFkcmVzc2U+CiAgICAgICAgICAgICAgICA8ZGVtYWlsYWRyZXNzZT5tYXgudGVzdGVybWFubkBnbXguZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KICAgICAgICAgICAgPC9rb250YWt0PgogICAgICAgIDwvYW5zcHJlY2hwYXJ0bmVyPgogICAgICAgIDx2ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+CiAgICAgICAgICAgIDx2ZXJ3YWx0dW5nc2xlaXN0dW5nPgogICAgICAgICAgICAgICAgPGF1c2dld2FlaGx0ZV96dXN0YWVuZGlnZXN0ZWxsZT4KICAgICAgICAgICAgICAgICAgICA8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KICAgICAgICAgICAgICAgICAgICA8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCiAgICAgICAgICAgICAgICAgICAgICAgIFNjaGxlc3dpZy1GbGVuc2J1cmcvS3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQogICAgICAgICAgICAgICAgICAgICAgICBPcmRudW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgogICAgICAgICAgICAgICAgPC9hdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+CiAgICAgICAgICAgICAgICA8R2ViaWV0SUQ+OTAwNzMxNDwvR2ViaWV0SUQ+CiAgICAgICAgICAgICAgICA8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KICAgICAgICAgICAgICAgIDxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+CiAgICAgICAgICAgICAgICA8QW5saWVnZW5CRVpFSUNITlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KICAgICAgICAgICAgICAgIDxsZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkwMDgwMDEwMDA8L2xlaWthS0VZTElTVD4KICAgICAgICAgICAgICAgIDxsZWlrYUJFWkVJQ0hOVU5HIC8+CiAgICAgICAgICAgIDwvdmVyd2FsdHVuZ3NsZWlzdHVuZz4KICAgICAgICA8L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4KICAgIDwvZm0+CjwvbXlGb3JtPg==</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>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</content> - <contentType>image/jpeg</contentType> - <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> - <name>Helge1.jpg</name> - </attachments> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>UEsDBBQAAAgAACxEj1JexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALESPUgYCUOZqAQAAagEAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAtQAAAQAIAwAAAML9x+kAAAA8UExURYyQkJCTlZ6fo6qknrm2tri6vMW2qsrGv8rQ1d/Uytvm79vq9ezn5O/0+fDq5fT3+vj39////wAAAP///81aQL0AAADpSURBVHja7dK5DYAwEADB4zU2j6H/ZskpAOmk2Qom2HgyFtTU1NTU1NTU1NTU1J+us99Hz6ZexyGmPZu6LluZm6+pqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqan/6AXwWwUaPv4WoAAAAABJRU5ErkJgglBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1spVddb9s2FH3vrxA0YG8M7bgDEi12H1oU2JoURZ0Be2UoSiYmiRpJWfa/3yVp0ZRjOVz8Ilu851zeb1IPn3Z1lWyZVFw0y3R+M0sT1lCR86Zcpn89f0V36afVhwdRFJyyLBe0q1mjERWNht8E2I3KnHSZdrLJBFFcZQ2pmco0zUTLmoGVhejM7uVWlN5X0XQLDtma7XQs2WBHXPISv7MFh+xckj6WbLAQ1JBeiFjyTlWoEBD1uiWan1ixq3jzzzLdaN1mGPd9f9MvboQs8fz+/h5bqTeYelzbycqicopZxcxmCs9v5njA1kyTWPsMNjSp6eoXJqNDQzR5lVW1LaMrYltOhIZuiIyuDQsep3eRx6d3kYfcmujNRE7u8BMI7ePp8VgLso7dy2BHoaKSt9FuOnTIF0J4Uw3BNag193Y2+4jde4DuL8J7yTWTAZxehFNSUR9xUZ8LGuDmGBCIbU2Z+sI3gVAThFvsxB6s8knV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</content> - <contentType>application/vnd.oasis.opendocument.text</contentType> - <id>assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7</id> - <name>Helgetext2.odt</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServerVonTorsten</form> - <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} - -curl -v --header "Content-Type: text/xml;charset=UTF-8" \ ---data \ -'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> - <soap:Body> - <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> - <data> - <attachments> - <attributes> - <key>X-IntelliForm-Signed</key> - <value>false</value> - </attributes> - <content>PG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiDQoJeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiINCgl0OmlkPSIyMDIwMTIwMjU3NTIzMDQ0MzAwNCIgdDp0aW1lc3RhbXA9IjIwMjAtMTItMDJUMTQ6NTg6NDMuNzkwWiINCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIgdDpmb3JtPSJHZXdlcmJlYW5tZWxkdW5nIg0KCXQ6Zm9ybS1pZD0iZUdld2VyYmUvZUdld2VyYmVBbm1lbGR1bmciDQoJdDpjdXN0b21lcj0iRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIiIHQ6Y3VzdG9tZXItaWQ9ImVhLXNoIg0KCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4NCgk8R3VlbHRpZ0FiPjIwMjAtMTEtMDI8L0d1ZWx0aWdBYj4NCgk8R3J1bmRBbm1lbGR1bmdTY2hsdWVzc2VsPjAxPC9HcnVuZEFubWVsZHVuZ1NjaGx1ZXNzZWw+DQoJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgk8TmllZGVybGFzc3VuZ0FydD4xPC9OaWVkZXJsYXNzdW5nQXJ0Pg0KCTxJc3RSZWlzZWdld2VyYmU+ZmFsc2U8L0lzdFJlaXNlZ2V3ZXJiZT4NCgk8QmV0cmllYkFydEluZHVzdHJpZT5mYWxzZTwvQmV0cmllYkFydEluZHVzdHJpZT4NCgk8QmV0cmllYkFydEhhbmR3ZXJrPmZhbHNlPC9CZXRyaWViQXJ0SGFuZHdlcms+DQoJPEJldHJpZWJBcnRIYW5kZWw+ZmFsc2U8L0JldHJpZWJBcnRIYW5kZWw+DQoJPEJldHJpZWJBcnRTb25zdGlnZXM+dHJ1ZTwvQmV0cmllYkFydFNvbnN0aWdlcz4NCgk8cmVjaHRzZm9ybT5uaWNodCBlaW5nZXRyYWdlbmVzIEVpbnplbHVudGVybmVobWVuPC9yZWNodHNmb3JtPg0KCTxyZm0+MTgwPC9yZm0+DQoJPHJlZ2lzdGVyYXJ0IC8+DQoJPG1pbjJnZXNlbGxzY2hhZnRlcj5mYWxzZTwvbWluMmdlc2VsbHNjaGFmdGVyPg0KCTxnZXNldHpsaWNoZXJ2ZXJ0cmV0ZXI+SW5oYWJlcjwvZ2VzZXR6bGljaGVydmVydHJldGVyPg0KCTxCZXRyaWViPg0KCQk8SUQ+OTEwODM4PC9JRD4NCgkJPGdlc2NoYWVmdHNiZXplaWNobnVuZz5PWkctQ29uc3VsdGluZzwvZ2VzY2hhZWZ0c2JlemVpY2hudW5nPg0KCQk8RWludHJhZ3VuZ1BMWiAvPg0KCQk8RWludHJhZ3VuZ09ydCAvPg0KCQk8R2VyaWNodFNjaGx1ZXNzZWwgLz4NCgk8L0JldHJpZWI+DQoJPHNoX3N0cmFzc2U+UmV2ZW50bG91YWxsZTwvc2hfc3RyYXNzZT4NCgk8c2hfenVzYXR6IC8+DQoJPHNoX2hhdXNudW1tZXI+Njwvc2hfaGF1c251bW1lcj4NCgk8c2hfcGx6PjI0MTA1PC9zaF9wbHo+DQoJPG9ydF9hdXN3YWhsPjkwMDY0MDIkMDEwMDIwMDA8L29ydF9hdXN3YWhsPg0KCTxzaF9vcnRzdGVpbCAvPg0KCTxvcnQ+S2llbDwvb3J0Pg0KCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJPEdlYmlldEdOUjk0X0dOUj4wMTAwMjAwMDwvR2ViaWV0R05SOTRfR05SPg0KCTxzdGFhdD4wMDA8L3N0YWF0Pg0KCTxpc28zMTY2bnVtZXJpc2NoPjI3NjwvaXNvMzE2Nm51bWVyaXNjaD4NCgk8a29udF90ZWxlZm9ubnVtbWVyPjA0MzEgMTIzPC9rb250X3RlbGVmb25udW1tZXI+DQoJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCTxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4NCgk8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPg0KCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgk8Yl9rb250X3ZvcndhaGxfdGVsZWZvbj4wNDMxPC9iX2tvbnRfdm9yd2FobF90ZWxlZm9uPg0KCTxiX2tvbnRfdGVsZWZvbj4xMjM8L2Jfa29udF90ZWxlZm9uPg0KCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgk8Yl9rb250X3RlbGVmYXg+OTY1NDwvYl9rb250X3RlbGVmYXg+DQoJPFRhZXRpZ2tlaXRlbkdlc2FtdD4NCgkJPFRhZXRpZ2tlaXRlbkdlc2FtdC1pdGVtPg0KCQkJPGF1c3dhaGxfb2JlcmJlZ3JpZmY+UzwvYXVzd2FobF9vYmVyYmVncmlmZj4NCgkJCTxhdXN3YWhsX2thdGVnb3JpZT45NjwvYXVzd2FobF9rYXRlZ29yaWU+DQoJCQk8Y2hlY2tfdGFldGlna2VpdHNzY2h3ZXJwdW5rdD50cnVlPC9jaGVja190YWV0aWdrZWl0c3NjaHdlcnB1bmt0Pg0KCQkJPGFfdGFldGlna2VpdD5PWkctRW50d2lja2x1bmc8L2FfdGFldGlna2VpdD4NCgkJCTxiX29iZXJiZWdyaWZmPlMgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIERpZW5zdGxlaXN0dW5nZW48L2Jfb2JlcmJlZ3JpZmY+DQoJCQk8Yl9rYXRlZ29yaWU+OTYgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIMO8YmVyd2llZ2VuZCBwZXJzw7ZubGljaGVuDQoJCQkJRGllbnN0bGVpc3R1bmdlbjwvYl9rYXRlZ29yaWU+DQoJCQk8Yl91bnRlcmtsYXNzZT45Ni4wOS4wIEVyYnJpbmd1bmcgdm9uIHNvbnN0aWdlbiBEaWVuc3RsZWlzdHVuZ2VuIGEuDQoJCQkJbi4gZy48L2JfdW50ZXJrbGFzc2U+DQoJCQk8Yl91bnRlcmtsYXNzZV9zY2hsdWVzc2VsPjk2LjA5LjA8L2JfdW50ZXJrbGFzc2Vfc2NobHVlc3NlbD4NCgkJCTxiX2lua2w+LSBUw6R0aWdrZWl0ZW4gdm9uIEFzdHJvbG9naW5uZW4sIEFzdHJvbG9nZW4gU3Bpcml0aXN0aW5uZW51bmQNCgkJCQlTcGlyaXRpc3RlbiAtIEVyYnJpbmd1bmcgcGVyc8O2bmxpY2hlciBEaWVuc3RsZWlzdHVuZ2VuIHdpZQ0KCQkJCUJlZ2xlaXRkaWVuc3RlLCBIZWlyYXRzLSB1bmQgUGFydG5lcnZlcm1pdHRsdW5nIC0gQmV0cmV1dW5nIHZvbg0KCQkJCUhhdXN0aWVyZW4gd2llIFVudGVyYnJpbmd1bmcsIFBmbGVnZSwgQmVhdWZzaWNodGlndW5nIHVuZCBEcmVzc3VyIC0NCgkJCQlUw6R0aWdrZWl0ZW4gdm9uIEFobmVuZm9yc2NodW5nc2luc3RpdHV0ZW4gLSBUw6R0aWdrZWl0ZW4gdm9uDQoJCQkJVMOkdG93aWVydW5ncy0gdW5kIFBpZXJjaW5nc3R1ZGlvcyAtIFTDpHRpZ2tlaXRlbiB2b24gU2NodWhwdXR6ZXJpbm5lbg0KCQkJCXVuZCBTY2h1aHB1dHplcm4sIFRyw6RnZXJpbm5lbiB1bmQgVHLDpGdlcm4sIFBhcmtwbGF0enp1d2Vpc2VyaW5uZW4NCgkJCQl1bmQgLXp1d2Vpc2VybiB1c3cuIC0gQmV0cmllYiB2b24gbcO8bnpiZXRyaWViZW5lbiBHZXLDpHRlbiBmw7xyDQoJCQkJcGVyc8O2bmxpY2hlIERpZW5zdGxlaXN0dW5nZW4gd2llIEZvdG9hdXRvbWF0ZW4sIFdhYWdlbiwNCgkJCQlCbHV0ZHJ1Y2ttZXNzZXJuLCBTY2hsaWXDn2bDpGNoZXJuIHVzdy48L2JfaW5rbD4NCgkJPC9UYWV0aWdrZWl0ZW5HZXNhbXQtaXRlbT4NCgk8L1RhZXRpZ2tlaXRlbkdlc2FtdD4NCgk8SXN0TmViZW5lcndlcmI+ZmFsc2U8L0lzdE5lYmVuZXJ3ZXJiPg0KCTxBbnphaGxWb2xsemVpdEJlc2NoYWVmdGlndGU+MTwvQW56YWhsVm9sbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxBbnphaGxUZWlsemVpdEJlc2NoYWVmdGlndGU+MDwvQW56YWhsVGVpbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxCZXRlaWxpZ3RlUGVyc29uPg0KCQk8QmV0ZWlsaWd0ZVBlcnNvbi1pdGVtPg0KCQkJPHBlcnNvbkZ1bmt0aW9uPjE8L3BlcnNvbkZ1bmt0aW9uPg0KCQkJPHBlcnNvbkZ1bmt0aW9uVGV4dD5FaW56ZWxnZXdlcmJldHJlaWJlbmRlcjwvcGVyc29uRnVua3Rpb25UZXh0Pg0KCQkJPGRva3RvcmdyYWRTY2hsdWVzc2VsIC8+DQoJCQk8ZG9rdG9yZ3JhZCAvPg0KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+DQoJCQk8dm9ybmFtZT5NYXg8L3Zvcm5hbWU+DQoJCQk8Z2VzY2hsZWNodFRleHQ+bcOkbm5saWNoPC9nZXNjaGxlY2h0VGV4dD4NCgkJCTxnZXNjaGxlY2h0PjE8L2dlc2NobGVjaHQ+DQoJCQk8Z2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L2dlYnVydHNuYW1lPg0KCQkJPGdlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9nZWJ1cnRzZGF0dW0+DQoJCQk8Z2VidXJ0c29ydD5GbGVuc2J1cmc8L2dlYnVydHNvcnQ+DQoJCQk8Z2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2dlYnVydHNsYW5kPg0KCQkJPGdlYnVydHNsYW5kU2NobHVlc2VsPjAwMDwvZ2VidXJ0c2xhbmRTY2hsdWVzZWw+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPjAwMDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPg0KCQkJPGFkcl9zdHJhc3NlPkvDtm5pZ3N3ZWc8L2Fkcl9zdHJhc3NlPg0KCQkJPGFkcl96dXNhdHo+QXBwYXJ0bWVudCAzMjE8L2Fkcl96dXNhdHo+DQoJCQk8YWRyX2hhdXNudW1tZXI+NzQ8L2Fkcl9oYXVzbnVtbWVyPg0KCQkJPGFkcl9wbHo+MjQ4Mzc8L2Fkcl9wbHo+DQoJCQk8YWRyX29ydD5TY2hsZXN3aWc8L2Fkcl9vcnQ+DQoJCQk8YWRyX29ydHN0ZWlsPlNjaGxlc3dpZzwvYWRyX29ydHN0ZWlsPg0KCQkJPGFkcl9sYW5kPkRldXRzY2hsYW5kJERFJERFVSQyNzYkLmRlPC9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9udW1lcmlzY2g+Mjc2PC9iX2Fkcl9udW1lcmlzY2g+DQoJCQk8Yl9hZHJfbGFuZD5EZXV0c2NobGFuZDwvYl9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9hbHBoYTI+REU8L2JfYWRyX2FscGhhMj4NCgkJCTxiX2Fkcl9hbHBoYTM+REVVPC9iX2Fkcl9hbHBoYTM+DQoJCQk8Yl9hZHJfZG9tYWluPi5kZTwvYl9hZHJfZG9tYWluPg0KCQkJPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPg0KCQkJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCQkJPGtvbnRfZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlPC9rb250X2VtYWlsPg0KCQkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4NCgkJCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZm9uPisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdGVsZWZvbj45NjU0PC9iX2tvbnRfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgkJCTxiX2tvbnRfdGVsZWZheD45NjU0PC9iX2tvbnRfdGVsZWZheD4NCgkJCTxTdGF0dXNfRXJsYXVibmlzPjA8L1N0YXR1c19FcmxhdWJuaXM+DQoJCQk8Yl9FcmxhdWJuaXM+TGllZ3QgbmljaHQgdm9yPC9iX0VybGF1Ym5pcz4NCgkJPC9CZXRlaWxpZ3RlUGVyc29uLWl0ZW0+DQoJPC9CZXRlaWxpZ3RlUGVyc29uPg0KCTxLb250YWt0c3lzdGVtVHlwQT4yMzMwMzQ2MDA8L0tvbnRha3RzeXN0ZW1UeXBBPg0KCTxLb250YWt0c3lzdGVtVHlwQj4yMzMwMzQ2MDE8L0tvbnRha3RzeXN0ZW1UeXBCPg0KCTx6dXN0YWVuZGlnZXN0ZWxsZT4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5MYW5kZXNoYXVwdHN0YWR0IEtpZWwgLSBCw7xyZ2VyLSB1bmQNCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+RmFicmlrc3RyYcOfZTwvc3RyYXNzZT4NCgkJPGhhdXNudW1tZXI+OC0xMCAgICAgIDwvaGF1c251bW1lcj4NCgkJPHBvc3RsZWl0emFobD4yNDEwMzwvcG9zdGxlaXR6YWhsPg0KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+DQoJCTxvcnQ+S2llbDwvb3J0Pg0KCQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDkwMS0yODA3PC90ZWxlZm9ubnVtbWVyPg0KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDkwMS02MjA3MDwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5HZXdlcmJlbWVsZGVzdGVsbGVAa2llbC5kZTwvZW1haWxhZHJlc3NlPg0KCQk8ZGVtYWlsYWRyZXNzZSAvPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nIC8+DQoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4NCgkJPEFubGllZ2VuQkVaRUlDSE5VTkc+R2V3ZXJiZWFubWVsZHVuZywgRWxla3Ryb25pc2NoZSBHZXdlcmJlYW56ZWlnZTwvQW5saWVnZW5CRVpFSUNITlVORz4NCgkJPGxlaWthS0VZTElTVD45OTA1MDAxMjEwNDAwMDwvbGVpa2FLRVlMSVNUPg0KCTwvenVzdGFlbmRpZ2VzdGVsbGU+DQoJPGVtcGZhbmdlbmRlc3RlbGxlPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+DQoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyDQoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+UmV2ZW50bG91YWxsZWU8L3N0cmFzc2U+DQoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4NCgkJPG9ydElEPjkwMDY0MDI8L29ydElEPg0KCQk8b3J0PktpZWw8L29ydD4NCgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4NCgkJPHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5ODgtNjE2MTExMTwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+DQoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4NCgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5MDY4ODczX0F1c25haG1lTEtXRmFocnZlcmJvdDwva29udGFrdHN5c3RlbV9rZW5udW5nPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4NCgk8L2VtcGZhbmdlbmRlc3RlbGxlPg0KCTxlcmtsYWVydW5nZW4+DQoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPg0KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+DQoJCTxjaGVja19kYXRlbnNjaHV0ej50cnVlPC9jaGVja19kYXRlbnNjaHV0ej4NCgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD4NCgkJPGNoZWNrX2hpbndlaXM+dHJ1ZTwvY2hlY2tfaGlud2Vpcz4NCgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIERpZSBHZXdlcmJlYW5tZWxkdW5nIGlzdCBrb3N0ZW5wZmxpY2h0aWcuDQoJCQlEaWUgSMO2aGUgZGVyIEdlYsO8aHJlbiBiZW1pc3N0IHNpY2ggbmFjaCBkZXIgTGFuZGVzdmVyb3JkbnVuZyDDvGJlcg0KCQkJVmVyd2FsdHVuZ3NnZWLDvGhyZW4gKEFsbGdlbWVpbmVyIEdlYsO8aHJlbnRhcmlmKSBUYXJpZnN0ZWxsZSAxMS4xLjEgLQ0KCQkJVndHZWJWLiBHZW5hdWUgQXVza8O8bmZ0ZSBoaWVyenUgZXJ0ZWlsdCBkYXMgenVzdMOkbmRpZ2UgR2V3ZXJiZWFtdC48L2JfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4NCgkJPGJfZ2VidWVocmVuX2ludHJvIC8+DQoJCTxiX3JpY2h0aWdrZWl0PiogSWNoIGJlc3TDpHRpZ2UgZGllIFJpY2h0aWdrZWl0IG1laW5lciBBbmdhYmVuLjwvYl9yaWNodGlna2VpdD4NCgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcg0KCQkJRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluIHp1ciBFcmbDvGxsdW5nIHNlaW5lcg0KCQkJQXVmZ2FiZW4gbWVpbmUgRGF0ZW4gdW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcg0KCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMNCgkJCUxhbmRlc2RhdGVuc2NodXR6Z2VzZXR6ZXMgU2NobGVzd2lnLUhvbHN0ZWluIChMRFNHLVNIKSBzcGVpY2hlcnQsDQoJCQl2ZXJhcmJlaXRldCB1bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQ0KCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoDQoJCQltaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiBEYXRlbnZlcmFyYmVpdHVuZyB1bmQgU3BlaWNoZXJ1bmcgZHVyY2ggZGllDQoJCQl6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUNCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyDQoJCQlkZW0gRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluLCBSZXZlbnRsb3VhbGxlZQ0KCQkJNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyDQoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZA0KCQkJZGF2b24gbmljaHQgYmV0cm9mZmVuLiDDnGJlciBkaWUgVmVyYXJiZWl0dW5nIG1laW5lciBwZXJzb25lbmJlem9nZW5lbg0KCQkJRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuDQoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nDQoJCQlLZW5udG5pcyBlcmxhbmd0LjwvYl9kYXRlbnNjaHV0ej4NCgkJPGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyDQoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMNCgkJCWF1ZmdlemVpY2huZXQgdW5kIHZlcndlbmRldCB3ZXJkZW4ga8O2bm5lbi48L2JfbWlzc2JyYXVjaD4NCgkJPGJfaGlud2Vpc19iZXNjaHJpZnR1bmc+KiBEaWVzZSBBbnplaWdlIGJlcmVjaHRpZ3QgbmljaHQgenVtIEJlZ2lubg0KCQkJZGVzIEdld2VyYmViZXRyaWViZXMsIHdlbm4gbm9jaCBlaW5lIEVybGF1Ym5pcyBvZGVyIGVpbmUgRWludHJhZ3VuZw0KCQkJaW4gZGllIEhhbmR3ZXJrc3JvbGxlIG5vdHdlbmRpZyBpc3QuIFp1d2lkZXJoYW5kbHVuZ2VuIGvDtm5uZW4gbWl0DQoJCQlHZWxkYnXDn2Ugb2RlciBHZWxkc3RyYWZlIG9kZXIgRnJlaWhlaXRzc3RyYWZlIGdlYWhuZGV0IHdlcmRlbi4gRGllc2UNCgkJCUFuemVpZ2UgaXN0IGtlaW5lIEdlbmVobWlndW5nIHp1ciBFcnJpY2h0dW5nIGVpbmVyIEJldHJpZWJzc3TDpHR0ZQ0KCQkJZW50c3ByZWNoZW5kIGRlbSBQbGFudW5ncy0gdW5kIEJhdXJlY2h0LjwvYl9oaW53ZWlzX2Jlc2NocmlmdHVuZz4NCgkJPGJfaGlud2Vpc19pbnRybz5IaW53ZWlzPC9iX2hpbndlaXNfaW50cm8+DQoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+DQoJPC9lcmtsYWVydW5nZW4+DQoJPGJfdGltZXN0YW1wPjIwMjAxMjAyMTYwMzIzPC9iX3RpbWVzdGFtcD4NCgk8bG9nb3VybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jPC9sb2dvdXJsPg0KCTxmbT4NCgkJPGFuc3ByZWNocGFydG5lcj4NCgkJCTxmaXJtZW5uYW1lIC8+DQoJCQk8YW5yZWRlPkhlcnI8L2FucmVkZT4NCgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4NCgkJCTxmYW1pbGllbm5hbWU+VGVzdGVybWFubjwvZmFtaWxpZW5uYW1lPg0KCQkJPGFuc2NocmlmdD4NCgkJCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlPC9zdHJhc3NlPg0KCQkJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCQkJPHBvc3RmYWNoIC8+DQoJCQkJPHBvc3RsZWl0emFobD4yNDEwNTwvcG9zdGxlaXR6YWhsPg0KCQkJCTxvcnQ+S2llbDwvb3J0Pg0KCQkJCTxvcnRzdGVpbCAvPg0KCQkJCTx6dXNhdHogLz4NCgkJCQk8c3RhYXQ+RGV1dHNjaGxhbmQ8L3N0YWF0Pg0KCQkJPC9hbnNjaHJpZnQ+DQoJCQk8a29udGFrdD4NCgkJCQk8dGVsZWZvbm51bW1lcj4wNDMxIDEyMzwvdGVsZWZvbm51bW1lcj4NCgkJCQk8bW9iaWxudW1tZXIgLz4NCgkJCQk8dGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZheG51bW1lcj4NCgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPg0KCQkJCTxkZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPg0KCQkJPC9rb250YWt0Pg0KCQk8L2Fuc3ByZWNocGFydG5lcj4NCgkJPHZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgkJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+DQoJCQkJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA4MTk5NDwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQkJCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkxhbmRlc2hhdXB0c3RhZHQgS2llbCAtIELDvHJnZXItDQoJCQkJCQl1bmQgT3JkbnVuZ3NhbXQsIEdld2VyYmVtZWxkZXN0ZWxsZTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPg0KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPg0KCQkJCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgkJCQk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJCQkJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgkJCQk8QW5saWVnZW5CRVpFSUNITlVORz5HZXdlcmJlYW5tZWxkdW5nLCBFbGVrdHJvbmlzY2hlIEdld2VyYmVhbnplaWdlPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPg0KCQkJCTxsZWlrYUtFWUxJU1Q+OTkwNTAwMTIxMDQwMDA8L2xlaWthS0VZTElTVD4NCgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPg0KCQkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgk8L2ZtPg0KPC9teUZvcm0+</content> - <contentType>text/xml</contentType> - <id>myForm-xml</id> - <name>XML-Daten.xml</name> - </attachments> - <caller /> - <client>sh-dev</client> - <clientId>sh-dev</clientId> - <customer>Kiel</customer> - <customerId>Kiel</customerId> - <form>SimpleFormSendetAnHomeServerVonTorsten</form> - <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> - <id>20210415307020414701</id> - <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> - <timestamp>2021-04-15T08:33:39.443Z</timestamp> - <username /> - </data> - </ns2:deposit> - </soap:Body> -</soap:Envelope>' \ -${URL} \ No newline at end of file +for file in ${SCRIPT_DIR}/vorgang-*.xml; +do + curl -v --header "Content-Type: text/xml;charset=UTF-8" --data @$file ${URL}; +done diff --git a/intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml b/intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml new file mode 100644 index 0000000000000000000000000000000000000000..3fed263871d16626eb9bc1ec999f64a99c83e105 --- /dev/null +++ b/intelliform-adapter/src/main/scripts/vorgang-Eingliederungshilfe.xml @@ -0,0 +1,142 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiIHhtbG5zOnQ9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iIHhtbG5zOnU9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdXNlciIgdDppZD0iMjAyMTA0MTQzMjQxMjAwOTAyMDciIHQ6dGltZXN0YW1wPSIyMDIxLTA0LTE0VDA3OjAwOjEyLjQ4OFoiIHQ6c2VuZGVyPSJzdGFnZS5hZm0uc2NobGVzd2lnLWhvbHN0ZWluLmRlIiB0OmZvcm09IkVpbmdsaWVkZXJ1bmdzaGlsZmUgTWluZGVyasOkaHJpZ2UiIHQ6Zm9ybS1pZD0icGZtX3Bvc3RmYWNobWl0dGVpbHVuZyIgdDpjdXN0b21lcj0iS3JlaXMgU2VnZWJlcmciIHQ6Y3VzdG9tZXItaWQ9ImtyZWlzLXNlZ2ViZXJnL2tyZWlzLXNlZ2ViZXJnIiB0OmNsaWVudD0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmNsaWVudC1pZD0ibGFuZCIgdTpVc2VybmFtZT0iYWZtdDcwQHdlYi5kZSIgdTpQcmluY2lwYWxUeXBlPSJDaXRpemVuIiB1OnVzZXJuYW1lPSJkZTkzN2ExNy1iMTU2LTRhYWYtOTQ3Ni0yNjU4YmM4NzI2NTkiIHU6R2l2ZW5OYW1lcz0iRGF0YXBvcnQiIHU6QXNzdXJhbmNlTGV2ZWw9IkxvdyIgdTpkaXNwbGF5TmFtZT0iRGF0YXBvcnQgU0gtVXNlciIgdTptYWlsQWRkcmVzcz0iYWZtdDcwQHdlYi5kZSIgdTpFbWFpbEFkZHJlc3M9ImFmbXQ3MEB3ZWIuZGUiIHU6Zmlyc3ROYW1lPSJEYXRhcG9ydCIgdTpsYXN0TmFtZT0iU0gtVXNlciI+PGxlaXN0dW5nZW4+PGhlaWxwIGxhYmVsPSJIZWlscMOkZGFnb2dpc2NoZSBMZWlzdHVuZ2VuIj50cnVlPC9oZWlscD48aGlsZmUgbGFiZWw9IkhpbGZlIHp1ciBUZWlsaGFiZSBpbiBkZXIgR2VtZWluc2NoYWZ0Ij5mYWxzZTwvaGlsZmU+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48c2NodWwgbGFiZWw9IkxlaXN0dW5nZW4genVyIFRlaWxoYWJlIGFuIEJpbGR1bmciPmZhbHNlPC9zY2h1bD48dW50ZXJiIGxhYmVsPSJMZWlzdHVuZ2VuIMO8YmVyIFRhZyB1bmQgTmFjaHQiPmZhbHNlPC91bnRlcmI+PC9sZWlzdHVuZ2VuPjxiZWdydWVuZHVuZz50ZXN0PC9iZWdydWVuZHVuZz48bmFtZWlkPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvbmFtZWlkPjxyZXN0X3Jlc3BvbnNlX25hbWU+W3sibWVtYmVyY29udGV4dCI6ImRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OSIsIm1lbWJlcnNjb3BlIjpbeyJ0ZW5hbnQiOiJTSCIsIm1haWxib3hndWlkIjoiYzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyIiwibWFpbGJveG5hbWUiOiJOL0EiLCJtYWlsYm94ZGVzY3JpcHRpb24iOiJUZXN0IiwibWFpbGJveHR5cGUiOjEsImd1aWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJpZCI6MjM1OTkxNn1dfV08L3Jlc3RfcmVzcG9uc2VfbmFtZT48bWFpbGJveGd1aWQ+YzVhNDQ2YjctZDZiMC00YzYxLTlhZDItYWFlNjAwODU3OTgyPC9tYWlsYm94Z3VpZD48bmFjaG5hbWU+dGVydDwvbmFjaG5hbWU+PHZvcm5hbWU+dGVzdDwvdm9ybmFtZT48Z2VidXJ0c2RhdHVtPjIwMDAtMDQtMDc8L2dlYnVydHNkYXR1bT48ZGV1dHNjaD5kZXV0c2NoPC9kZXV0c2NoPjxiZXRyZXV1bmdfb19zY2h1bGU+ZGFoZWltPC9iZXRyZXV1bmdfb19zY2h1bGU+PHN0cmFzc2U+dGVzdDwvc3RyYXNzZT48aGF1c251bW1lcj4xMjI8L2hhdXNudW1tZXI+PHBsej4yMjIyMjwvcGx6PjxvcnQ+dGVzdDwvb3J0PjxwZmxlZ2VncmFkPmtlaW5lcjwvcGZsZWdlZ3JhZD48a3Jhbmtlbmthc3NlPnRlc3Q8L2tyYW5rZW5rYXNzZT48dmVyc2ljaGVydW5nc251bW1lcj53ZXRzZXQ8L3ZlcnNpY2hlcnVuZ3NudW1tZXI+PHNjaHdlcmJlaGluZGVydW5nPmZhbHNlPC9zY2h3ZXJiZWhpbmRlcnVuZz48ZWdoX2ZvbGdlYW50cmFnPmZhbHNlPC9lZ2hfZm9sZ2VhbnRyYWc+PGJldHJldXVuZz5kYWhlaW08L2JldHJldXVuZz48ZWx0ZXJuPjxlbHRlcm4taXRlbT48cm9sbGVfZWx0ZXI+dmF0ZXI8L3JvbGxlX2VsdGVyPjxuYWNobmFtZV9lbHRlcj5TSC1Vc2VyPC9uYWNobmFtZV9lbHRlcj48dm9ybmFtZV9lbHRlcj5EYXRhcG9ydDwvdm9ybmFtZV9lbHRlcj48Z2VidXJ0c3RhZ19lbHRlcj4yMDAwLTA0LTA5PC9nZWJ1cnRzdGFnX2VsdGVyPjxmZXN0bmV0el9lbHRlcj4yMzQ8L2Zlc3RuZXR6X2VsdGVyPjxtYWlsX2VsdGVyPmFmbXQ3MEB3ZWIuZGU8L21haWxfZWx0ZXI+PGFsdF9hZHJfZWx0ZXI+ZmFsc2U8L2FsdF9hZHJfZWx0ZXI+PC9lbHRlcm4taXRlbT48L2VsdGVybj48c29yZ2VyZWNodD52YXRlcjwvc29yZ2VyZWNodD48Z2VzY2h3aXN0ZXIvPjxwZmxlZ2VmYW1pbGllPmZhbHNlPC9wZmxlZ2VmYW1pbGllPjxhcnp0PnRlc3Q8L2FyenQ+PGRpYWdub3Nlbj50ZXN0PC9kaWFnbm9zZW4+PHVudGVyc3VjaHVuZ2VuPjxhdWdlbiBsYWJlbD0iQXVnZW5hcnp0Ij5mYWxzZTwvYXVnZW4+PGhubyBsYWJlbD0iSE5PLUFyenQiPnRydWU8L2hubz48a2ggbGFiZWw9IkRpYWdub3N0aWtlbiBpbSBLcmFua2VuaGF1cyI+ZmFsc2U8L2toPjxvcnRobyBsYWJlbD0iT3J0aG9ww6RkaWUiPmZhbHNlPC9vcnRobz48b3RoZXIgbGFiZWw9IiI+ZmFsc2U8L290aGVyPjxwc3ljaGF0ZXIgbGFiZWw9IktpbmRlci0gdW5kIEp1Z2VuZHBzeWNoaWF0ZXIiPmZhbHNlPC9wc3ljaGF0ZXI+PHNvemlhbCBsYWJlbD0iU296aWFscMOkZGlhdHJpc2NoZXMgWmVudHJ1bSI+ZmFsc2U8L3NvemlhbD48L3VudGVyc3VjaHVuZ2VuPjxtYXNzbmFobWVuPjxlcmdvIGxhYmVsPSJFcmdvdGhlcmFwaWUiPnRydWU8L2VyZ28+PGtnIGxhYmVsPSJLcmFua2VuZ3ltbmFzdGlrIj5mYWxzZTwva2c+PGxvZ28gbGFiZWw9IkxvZ29ww6RkaWUiPmZhbHNlPC9sb2dvPjxtdXNpayBsYWJlbD0iVGVpbG5haG1lIGFuIGVpbmVyIE11c2lrZ3J1cHBlIj5mYWxzZTwvbXVzaWs+PG90aGVyIGxhYmVsPSIiPmZhbHNlPC9vdGhlcj48cHN5Y2hvIGxhYmVsPSJQc3ljaG90aGVyYXBpZSI+ZmFsc2U8L3BzeWNobz48c2Nod2ltbWVuIGxhYmVsPSJTY2h3aW1tZW4iPmZhbHNlPC9zY2h3aW1tZW4+PHNwcmFjaCBsYWJlbD0iU3ByYWNoZsO2cmRlcnVuZyBpbiBkZXIgS2luZGVydGFnZXNzdMOkdHRlIj5mYWxzZTwvc3ByYWNoPjx2ZXJlaW4gbGFiZWw9Ik1pdGdsaWVkc2NoYWZ0IGluIGVpbmVtIFR1cm4tL1Nwb3J0dmVyZWluIj5mYWxzZTwvdmVyZWluPjwvbWFzc25haG1lbj48anVnZW5kYW10X2tvbnRha3Q+ZmFsc2U8L2p1Z2VuZGFtdF9rb250YWt0PjxqdWdlbmRhbXRfYWt0ZW5laW5zaWNodD50cnVlPC9qdWdlbmRhbXRfYWt0ZW5laW5zaWNodD48cGVyc29uYWxhdXN3ZWlzPjxwZXJzb25hbGF1c3dlaXMtaXRlbT48ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3BkZiIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuM0Y0QzVGOUI5NzM3MzMzOTMzQjkzNTZFNDlBQTM1RUIzRDkyNzJCOSIgbGVuZ3RoPSIxODE5MjYiPnRlc3QucGRmPC9maWxlPjwvcGVyc29uYWxhdXN3ZWlzLWl0ZW0+PC9wZXJzb25hbGF1c3dlaXM+PHNvcmdlcmVjaHRzbmFjaHdlaXM+PGZpbGUgY29udGVudC10eXBlPSJhcHBsaWNhdGlvbi9wZGYiIGRlc2NyaXB0aW9uPSIiIGlkPSJhc3Npc3RhbnRzLjdDOUFDMDc0M0NFMDY1QTc0RTBEQzJEODVGOTY4MkJGQzQ5MDM1QkIiIGxlbmd0aD0iMTgxOTI2Ij50ZXN0ICgxKS5wZGY8L2ZpbGU+PC9zb3JnZXJlY2h0c25hY2h3ZWlzPjxlcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz50cnVlPC9lcmtsYWVydW5nX2VpbnZlcnN0YWVuZG5pcz48ZGF0ZW5zY2h1dHo+dHJ1ZTwvZGF0ZW5zY2h1dHo+PHBvc3RmYWNoYmV0cmVmZj5JaHIgQW50cmFnIGF1ZiBFaW5nbGllZGVydW5nc2hpbGZlIGbDvHIgTWluZGVyasOkaHJpZ2U8L3Bvc3RmYWNoYmV0cmVmZj48cG9zdGZhY2huYWNocmljaHQ+U2VociBnZWVocnRlL3IgQW50cmFnc3RlbGxlcippbiwgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0lociBBbnRyYWcgd3VyZGUgZXJmb2xncmVpY2ggw7xiZXJtaXR0ZWx0LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHLDpGd0LiBTaWUgZXJoYWx0ZW4gdW5hdWZnZWZvcmRlcnQgZWluZSBSw7xja21lbGR1bmcgenUgSWhyZW0gQW50cmFnLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHJlIFZvcmdhbmdzbnVtbWVyIGZpbmRlbiBTaWUgaW0gYW5nZWjDpG5ndGVuIERva3VtZW50LiAmbHQ7YnIvJmd0O0JpdHRlIGdlYmVuIFNpZSBkaWVzZSBWb3JnYW5nc251bW1lciBiZWkgYWxsZW4gQW5mcmFnZW4genUgSWhyZW0gQW50cmFnIGFuLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O01pdCBmcmVuZGxpY2hlbiBHcsO8w59lbiZsdDtici8mZ3Q7SWhyIEtyZWlzIFNlZ2ViZXJnJmx0O2JyLyZndDsmbHQ7YnIvJmd0Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtLcmVpcyBTZWdlYmVyZyAmbHQ7YnIvJmd0O0VpbmdsaWVkZXJ1bmdzaGlsZmUgZsO8ciBNaW5kZXJqw6RocmlnZSZsdDtici8mZ3Q7Jmx0O2JyLyZndDtQb3N0YW5zY2hyaWZ0OiZsdDtici8mZ3Q7SGFtYnVyZ2VyIFN0ci4gMzAmbHQ7YnIvJmd0OzIzNzk1IEJhZCBTZWdlYmVyZyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtCZXN1Y2hlcmFuc2NocmlmdDombHQ7YnIvJmd0O0J1cmdmZWxkc3RyLiA0MWEgJmx0O2JyLyZndDsyMzc5NSBCYWQgU2VnZWJlcmcgJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0ZheDogKzQ5NDU1MS85NTEtOTU2NSAmbHQ7YnIvJmd0O0UtTWFpbDogJmx0O2EgaGVyZj0ibWFpbHRvOmludGVncmF0aW9uLmtpbmRlckBzZWdlYmVyZy5kZSImZ3Q7aW50ZWdyYXRpb24ua2luZGVyQHNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7SW50ZXJuZXQ6ICZsdDthIGhyZWY9Ind3dy5zZWdlYmVyZy5kZSImZ3Q7d3d3LnNlZ2ViZXJnLmRlJmx0Oy9hJmd0OyZsdDtici8mZ3Q7PC9wb3N0ZmFjaG5hY2hyaWNodD48L215Rm9ybT4=</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4IiBJc3N1ZUluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjxzYW1sOklzc3Vlcj51cm46ZGF0YXBvcnQ6b3NpOnNlcnZpY2Vrb250bzppZHA6cnoyOnN0YWdlOnNoPC9zYW1sOklzc3Vlcj48U2lnbmF0dXJlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj48U2lnbmVkSW5mbz48Q2Fub25pY2FsaXphdGlvbk1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjxTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+PFJlZmVyZW5jZSBVUkk9IiNfZDViZDQ3ZmMtZWU4MC00MDk0LWE5M2ItY2UzZDUyMTk1OWU4Ij48VHJhbnNmb3Jtcz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIj48SW5jbHVzaXZlTmFtZXNwYWNlcyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIiBQcmVmaXhMaXN0PSIjZGVmYXVsdCBzYW1sIGRzIHhzIHhzaSIvPjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8+PERpZ2VzdFZhbHVlPi8raURwbHVXdGFMd20rY1M5aCtYVEc0aTBiQy9jYS9WbjdMMWFObWtXNFk9PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPkdVMm9NOWNTZWFyZCt0MlU1WTBzNDVQKzlQdzJKNVdwSzh6MXNYa2NvT0RHY0lhVzljU3dKa0RTc2U0Z0lHQ1VYTXYxcWRhbytJdmFuQlJReXc3Mmo1SFVWdFNkWktBUkg5NjBoeEJ4YVhQRVN3VUQ5OTF4TzlYWVJ2ZmoxZU5waTNkRWpVRWtKUEN3T1g2NmlsWUZhQ0VCeFdwOXF4MGVVZVdzdnVOOUg1aytoWFJpdHpPdGdRMmFTenUrZUlzQnpOU3hoVHJkSXJPck9nV0orVHEwTmhZOC84WDNUT3EzQW9qMHJJTHcrVEZYMWFENmo2NUNWKzQ0eGtCWjlDK0F3NENrcTRRYUk4ckt6UzY4djlReUt2MTVOT2dhcmx6TGE3OUNNc2h1aUk4eDZldFZOSHpHcm15RC9Nc243bmticlhEWTdoQUNuL294bXlydk1YQXpGdz09PC9TaWduYXR1cmVWYWx1ZT48S2V5SW5mbz48WDUwOURhdGE+PFg1MDlDZXJ0aWZpY2F0ZT5NSUlHM3pDQ0JNZWdBd0lCQWdJVGJRQUxpdm01eVVoSU9TYmQwQUFCQUF1SytUQU5CZ2txaGtpRzl3MEJBUXNGQURBK01Rc3dDUVlEVlFRR0V3SkVSVEVXTUJRR0ExVUVDZ3dOUkdGMFlYQnZjblFnUWNPMlVqRVhNQlVHQTFVRUF3d09SR0YwWVhCdmNuUWdRMEVnTURRd0hoY05NakF3TkRJM01EY3dOelUwV2hjTk1qSXdOek14TURjd056VTBXakNCcWpFTE1Ba0dBMVVFQmhNQ1JFVXhHekFaQmdOVkJBZ01FbE5qYUd4bGMzZHBaeTFJYjJ4emRHVnBiakVTTUJBR0ExVUVCd3dKUVd4MFpXNW9iMng2TVJFd0R3WURWUVFLREFoRVlYUmhjRzl5ZERFTk1Bc0dBMVVFQ3d3RVZGb3hOREZJTUVZR0ExVUVBd3cvYzJGdGJDNXBaSEF1YzJWeWRtbGpaV3R2Ym5SdkxuTjBZV2RsTG5ObGNuWnBZMlZ3YjNKMFlXd3VjMk5vYkdWemQybG5MV2h2YkhOMFpXbHVMbVJsTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFwUFRUZHhpQ3laenJEU2NZclQ5ckNxcHl1RFRqYzY1ZTJTTzBjRE03Mmd0dW1zOFZqQVp2T1Jic09vWm90dEFUYmlSWWpXM2t1Z3ZkeGFHdk1lYlRCNE93YVd0UDlwUDNRdTZjaWVrRG9IdmpQUHQyTG05TmdNT3BTVFNMSENxT3QrdWFiNEdYU1NPQmt3TXFlNDNMa2RaU3E5WS9tazJ6QlBZcXlVMzEwN2dkd01xUWRGdWhqZU5iYVEvMFFYa1laTGdVeFR1OGpVSmxGZXh1QkxZTjZ1WHJHVllyV0dQTU9Vdk83cGYzc3BzMjRnUVJFWlVHMkJkU0tkbjhqaDRjR0Y2ODhtNk5uTlBOVGZ5L3BWbmRDVDQzY0lGT0JQSHRvTitTcWs2ZGVKVVJoY3hyeE56U3Z2RUYvRWVMOE1WSUU3Ym5IRGhaZGtmbXU5MkVldlNoQXdJREFRQUJvNElDWnpDQ0FtTXdIUVlEVlIwT0JCWUVGQmczOU0yVGlPNkE0aHh1QjFKKytLbTgxYUVpTUE0R0ExVWREd0VCL3dRRUF3SUZvREJLQmdOVkhSRUVRekJCZ2o5ellXMXNMbWxrY0M1elpYSjJhV05sYTI5dWRHOHVjM1JoWjJVdWMyVnlkbWxqWlhCdmNuUmhiQzV6WTJoc1pYTjNhV2N0YUc5c2MzUmxhVzR1WkdVd0h3WURWUjBqQkJnd0ZvQVVzZUttMi95SjVUZm83NkxMT295WTBQUkpKTjh3UmdZRFZSMGZCRDh3UFRBN29EbWdONFkxYUhSMGNEb3ZMM0JyYVM1elpYSjJhV05sWkhCaGIzSXVaR1V2WTNKc0wwUmhkR0Z3YjNKMEpUSXdRMEVsTWpBd05DNWpjbXd3Z1lBR0NDc0dBUVVGQndFQkJIUXdjakFyQmdnckJnRUZCUWN3QVlZZmFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdmIyTnpjREJEQmdnckJnRUZCUWN3QW9ZM2FIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyRXZSR0YwWVhCdmNuUWxNakJEUVNVeU1EQTBLREVwTG1OeWREQU1CZ05WSFJNQkFmOEVBakFBTUQwR0NTc0dBUVFCZ2pjVkJ3UXdNQzRHSmlzR0FRUUJnamNWQ09yYVk0WE0zRUNDcVpjZ2hOVGpjNEg0cFhhQlhvTzFsanVEdnJ0dUFnRmtBZ0VpTUNjR0ExVWRKUVFnTUI0R0NDc0dBUVVGQndNQkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSUFnSXdNd1lKS3dZQkJBR0NOeFVLQkNZd0pEQUtCZ2dyQmdFRkJRY0RBVEFLQmdnckJnRUZCUWNEQWpBS0JnZ3JCZ0VGQlFnQ0FqQlBCZ05WSFNBRVNEQkdNRVFHRFNzR0FRUUJncWxYZzMyQlNBSXdNekF4QmdnckJnRUZCUWNDQVJZbGFIUjBjRG92TDNCcmFTNXpaWEoyYVdObFpIQmhiM0l1WkdVdlkyVnlkR05zWVhOekFEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFPbG9Kc05vaUdoN09TRWdLelF1TEE1ZUozUFpLOGJ4MGdmVXlOZVJvSVlVQnErZ1lVSW1IM2tRU3R1bDg2WXhwU3JrUzNGNkU3c2pqWitncHRXai95aDcwMUYzR0EvZEk3TDVBTGNmSXdWWjlVckIzdnlKWHYwWGNQSmlMb05uZ3N0TDdBUzFobFV3d0NYN0pCS1FVdnFnS2dMWGFyWGpHYko2emZCMlVTSG9LSWJkVlo4R0ZhUENPWU5QZmlHanBDaSs4WUllTWY5eHRhSUJ6dGFRUEJ2eW4yVC9CNzBNSjBLK1JFZTdzTUNSSXBmYTdsZThRNVBlaGJEQWpkOWhCb3hzbWJtUXhxZmtKUHNYVDNqeGIxZk5pWHRyNjFRVkh0ODQ4dTNkOXhCVkc5OSthRlZlNnJRd01wdDA4TWpBYWdWemNpS2RlRU01WTAzaUNBVFdabDZEYjZINjhlVU9FdTdJTmxmNDF1UGQ3U0FOMnpRT1pIZ3pnZTJjbXNwcGZlKyt4NU1VK3YyUy9rOUJrVHQwU2FqWEtHcjczdk92VU1pMUhvNjEwMkpKdWg5K2NyVDRRM1VFRkp3QStkZHVVK25MVDRDWGZjOGs3RGVCTGJBME1IQzNhOXFLcmZKcnNlM2NkVmdRQmVSWFFDTk55OGJHV2swdHNueXhWMDJhdG92TnJ6ZXBMekE3dCtOU2lPNUNUWXo5U3NXSXRLTk5Wd3kyZ3ZwQjVNU1Fsc2tQRWNFMzh2UTYvc1p2Nks0MGczbnY1Q2Z1RlMyait2eDdsSTVCVmJQSW1KNDN3QXB0dktnUVAyVEtuTFEwTmRCWE5VSzlQZGI3MlJtM1BGTlp3eHVMdncyV1BXNk9SNVRvdk44Q3VIdHNGTmU0UHlPTVg2QnN4elVqb0dFMD08L1g1MDlDZXJ0aWZpY2F0ZT48L1g1MDlEYXRhPjwvS2V5SW5mbz48L1NpZ25hdHVyZT48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OnBlcnNpc3RlbnQiIE5hbWVRdWFsaWZpZXI9InVybjpvc3A6bmFtZXM6cmVhbG06c3RhZ2U6c2giPmRlOTM3YTE3LWIxNTYtNGFhZi05NDc2LTI2NThiYzg3MjY1OTwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIEluUmVzcG9uc2VUbz0iX2Q3M2VlMTJlYmIwMjY0OWQyM2Q4M2U2OWM2OWM4NTcxIiBOb3RPbk9yQWZ0ZXI9IjIwMjEtMDQtMTRUMTc6MDA6MTMuNjM4WiIgUmVjaXBpZW50PSJodHRwczovL3N0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUvb3NpL1NoaWJib2xldGguc3NvL1NBTUwyL1BPU1QiLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdE9uT3JBZnRlcj0iMjAyMS0wNC0xNFQxNzowMDoxMy42MzhaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc3RhZ2UuYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZTwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMjEtMDQtMTRUMDc6MDA6MTMuNjM4WiIgU2Vzc2lvbkluZGV4PSJiZjA0NjNhNy0xYjdkLTQ5ZWMtODE5Yy1jZDFhZGM4ZTFlZGEiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj5odHRwOi8vZWlkYXMuZXVyb3BhLmV1L0xvQS9sb3c8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJVc2VybmFtZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5hZm10NzBAd2ViLmRlPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkFzc3VyYW5jZUxldmVsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkxvdzwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJUaXRsZSIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ieHM6c3RyaW5nIj5IZXJyPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkdpdmVuTmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+RGF0YXBvcnQ8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iRmFtaWx5TmFtZXMiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+U0gtVXNlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJFbWFpbEFkZHJlc3MiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOnR5cGU9InhzOnN0cmluZyI+YWZtdDcwQHdlYi5kZTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJQcmluY2lwYWxUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPkNpdGl6ZW48L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iQ2l0aXplblByb2ZpbGVUeXBlIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTp0eXBlPSJ4czpzdHJpbmciPlN0YW5kYXJkPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPg==</content> + <contentType>text/xml</contentType> + <id>saml-assertion</id> + <name>SAML-Assertion.xml</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDc1MC9EZXNjZW50IC0yNTAvQ2FwSGVpZ2h0IDc1MC9BdmdXaWR0aCA1MjEvTWF4V2lkdGggMTc0My9Gb250V2VpZ2h0IDQwMC9YSGVpZ2h0IDI1MC9TdGVtViA1Mi9Gb250QkJveFsgLTUwMyAtMjUwIDEyNDAgNzUwXSAvRm9udEZpbGUyIDE4IDAgUj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5cGUvRXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0vTm9ybWFsL0NBIDE+Pg0KZW5kb2JqDQo5IDAgb2JqDQo8PC9BdXRob3Io/v8ARgByAOQAZAByAGkAYwBoACwAIABNAGEAcgBrAHUAcykgL0NyZWF0b3Io/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwByAGQAIAAyADAAMQAzKSAvQ3JlYXRpb25EYXRlKEQ6MjAyMTA0MDgwODQyNTMrMDInMDAnKSAvTW9kRGF0ZShEOjIwMjEwNDA4MDg0MjUzKzAyJzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAMgAwADEAMykgPj4NCmVuZG9iag0KMTYgMCBvYmoNCjw8L1R5cGUvT2JqU3RtL04gNi9GaXJzdCAzOS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI4ND4+DQpzdHJlYW0NCnicbVHBioMwEL0X+g/zB2Oswi6UwrJt2aVURIU9lB5SndVQTUoaof37TdRiDgshmTfz3stkwiIIgK0gZsBsENjDrvcQWAhR+AYshsjW1mtMHS2ADHNMsXjeCHOj+9LsWurwcILgDJjWMHA2m+VilAQvCdfmPxVz92dnmBQeo9BEmVIGM9XSkd9cY87LOpEcqq5Hl3E2q9HGqyb0MAd6Apus99ZLKkOYuG0nqxkUlnpRD8ypNPhFvCI9xk7zir9lKyTlDXcdusSHtA7cCCUnrI345TYY0I/S14tSV9yqsu9sT0Pm3hCZcRhHXmrl4c/G7h7eCt6q2kvkrajI4473WFqteYd7UfeaprcmfXc/uY+N5+nOs14u/gBN0Ju/DQplbmRzdHJlYW0NCmVuZG9iag0KMTcgMCBvYmoNClsgMjI2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA0OTggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAzOTEgMzM1XSANCmVuZG9iag0KMTggMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTc4ODI1L0xlbmd0aDEgNTQyMDA4Pj4NCnN0cmVhbQ0KeJzsfQd4lFXa9jnvOy2ZTGYmyaRNwswwJJRJCBBKQsuQBqFDGEyoCSkEDRBCR8AICBrFslYUFV2F3cUyGVCDFV0say+sunZc145tLYBA/vu8z5wQ+NW9vv2/b939/nmSe+77PKe8p79PLpILxhljifjQsari8rLR/T6y1jJTz02Mpe8tKSyetuvC+YWM972NMeWOksLxRXuTJwcYz8pCetXo4pLSA0+/9h7TzR3DmOH90ZMnlW+Y1hrDdPVZTH10+ujyQOFXruhBjPc/yNTs5knlOQNufLT6Hsb4x3hqVc3C6qbj1w3Zztg536K9IzUrlrn3Nb0+iLFbdIzpH6xvmr9w/TvqEMYWfc6YxTe/emkT68a8eH4a6tvmN66unxxX8CFjO/cz1q1PQ1117ZEJq4NovxH5gxvgsNyZdhhp9J/1aFi4bFXNU9FIK+jvgjvOqWteZF5v7s3Yj8XIL2xcXFP9Rd6HLzF2AM8bPH1h9aqmvtEZ0Pwp5LsX1i2rvn7DjhUYz2SkNy2qXlh307Hv5qL+hYz1W9q0eOmyDifbzLjvuCjf1FzXFD+/ewpja5Px+M+YmGvD0EMn3vzy7rnW4d+xFBMT9sBna58V/FrZykk/HjvREvW5aTCSUUxhZKhnYCcZPxC948djx3ZEfa611MVS7hAeZx92JbOx4dAKOIdtYSxusPZczlSdj1/O9Myk36bPRZPdiNUX2WaFmZhi1SuKolMV3Qesb8d+1uNcrQewCeVuN/MzlvEs9cF4k5LpZrxD5Kn36WPFSFmCLvZUb/gL7P97M7zG7vi1+/C/xXR17JauabXl9PS/mxkM/zP9Uw+fMQ+TWNlPlqtkaf8Tz/93MN1AVtU1rf7IZv9KXYnY/4MpT7NtXdOqh035qXL6u073K3cxzz/7TH38P1/31zLlb2yM0s5G/1fr8e9Zo9KPFfK/Il6KWMQiFrGI/eqm3MCjfzavih3+V/blP8XUQeziX7sPEYtYxCIWsX/edI+y+n/5MxeyS//Vz4xYxCIWsYhFLGIRi1jEIhaxiP3vtcjPmRGLWMQiFrGIRSxiEYtYxCIWsYhFLGL/3sa3/eMyEYtYxCIWsYhFLGIRi1jEIhaxiEUsYhGLWMQiFrGIRSxiEYtYxCIWsYhFLGIRi1jEIhaxiEUsYhGLWMQiFrGIRSxiEftXWMf9v3YPIhaxX9nUMNLC/5PUVUhBKS1Mx1Yhnchs8BigLKw7m8Dq2DK2Iz3fHZXxbIf2Pz/B74a/ljV38fOO73C+fhDZHTWfbTnc890R4fbjgAS02qUH6lj1Wp7Ku/FL+OX8embgn2v+r8/8v620/82K/icshf2y8VMt/3PT8g+s+L9SWIztZ/NozP85pv63tvYr7TH/jM0XLFvavKRp8aKFjeecvaBhfn1d7by5c2bPmjmjsiIwrXzqlMmTJk4YP25s2ZjRpSXFRYWj/AUjRwwfNjQ/b8jgQTl9s7N6ZWb08HZ3JSfYbVaLOTrKZDTodarCWVaJt7TKHcysCuoyvWPGZIu0txqO6i6OqqAbrtLTywTdVVox9+kl/ShZf0ZJP5X0d5bkNvdwNjw7y13idQefK/a62/mMKRXQW4u9le7gYU1P0LQuU0tYkPB4UMNdktxQ7A7yKndJsHRFQ2tJVTHaazNHF3mL6qKzs1hbtBnSDBXs5W1q471Gck0ovUqGtinMZBGPDaoZJdW1wclTKkqKnR5PpeZjRVpbQUNR0Ki15V4g+swudrdl7W+9pN3G5lX5Ymq9tdWzKoJqNSq1qiWtrVuCdl+wt7c42HvNB8kYcl0wy1tcEvR50di4qZ0P4EF9hs3rbv2OofPew5+f7qkOewwZtu+YkGKIndOEfKkZ+oYeYnwej+jLxe1+Ng+JYMuUCkq72TxniPlzfJVBpUrk7Jc5joDIaZE5ndWrvB6xVCVV4e8VDcnBlnnu7CzMvvadgW/ku4NqZtW8mgbB1XWt3uJimrdpFUF/MYS/OjzWkrZ+OShfXYVBLBDTMKUimONtCiZ4C6kAHG6xBgvKK7Qq4WrBhKIgq6oJ1wrmlBSLfrlLWquKqYOiLe+Uin0st+O9toFu555cNpBVin4EE4uwKJklrRW19UFXlbMW+7PeXeH0BP2VmL5Kb0VdpVglry3Y+z08zqM9UauFsZ1RWhYWIzdmmNwVilOtFKsFh7sUH97C4ciwYbm0pFjRwuHuCu5kshieEi4h1GntIKFmFI0RWaqoWjTG6an0kP1Cl5zhPukzgqYubdng6OwTPednu0alRYd6u0vqirt08LRG9eEOhlv76X4qYi7CD0YNk1jOMTJLzcDJhU9BM5pLrGKyO8gmuyu8dd5KL/aQf3KFGJuYa219x5V7x02ZUaGtdniXTDstRfl5lAoyD7JlQinCHiz1OeWyaunRWrozOeaM7DKZ7RX9am2tbWNqhtjKzjauCX3RxZXBSb5Kb3Cez+sR/czOajOxGM+0qiKc1VJcd97Saq/b5i5trW7vaJnX2ub3tzaVVDUMxblo9ZbVtnrLK4Y7tc5PrVjnXCOeHcfG8XHTCtGUwgrbvPzCKW1+fmH5jIp9NsbcF06rCClcKaoqrGzrgbyKfW7G/JpXEV7hFAm3SIiWpiJh0so79/kZa9FydZpDS9e0c6b5TNLHWU27Qj4bPShTe5AfcUpNu45y/LK0Dj4T+VqodK9waRNybCLnfqaIGExkkrUxMcH+aL3f5I/yxygWBVMqXCF47kfZKM72xHALd7ahzamau523tEX5nfu0lqaGS7agpPC1dPrQc1GsS0N4Hg08cGoEgRkVe2IY2tc+UaJQGHZhcgP2EN4nJe5asf/WVja0VlWK24MlYq/imwe5dyQLKt6R6LEhJhjtrSsMmr2Fwl8g/AXkNwi/ETufJ3Istrh0W6u8uIhxYiqYk9NZU0WT7vaOjmkVnuechys9OEuzgBkVwSgfXm76jLEoN1qgCu7RwZaaatEPFqgQdY0ZZTWVOJeyQRQpC0ahhahwCyhRqtUR5w2VarDXqr2ahBtXR0tlsNInHlqxoFI7r7YgG+MdGjRkUpv6TPGgnMrWOO8A7fLBWY/O2CIoCn1j5RXkcSKJh1XSJBlj0PMaL7Jqqty0R8pxlullEe0kTx3ufF1mnYZoZziTiWGpGWZLdDCqLxrEt9DmvuLO0WcYKyup81pqS7gAnm0LmtGjzC5TGa6A2UFWmegLvregq6Loo6KZKe1sqncVrk7Raa0lI7KDloyyarzdqL4ZHm+erGwSl6A53MYB8hrFyGMw77gS2jt2eVd7uhjuDvH2E/uPOffhoLLK1jMdwZm+7CzTmV6L5m5tNVl+ugLNl8nSyZpTyagRbwWw2HDafnOXiFeld2ybMtGnMde4dawXbxAlQwCBjorj43HXVopS6PJk7S772UK8SyHxmtYab7UNkykeTtFitgbnn55s6EyWCiAYzOhLMQSGIu5a7JWzncFG7ExZRKyIu9Vt8w71ig+t8miBKixS57HA9seuE4empcZdMQ+bHQ2WVrWWtooQtaY6PG3hJwUX+U5rEueCY/OgITGcYMtkd1WluwqhKZ9S4fE4cRrB7nrEqd5q8SqYTOOZPEMLVapbxRZniFQqnUEjXkz11XVeD94gQXED0eyLPurCx4Y5W1u9rUHt3JaiMJrPxLErE4TvJp+3uk6E0PUigq7T6paiu9rsiNacJV6c5Tq4tbnExOHqmyc+alpFgD67yoeZsLfGtbrzW3EFz8bbQ5dZM70KryrxRnJrS13tRAqTUCZSlWiICkZliIJ0BERvFvraZhszTnm078U+KmzSWkXPplYEJ8si2nkSYokvqCTlIVMMnk+dUSHvKVVkl2F6/dhVTlHbHVSmVYSXR6tfJqo65YJRNXi0d0j4fHW+beR7aJYTc/qzfrwc1FHlylPKEyyPuZQnw/w2y1PeYAHlL+DXwK+H+VXwn8EHwa+AXwa/BH4E/DD4IfCDLMB0yptsIDANUDtVLXAbcBDQs3PQEmdm1OcsQXmMFQO1wDLgKkCPsg8j7za0yJlb2bQ3KpmPxYJulGKDFOdL0SLFeVKsl2KdFGulOFeKNVKslmKVFCulWCHFcimWSbFUiiVSNEmxWIpFUiyUolGKc6Q4W4oFUjRIMV+KeinqpKiVokaKeVJUS1ElxVwp5kgxW4pZUsyUYoYUlVJUSHGWFNOlCEgxTYpyKaZKMUWKyVJMkmKiFBOkGC/FOCnGSlEmxRgpRktRKkWJFMVSFElRKMUoKfxSFEgxUooRUgyXYpgUQ6XIlyJPiiFSDJZikBQDpciVYoAU/aXoJ0WOFH2lyJYiSwqfFH2k6C1FLyl6SpEpRYYUPaTwStFdCo8UbilcUnSTIl2KNCmcUqRKkSJFshRJUiRK4ZAiQYp4KeKksEthk8IqRawUFilipDBLES1FlBQmKYxSGKTQS6GTQpVCkYJLwcKCd0hxUooTUhyX4kcpjklxVIojUvwgxfdSfCfFt1L8XYpvpPhaiq+k+FKKL6Q4LMXnUnwmxadSfCLFx1J8JMWHUvxNig+k+KsU70txSIr3pHhXinekeFuKt6R4U4o3pPiLFK9L8ZoUr0rxZykOSvGKFC9L8ZIUL0rxghTPS/GcFM9K8YwUT0vxJymekuJJKZ6Q4nEpDkjxRykek+JRKfZL8YgUD0vxkBQPSvGAFPdLsU+Kdinuk+JeKe6RYq8Ue6QISdEmRVCKu6W4S4o7pbhDit1S/EGK30vxOyl2SbFTituluE2K30pxqxS3SLFDipuluEmKG6XYLsUNUlwvxTYprpPiWimukeJqKa6S4kopfiPFFVJcLsVlUlwqxVYpLpHiYilapbhIigul2CLFZikukEKGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPVyGPbxZChn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn/cBn2cBn2cBn2cBntcBntcBntcBntcBntcBntcBntcBntcBnt8KI9QrQrm0LdRroQM4e6OUAbKHV+qNtQUAulziNaH+oWA1pHqbVE5xKtIVodSh8FWhVKLwKtJFpBtJzyllFqKVEzOZeE0gtBTUSLiRZRkYVEjUTnhNJKQGcTLSBqIJpPVB9KKwbVUaqWqIZoHlE1URXRXKI5VG82pWYRzSSaQVRJVEF0FtF0ogDRNKJyoqlEU4gmE00imkg0gWg80TiisSFnGaiMaEzIORY0mqg05BwHKgk5x4OKiYqICilvFNXzExVQvZFEI4iGU8lhREOpej5RHtEQosFEg6ixgUS51MoAov5E/aixHKK+VC+bKIvIR9SHqDdRL6Ke1HQmUQa12YPIS9SdmvYQuamei6gbUTpRGpGTKDWUOhGUQpQcSp0ESiJKJKeDKIGc8URxRHbKsxFZyRlLZCGKoTwzUTRRFOWZiIxEhlDKZJA+lDIFpCNSyalQihMxjXgH0UmtCD9BqeNEPxIdo7yjlDpC9APR90TfhZKngb4NJZeD/k6pb4i+JvqK8r6k1BdEh4k+p7zPiD4l5ydEHxN9RPQhFfkbpT6g1F8p9T7RIaL3KO9donfI+TbRW0RvEr1BRf5CqdeJXgslnQV6NZQ0HfRnooPkfIXoZaKXiF6kIi8QPU/O54ieJXqG6Gkq8ieip8j5JNETRI8THSD6I5V8jFKPEu0neoTyHiZ6iJwPEj1AdD/RPqJ2Knkfpe4luodoL9GeUGIBKBRKnAlqIwoS3U10F9GdRHcQ7Sb6QygR9zX/PbXyO6JdlLeT6Hai24h+S3Qr0S1EO4hupsZuolZuJNpOeTcQXU+0jeg6qnAtpa4huproKsq7klr5DdEVlHc50WVElxJtJbqESl5MqVaii4guJNpCtDnkqAZdEHLMA20i2hhy1IM2EJ0fcgRALSEHLmN+XsgxGLSeaB1VX0v1ziVaE3LUglZT9VVEK4lWEC0nWka0lJpupupLiJpCjhrQYmpsEZVcSNRIdA7R2UQLqF4D0XzqWT1VryOqpZI1RPOIqomqiOYSzaFBz6aezSKaSYOeQU1X0oMqiM6i7k6nBwWolWlE5URTiaaEEvygyaEE8YRJoQSxvSeGEjaCJoQSskHjqcg4orGhBMQFvIxSY4hGk7M0lLAeVBJK2AIqDiWcByoKJbSACkNxpaBRRH6iAqKRoTi83/kISg0P2StBw4iGhuxia+QT5YXso0FDQvYK0OCQfQZoEOUNJMoN2bNAA6hk/5BdDKxfyC7OZg5RX6qeTU/IIvJRY32IelNjvYh6EmUSZYTsYpZ6EHmpze7Upocac1MrLqJuVC+dKI3ISZRKlBKyzQYlh2xzQEkh21xQIpGDKIEoniiOKtipgo2cVqJYIgtRDJU0U8lockYRmYiMRAYqqaeSOnKqRAoRJ2L+Dus8l8BJa43rhLXWdRz6R+AYcBS+I/D9AHwPfAd8C//fgW+Q9zXSXwFfAl8Ah+H/HPgMeZ8i/QnwMfAR8GHsfNffYhtcHwB/Bd4HDsH3Hvhd4B3gbaTfAr8JvAH8BXjdco7rNUt/16vgP1saXQctma5XgJehX7L4XC8CLwDPI/85+J61LHQ9A/009J+gn7Kc7XrSssD1hKXB9bhlvusA6v4R7T0GPAr4O/bj8xHgYeChmCWuB2OaXQ/ELHXdH7PMtQ9oB+6D/17gHuTtRd4e+EJAGxAE7javdt1lXuO607zWdYd5nWu3eb3rD8Dvgd8Bu4CdwO3mbNdt4N8Ct6LOLeAd5nNcN0PfBH0jsB36BrR1Pdrahraug+9a4BrgauAq4ErgN6h3Bdq7PHqi67LoSa5Lo+e7tkbf7rokepfrAjXDtUnNc23kea4NgZbA+btbAucF1gXW714XMK/j5nXOdePWnbtu97o31/njDNFrA2sC5+5eE1gdWBlYtXtl4H5lM6tXLvAPD6zYvTygW56wfNly9dvlfPdyXryc91vOFbbctty9XI1ZFmgOLN3dHGDNk5tbmoPNumHB5veaFdbMo9s79u9pdnYrBfvXNltspUsCiwNNuxcHFtUvDJyNDi7Imx9o2D0/UJ9XG6jbXRuoyZsXqM6rCszNmx2Ys3t2YFbejMDM3TMClXkVgbNQfnretEBg97RAed6UwNTdUwKT8iYGJsI/IW9cYPzucYGxeWMCZbvHBEbnlQZKMHiWZktzp6k20YGJaegJc/LCfk6/8z3nV04dcwad+51qnDXVlar0tqbwokkpfHHKeSmXpajW5BeSFX9y76xSa9ILSe8mfZmki/cn9e5byhJtie5E1SHGljhhWqnGBcXE/QdpY3UlejNLrQ5udbgcSsmXDr6ZqdzNOeM2kGpCmb3c4SpVH+Li1+n0jPPL2TTfuHYTmzouaJo8M8gvDGaUi0//lBlBw4VBFpgxs6KN80srtd9JCCaIXyrR0hds3crSC8cF08srQuqOHemFleOCLUL7/ZruEJqhSKVvztLlS30V/hHM/p79K7vqeMT2gk2xWrnV2mFV/FZ03hrrilXER0es6o/tP6TUanFZFPHRYVET/RZ4xPh6xkyeVmo1u8xKoMA8yaz4zQVFpX5zdr/S/2uce8Q46cm+ZXPwMWfpMp/2jVQlXy6SPuEV30uXIS2+lmtp5vtFo2KguUthy6Rz2S/X+nc3/mt34D/f6Dd5RnUom1itshHYAJwPtADnAeuBdcBa4FxgDbAaWAWsBFYAy4FlwFJgCdAELAYWAQuBRuAc4GxgAdAAzAfqgTqgFqgB5gHVQBUwF5gDzAZmATOBGUAlUAGcBUwHAsA0oByYCkwBJgOTgInABGA8MA4YC5QBY4DRQClQAhQDRUAhMArwAwXASGAEMBwYBgwF8oE8YAgwGBgEDARygQFAf6AfkAP0BbKBLMAH9AF6A72AnkAmkAH0ALxAd8ADuAEX0A1IB9IAJ5AKpADJQBKQCDiABCAeiAPsgA2wArGABYgBzEA0EAWYACNgAPSAblQHPlVAATjAWC2Hj58ETgDHgR+BY8BR4AjwA/A98B3wLfB34Bvga+Ar4EvgC+Aw8DnwGfAp8AnwMfAR8CHwN+AD4K/A+8Ah4D3gXeAd4G3gLeBN4A3gL8DrwGvAq8CfgYPAK8DLwEvAi8ALwPPAc8CzwDPA08CfgKeAJ4EngMeBA8AfgceAR4H9wCPAw8BDwIPAA8D9wD6gHbgPuBe4B9gL7AFCQBsQBO4G7gLuBO4AdgN/AH4P/A7YBewEbgduA34L3ArcAuwAbgZuAm4EtgM3ANcD24DrgGuBa4CrgauAK4HfAFcAlwOXAZcCW4FLgIuBVuAi4EJgC7AZuIDVjmrhOP8c55/j/HOcf47zz3H+Oc4/x/nnOP8c55/j/HOcf47zz3H+Oc4/x/nnOP8c5583A7gDOO4AjjuA4w7guAM47gCOO4DjDuC4AzjuAI47gOMO4LgDOO4AjjuA4w7guAM47gCOO4DjDuC4AzjuAI47gOMO4LgDOO4AjjuA4w7guAM47gCOO4DjDuA4/xznn+P8c5x9jrPPcfY5zj7H2ec4+xxnn+Psc5x9jrP/a9/D/+FW+Wt34D/c2NKlXQIzYclz5zDGjDcxdvLK0/5GZTI7my1lLfjazLayK9kj7E02j22E2sZ2sJ3s9yzIHmV/Yq/9N/w9TKedXK1fyGLU+5iBxTPWcazj8MmdQLs+tovnSqTide5Tng5bxxdn+L44eWWH7WS7IY5Fa3Utysvw/p2f6DiGVy7SHYNFWtkCbdVqfG286eTdJ3edMQdT2Aw2k81is1kVq8b4a1kDW4CZOYc1soVskZZahLz5+KxHai5K4XrR9KlSi1kT0MyWseVsBb6aoJeGUyJviZZezlbiaxVbzdawc9lati78uVLzrEXOGi29CljPzsPKnM82aEoyeTayTewCrNoWdiG76BdTF3WqVnYxuwTrfCm77Gf11tNSl+PrCvYb7Ier2NXsGnYd9sUNbPsZ3ms1//XsJnYz9ozIuxqemzUlch9kT7B72F3sbnavNpc1mDWaETkv9docNmEO1mKEG7v0mOZvZedsrcfYxdhawyNdBf+GLjVWhOdRlNyIktQKrYNoZd0ZM3E5xkD61IgodbU2/lPerrPyS145H9u7zMwNWkqoM70/p69hN+IE3oJPMatC3QpN6mZNd/Xf1Fl2h5b+LbuN3Y612KUpyeTZCb2L/Q5n+w9sN7sDX6d0V0V8F7tTW7kga2MhtoftxUrey+5j7Zr/l/J+yr8n7A91evax+9kD2CEPs/24aR7Dl/Q8BN8jYe8BzUfpx9gfkRalKPUEexI31NPsGfYse4E9jtTz2udTSL3IXmavsNe4Beol9gk+T7AX9R+wWDYKP/7fj3nezuawOf+dt9uZpk9lDraj40jHyo4j6hhWz6chgLwDq7SXXYKf2BedKsldLFr3Pktgezu+V2eBe514Q99w8taOL5ket+ZS9WXcciozsnw2gU1k1wYv8FU8yCyIUhLZUH7PPY7iYlO28WFEIApzI4YxMc6L/FadYrkvNbXAe98gw1bVXtbOs/cWGLciOi848c6J53NOvHM4Lj/nMM95+9A7h2xfP2/Pz8k9dPBQ/35Of0Kq5b5GVB3kva9xkGrY2qjaC0R9f1RjgV8xbm1EI8kFvtTnfc/n+J73oRlfv/6V3O6xa0iIVYzGBIO3e19lUM/Mwbm5A0YqgwZmervHKppv4OAhI9XcAd0UNUF6RioizdWXj89QJ50wKOu9BdNz9d1SrQkWg15JS47LHp5hK5+ZMbxvulE1GlS9ydhrSGH3cY0l3d8w2tMdielxJlNceqIj3W488aY+9tg3+tgfi3SNP16lGobNKuihXhdtUnQGQ3u35JQ+wzxl063xNp053mZPNBnj7DG9imed2OxIE22kORzU1okJjLM7Oo4ZfJj94exVMet+W9XIppGKpV+/pJyc6L7JyantHR/vsfEJ4K/2WMNs0fj7PTEaf7zHLFix+7v16B8TE52M4tE2q/hAweholIpORpHo+/FjF+vY709BgvUYPMWcnGTJSe7f1+DqNcUViAvoA6wAFpeUb88t4DkHfYe0d/wAe66tU9nzR+Tk5tpz+/ebjWX8yTaSTzWCRcuQS2D38lhVqJ7ca+90DhSr101J4rkcSyakw+AzJbhSkjzxJuVkrmp2pCc4uiWYlZOjuSnBnZLsjjdmORvc/XokR/GVer7ZnOrKTFlodcbHpJpijHq9Mcakm//jVcZoo6ozRhuwRNs6/Tv79IhJ7eU8fpa6s1ufFHNUfLoDW/oWxtTjePvHMRcbSXs/Hj9BM5aqJPijopKPxtY6j+rns4LDBdjN4S0cE5t8tDG2Vu882ogsbNYCbYuKgXm7Z2oD82A0xoF94bCLHaoeL2t9auuPCT16JHB766Mbi4O9Alsar7i8fnNlluK65NnNo9I96m2e9JJNj6yfesn8oce/6F93rfirbNG/WPQvi1WI3rWl9mxHxxKi3PHueBaV+kNmpiHliKW25xED9ZFO3XP5+Tk5tkMDRGfjM1N/aEQxS8qRRkutoeeRRkO4z+Gjpa2Sp0u/HZrDfoZEN4xmw4mPxBiUOKPZqEPaeLKKzzeaTapqgt7GdxngL45LtRtpPEabMy4uxWo6+azRlhpvT7EZT95utKVoI+s4pq/DyPLY2WJke7Mc2T2T23mHP6q7JSc6O7v7wGiRsrPug2qzE81qemZteoOtQd8gN6rYpocGxGFTxuXnY7D2/HwxXuuZxeWePHNHGgz/cEcmOvR1xnh3Uoo7zqicvFjn7YVzHKWe3KYY49wpKa44Y2ZyoyvLg+3YW8cHxKR4eqfVp/RIkrOjrjy+KSZGNUQZ1LXHL+r0PtndLbbiiYHKU936pJrd3cXf52M+1O2Yj1zmZ7ViRvaxaMWxt7/NZx8ofvkkc5hdLL01zWf/cNiwpPzv3bVJ4dnQVj0f23PAwUOYi1e1TRrnG2b/sBEl3fnfN4bLiqnQlj2/y1z07NlX9Z4+CXLpjd3UpKTERLXLRt5ucmSkOT2OaHW6tUe/UQPnawfTk2DCzk6tumBmv/RB4/s7szM8tspo4+eOfuP8V186cuKAlHgjJkGNijV/06c4J/XkpM7JeMaTnlk6f9TA6SUDbGZPP3+vT1JTlHe8w30pJ+9KyRF/K1jW8YVyXDeAjWObaF4Klbh7MgdmDoxNF79rw2L7tXOLPyp/5NH0Ir2vHtvGfq87vl+8Eo/9ZGnTL8BL6eDswwWYmhMHD4tdEyfOh5iltnytrqUx3zfyaKNWPV7U39MYrxeVQ42ojcNywCdqg+Q5797XIF8s9AbqTBsc4ZkUryRHQjeDcnxY/aXluXPHD7IZ9YqC02LOLq0enj1+iMtXOmP2jNF9Bs5aO6bP1KL+sVp+lDGq94ipuT39WclZo2fMmTE6i/ccu2xSVpwzzWa2OWwJ6QlR6d70xN7DMnuPyMnok1tSPcq/YGxvW2KK1WxPtsWn2k2p6amOjNx038i+PXsNKJ4jzlsa9tdI7C83G6rdJEyH7bQn0aqztfPYPc7aaLGVDg/gOQe+fhwzE9I5RcbeRi0HG8c3QBu7AddB51bxyPerdkGMtMaePBQV50lJdSWYTh6S14LysVhr9c0Mz/ENnau+3mTHzeC0G412p9j9VR2H1e34CS4TcciD2tvQVTCMm5354j2WL95j+Tab+MC7LV+80fIf4EdxTed0vCdeiTnhV2VO+FWpcUzYbxasRPuj4z2l5vyeTl1sH/GPqcljB7Zz3Z7YCfrxYuQ4RdqdQq+7g+G3Xr72souWFZNFzb2NyWNjRd29jVplMTk4VmfcMIPofqFdkZhkD+8Wh5qZGd4Z2s4Zom432tMSRHwwetvMmkvO6jVg3hVzJ230GxNcybh3onYWrSsuqBiS4hg4fZRnhL+0ZwpeaZjEGNPKCdMnbGybt+yBTaNLihSz0SLedBbjiZLys4bPW+sv3lA3Iq5PUX/M7mzM7jb1aeZjA9mn2uz2yRlcMHjxYDXejdmLd2PK4uM9WTZMWZaY3Swx7Vk2q42Pz2rnR+8p9t3mU3yY1HtQ0jdQ107TDv5CTLOWNmv88V5RSSfm2+PJerJFd7lO2a/jL+q4TpeW81bm2ORPq2KbYpXYqE/TJoQPpri/Zi9pPhye/AFv+2ZrQtxUPm0BuuuynmxcobWRmfNWY+bY2ORPG1msLVaxqrFpUZ82oi1xTOfOmU0vttk+uVvD85xLV5qha0jo6DlYWwujuq1nyolQt9KmKf7aspwYvOdURTWaB09f4l+8q3no8CU7as6+uip7p7p65YhZI7sritLTM27V9L6OVIcxNiXOEm+NMackx49c075m2b7zS4qX3lARv+GqvuPrhoiTt63jmLILs5/LNmtvuqZBPNMajuGs4Q0K/kqbOWs4yLO28yP+OOaPR7zmt+NDLBRLxeWU4Y/yjc20OtxlDrFxcS+J0OQA5kubNG3Htvm0gtGNp0omU9EuN5h2Qxm7XPzhWXFoAbRB2aUYokympPQejpR+/4e9M4Fvq7oS/n3S074vluT9Od6XyPIax0kTy4siJ96QHSehIViWZFuJLCmSHCchpAYCBEhpki9Am3Zoysfw0Q0opXwMQ6lbUtoyhELLMJkW2pRSmra4k2Eow8eUZM4970mWneULmXZ+LSPd5q/73jt3O+fcc++VatHUWiw38jswqTHPasnXy0qdrcvzNUUl+WpWzIhHLQUGhUIhN9t7ln3wiFwlZ1mAeJ9cpYCwr5Lf1NxZrhPLlUqFNhd0ctW5OdELoJNuRo/+qK5dt3pd/7pPrHt4ncQpqMAp6MgpTGon/QbSJFzrhXcVfWdebSssqS+pV+dSv82l4SKXhotcvYoCyuY+ybyLG2AlXBB1G9xX0y8/y6C+1eqH1SK1/bVlyt8ZBgwjhqhBvMywzGBZ+VNnrqRyreW0pJfurUB7cwa6cFyjn9ODxq+BKCFsk/n1hP9YDP21dJn9tZBB+bsQMegNnEGs5WusXPnTENYpsZwOSdBlcV3BaqnvplmHvez15YWGLTf2OTZ0OSxKFvZfqurVwy1VnfW55W0D669qK6/0XOcpcbdWZsnEYjHsihVLmrtrq9oqsyraPOsH28oZbVcIvMSabS4pNOXoZblcrrG4ubSssaJwSfWq4ZVN3u4atTFLr9ZZ9HQHZ8m2mIodeeVNFdySqpVDhLemZFISIYfJv1Frfou0MK+SANkMOneSKHPqsZJK03U3QyBpa9Vl6yadAadJpzM5A2zvDaT3Onfh3JSrZfNW17rfeQY8I56oR2z32D0bGn5QtnXthtOu3pt1c9nu2yDgfk2BlpirBzSkjGHAKUC3g8chCNfCy7icnlvq9T97+Rd6SHQ71Hide6pwLsQ35FkHlvHoPZwHLINtbW34QQhac204HYL2snVzoWy3gjb5aEjB26m6HtAwbypstVoI+VJhUwm7aGqlhqbGlH1Ei+2VdUn7WqxlZan4lMVHLSndnlmSUUwyKYLoX1hRa1njbyu4TmeUyDXy3dn29sqKDkdOcb5cTLcQS5rWphv50i6ydGDbquxqo8Xq2HzTkGfPUNWbco2CNep+3ey2lOaZZVK5lP24wWJQqXQKaem6eJ9Iy5XAPkO2duWGZbl5da7KtrV5XMEFvKP10r7V6u0qk0pt7rL2yFV2+/AN67fIDDmmEu6s8pprFUqFRGsD7yo69y+iSfarpJXchvGzkhiKlwoxYakQK5YKsWKpsBFYKsTVpTSMqq2apXPF7nzNnNVdR91IxrvRCRo4G4SV/sRxPC5B1XMhkLW2WTVzIatbVodOIBOcIEd/YrVwaGLPs/mlrCaalOu5SrvV5W/L38vb7Ho4WtAlXv5ruRq1vWyNtSTPLJcoJOzH85fotQt1/YoMpFiFGjIX1BH7EnsSJt0DVEeP1jq19P/VXN23kc66Qk27Jg8SaaoeIn1up3vFCs7tcIvcG7XVc01uIx1iae/mNNXAHKs/fs3y2tUwrY7XNmCA4+fUL+prqZ6y+WqIW+8WqcTupo3apuq5UJO71Igbo9Je2eYFioP5U6+n6zOtc4ECi9K0lHWhqZRUa1FqhTJcSMPsS3JDQSWdFasLzjrTdAlLua6g4sKqZ74lhxwsa/I30QjaXzevAZfPApenRijSa5WCEebVbTSYDRqN5mLWYZjkZw5nz51nKRFxi74r2i01kBLSRK5GWymym/6e2Qib2aXMbW16Q+FktkJc8Yhle/1n1QlxXNibLse9KRx48ZBrQiFLxSMhy3Z1/WdDKCjsQ5fjPpQRPiO7rG1o8zLR7uwig0UnrfWubP/48hzOee3qOk+FTJdjNufopfsr1lSUNBbq1AX1ZSXddtEbag0Lh1pnbV1tf3ClK95fXVbG2CVyVixm5ZKzg3Y719hRXOJqKqpuorv7NTDmsCSXlBI72YOnDztL/0Qr12DILXuC2dBmJbmmI1qtwn6Io5s8W+VhbrviLlsi+ZnG9tTHifAufLBRqDUdCUEZ1n4oRFgmVwzluMrDIW67TXFXCMomP+Sg0Tr5MeKCHaElC52w7Lz9oCicYzp7yFjZXle2ur5IqZRrl1TXLePuuqt87bZOF/jXrWxXZ3FjiUnEkpzs8o9VWVQ6tSknL1urVkgO3+Xa3ldV4drSbHCts1Y0FtAVMiT6B+Yl0MBS4qLj//qSHKKjA1fnKI+Xb1+iyyqIZsXnd3P/etyIdtaUK4+H5p9fxh6umQ6L38GxzEuwUkjkKl2WQZfHFVsket6c2cXFVltVWbFJW2SRgb5/ZLDB0VMqUdkq8s8+CIZlqXVFNjW81hRWWOWsXKq1wijaRd9l5mAUq8l+/iS+nBn6BlfD1aizn2DWt+UTddWhU3Vn6kR1zYezl0tKtysPzRpeNIgMlsOSRPop/JqFx/C20rqqQyGuzgElS5sPh7CsQXkIt0/gqwaJ5XBIkpjf4uNh/JoL75aaYTFNXrLziy+su6CRuZLVm5q4FfZCtVQskbHK/Irm0qWrqlZ1r67kll9VX9BQnqOSwBOJ1FJSW1hfXb167eoq8XR1+1KbSqdTW7M0JrVEb9QtKc8rslor2prKV1ZbFGqNEp4Y1BKNXlOZU1Bss5SuolYvBn09LPkCqSfDaHVSXFhOra436VSFkfJ7slX3mCLVn5Hxfn6C7mFOwPH7H49TnWQVRkzl94SyTW0m1T0hU0RW/ZmQLJFahqr5Wc47MB8umxcuQpb5CNmMn4A/LFVaCop0I0N9KpVK3SsVZvcdcKW6g6vKKZOyUolIrLfYVLDgb97ClNny82zXSyAUsoDrbXn5trO/r6vXsSojETHKc+8yr0q2kCxSSUrp+L4hKc3t1bvAjV97AUbwuKS0Da/BbXNeeyHNaZvEZUI3TYs/pf+mjH5KnmeUGRh5VnFebnGWXKvIrigsrLQpFLbKwsKKbAUzJVfT84VaLn5SbVRLpGqD+j+WF1XnqlS51UVFS7NVquylNO7MnZtjHmavxR628J/uWkR+wpEs0fLHVfoq6G+QQGf1x5Of7T5Ob7bl0g99cuj9tE6Xixsv1um7ZLrcLEuuXsoYpKaSvNwlJplCYSnJzyuzKhTWsrz8EouCaaIfS8MGXCY6p9YrJRIIGX/k8sttKpWtPD+/IlupzK6APt8hHhMdlUylazW3bI1+DWj1RD1qNbcNr6lWT9Qv0KrQH9miO5Ys0U1SvdVotOmkVqW5yGorMiuYs7cuuOcoE9+SVCvzw2TubN3Ce3o9IXoyRq5mP872ERnRESspJOWkliyDqLCG9JMN5FoyTiJkmnyC6cGzXXhgIjQUatm5Z+WeimiiJsGN+Ev8cnePuoe0dbKdekejuTG0J+Hv6Wxs7OzxJ/aEZHkbN9vy1sZ29O1o373Xtbd+a7g5nHP1loItRs+wZVjUukq6Slll19p37A1vGV5lt68a3hLeu0NWNja6pIzUnqg9YeAPArW4azlRf2kwtITxw5Sg87PlyvrXVkZstTkftoto5uIlTY0N9eXCu0l4twrvyeeyRdeL3xc/l1kWXpcuqj/ZnvhlR2Oj4wjFvzfUNdSV0NzZZfXw+mpDXV2DyEP5QQ69IbopJfvBQ47G+voSpq6xsY75Hn14djPlv1PpIzQnvhvggKuz/9TQUPdzuGDugcwwre06APPN+tqmD9yQu8vhaBRxgtBZGWRO02L/3OhotEPm3Dlyp+iH4p9LTouk8ln65WfymqwgI7jvWJpN/xin2KGkb6S46QnRzd+wW1XiggqaK4gb4pJ4+hcMc/X6OWrtvyNNF5JM/24hNenocZ8PGMWm875aMDWYkl92iX8u02dnmXK1st8wCp1Fp7doFcyrDCPT2+CuTlZgclm5bL30B+Ify4xZ2ca1SpNaIfolLFvwkklEbR88JabxmpWykH8mdf+VnCyowvDB2yKNMUcnlagNmgW/DKymmshFbNrkAC2de1L2KZFD9gciJvKvQQiqbXDUiYuyilyiHR/cLvvDGJb61l9GYm74q0gv8Um06k+cnr38JB4U0rvzie36b03v8Eny9Y9ukn6MT7KS+SQfFNKvLpUUT/65krJR+Y2LJZVN9Yi6MJMy6SOQogvSc385CT9ty6RM+ggnbfCK0/ZMyqRMyqRMyqRMuqz0biZlUiZlUiZlUiZl0kcr6dhMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqRMyqSPQMrKpEz6n5v4HyiFf6uAcuIgYrgsYI6e+wNzgMk59waw4NyvgAfPvcYchPu/YY7CfcqCc78FHj33S6xjqWgJUEyzIj3eEWPNWryieRHRso8IeTEpYZ8W8myajITY2NeFvDTtvozsYN8X8nJSJdkr5BWEk90o5JWiYyl5FRmW3Sfk1aRK9p6Q12il8mQ/tWQtyAh/lcfILRVCniEyq0PIi4jMNiPkxcRmu1XIs2kyEqK2fV7IS9Puy8gK25eFvJxkWWqFvILobW8KeSUzkJJXkWrbu0JeTbKyi4S8RibObhbyWlIKMmLCsAronFESFfK8nvk8r2c+z+uZz7NpMrye+bw07T6vZz7P65nP83rm87ye+TyvZz7P65nPa7Q2brmQ5/X8RcKRevCvOtICuV78tegYiZA4/BsjCbjXgb+yzf/WthfuBCEXJnZ44iQhSBzxwL1xMgHP4ngVgPcASO8A+kFSQ9yQG4U7ATINEv1QWwDqGCK7MMeRHqh5F9Q7hS2GIDeOPeHgXwR/pzqWaoNL9dlBGiBXlrpaRmqwfS/UEAVZDtr1Qju0Dh/ZJsiuhasJuEufTkH/4qnxDOGvZcexBxfrzxjqgSPtcD0KT+hdL2ph4Rj5eiLCSDlsZQqe+nC8Se1OQ9kY3pkCKT9qjYP7E3ivl3RDn6h2glgujHpdgeUDKBEgk9Am1bIfyQk9SspyeD+ONg1CX5LWmx8HfZ6AXgShZBy00IGjCeJIgqlxeOHfJJTge8iPx4ttcIKtg1AjrdULcrSuXXA1DbkE2oH+Dvso5EPYpxjqgo6X/s77uKApvtYEjolvM4wj8mFPw9hKHO3UjVYZgzte/J3xGI6Rw3feFkEcE6+LOHpFHGr1Cv5KLRYV7idbmYR6QqifqNDLMNyZxFb5OuOoqfke0BajOJbk79DzuuX7HkKvoZ4wIXgu7RX9zXX6W/YJvAqjrZN+zeuMb4W3Y1gYVwR1O4qS8z1OHxHV2k4sx496G1zbce6mW7Mca5vEGnahHqaEWZqu76T3hQVPpuPn7RJDb0j6aABtTT03mhoN38dxQSYOV7uF2hMwCt5CO1JW8qKP0BkwuWBcycjjg554sX2f0L4do8s42oo+OT9etZ436mHBc5Ke3wy11EPkuLinJ7BNP3oibWVbygbzM/P8ODku+HU0JU09l7d4GOQD6Dv/PfFWmYm4fzURtwd64iMVOMsqheccWYNeEcGeJSDReNVKaiH5Ube05OR53mMXfK4W8rvQh8bRi6htdsFd+l/b4HWcrJWvM4R9oD0Yw97ycY6v60I+Gkc/j+LYeS0ky1GrbsI2+EizCzXNayaRsnZSOhkXfELsprO8BnVA5aKCV6TH6SjqNSzEB76WgHDtFWJyACNKEEfI924U+5G08mKLJYQSvP/EzrszlhpDzWVFAn5V8KNOE8Lqw89Pvt2aVDuLR8BH0Wnhv9oxcRGdTQsjDeJMC+Gc4mf++bqnZfiVpQLkKxd48IVr5/twpbpNnx/86s4J63MCLedbsE4uHsH8qri4XyvSfICOhB8Lv1tIxspYaufhx7U3jHHEe9GR8r7nXeBVfDyICORHxeencL7w8cmP61hQiC18PVQyhNH/4j7KR/GwYJn52pMzJJi2q5jAeBcU9EyjugbjZUAYQ3KHkdTyQq+uQct4Me8nyf3V4ji3eCZULIoLAYzT07ijCKL1qVW9cI9qaBwkks9qhTqvXRQ7K4XZOx8t5ncDyd58mNXpMlcDLm9RHT3JOrj8lDfT/yoOb6ek1/C7k5Cwisx796VWuKRXXnyVo5YbSM2ceNpehLc37wUBoS0+YocFu9fgmGPC6pPcV/D7onHBzkk/5v0qKux3+BYiuO/24jiTnuIl86v84nj2Z7BFSkNeHDvVW1CI9X5hrvqEvXYY+5q+ZgZxNx5H3xT6eHHbQn5w4ToP1q5M05E/7YSQPh8uuz4yf6pJSl84utUsim5J3S8uHcJTQXDRuJP9mt+Dzc+a+ZUoacMakjyd0VNY8jqQ5iFRPH+F0N8m0lZYvtej2JeAsFJNpWyZHkt4G9YKFo/jLAml+pCc1wt96fK1mr7C86NMX2kW+vS8JqZRj5NXaMfkajCFp0teM4G0HviRtM15vWwFCV/a2pG4RDzmI78fR5Bc8VoXRHF+N7YD8xfadYdxjUiuMunns+Q6caGYsrBUHGMFb6tRYdwXXnO9F7FoLDX6OHppGGvnZ9H5J98r9YDk+uYmXfi0n7jgagOslh680w33OIiiHngyDFedcLcT7pSDxKDwvBwttQHXITfIrcc1jq/DA+yD600Y41yEw2t6tQ7k+6AuWraLbMQ2uqC2QZT0YN29cLcH3rsEOVqiA+6sh2uaX4NRkG+vD0rxZ4huYU3kezoE97nUCBf2qhtbTPasF648UL9beOqEuruxPtp/2r4L832pfrqEnjpRR7RmWmcH9KgHr+jd9fA+AHKD2L4Tx8z3tg/H4ILn/Fi6sAe0ZbswVl6O6mdYeEJtRPvXA2l+VE7UgRt7M6+/DngfgJ7T+tfA0yFcIfqhZCeOdBC11yXojI62B6/mR8VbqgNHQ7VKddAJ+V74tyalOw+S74snrbaFutuAz+el+PE5BXag5vrxirdGB14Noa3o0xrBlh4cx+JWN6AndqGUE0c8mPIQF3ov3/ukd/Jt9Kf1hG+P2ja9L0mv5i4xR/haks/XC5Y+Xy9U607UCe3XYKrli9UMc/OLXL2jroXrDfpikXhkLMF1RGLRSMybCEbCds4ZCnGe4PhEIs55AvFAbEfAb9e4A6OxwDTXHw2Eh3ZFA1yPd1dkKsGFIuNBH+eLRHfFaAmO1uxo4Mro27IazuMNRSc4tzfsi/i2wd21kYkw557yx2k7QxPBOBdKr2csEuPag6OhoM8b4oQWQSYCjXLxyFTMF+Bod6e9sQA3FfYHYlxiIsD1dg9xPUFfIBwPrODigQAXmBwN+P0BPxfi73L+QNwXC0bp8LANfyDhDYbi9g5vKDgaC9I2vNxkBCqEdrzhONQSC45xY97JYGgXNx1MTHDxqdFEKMDFItBuMDwOnQLRRGASSob9oIBYOBCL27nuBDcW8CamYoE4FwvAKIIJaMMXr+Hik17Qq88bhTwtMjkVSgSjUGV4ajIQA8l4IIEVxLloLALWoL2F2kOhyDQ3AcrlgpNRry/BBcNcguoaegZFYIxhaCsyxo0Gx7FivqFEYGcCCge3BeycMMzyODfpDe/ifFNgUr7fVH1hUHLMC2OJBeNUowHvJDcVpc1AjeNwJx7cDeKJCAxoBx2SlwMDTPJtUefxTXhj0LFAzO4JjE+FvLGUX7Umm26l/tA0DCqiJmi21zcsUH0i5vUHJr2xbXQcaNKUZ46DxqP0ti8Cww8HA3F7z5SvwhuvBCtya2KRSGIikYjGW2tr/RFf3D6ZLGmHArWJXdHIeMwbndhV6x0FP6OiIBma8nnjY5EwKByk5huLT0WjoSA4Dn1m5zZFpkBju7gpcKEEdVZ6myrCB6ZNBGo4fzAeBQfmDRqNBeGpD0QC8O4FMwZik8FEAqob3YWjSrojqAr8JhJLZsZoCzXnjx38wD/lS9RQd9wBZWtomWQDYJ/piaBvIq1n09BoMOwLTYHvz/c+EgZPqQhW8tMiTRxquFRv+VkEvg52jydiQR/vkMkG0A+Tda1ADVQEoRWYEzSUxOjM8Uemw6GI179Qe15eVeBZMBwwH81MJaIQBfwBOkwqMxEIRRdqFOIS+C4vTg0SxHkyERwNJmh80gxBl8cidLbQLguqruFGvXHoayScihRJI1QIvhAI26eD24LRgD/otUdi47X0qhYkrxViSiWYF90C5wCt5sJB8ELB60eCRA+V+DFV89YIjImqBuZSCAIbqnthmKSqXBAoNZoBapw4Th4YN6ggAKXAsUEz/hpuLAZBj04RmIjjMGaqY9AVWBSKc5FRCHZhqhQvBuqkn13+KGiHvPF4xBf0Uv+AeQYhK5zw8vE0GALNVNAaF4yWGxQi9Y8rsUd+jIa8HS4oh3GW3k5ztxrB3Wjvk49DQfBTvm1aV4xfqaAFnER0hDU0lgfH6HsAFRKdggHFJ3DCQtWjU3TyxulNwUtghLUw8HiAhuhINMhH1It2lZ/w0CQ/aQRNYyemJyKTlxgjnQZTsTB0JoAV+CMQQ7EvWwO+RNLB5v0YnN8fxInXyrs4hLEdgbQFNxxJ0CnDB/OgMI15TxEexSfoejAaWDBzvWkDjdHm4wlwpiCYKLXyXEoBdL65u7jBftfQBqeni+se5AY8/cPdnV2dXLlzEK7La7gN3UPu/vVDHEh4nH1Dm7h+F+fs28St6+7rrOG6Ng54ugYHuX4P19070NPdBfe6+zp61nd2963h2qFcXz+s690wE6HSoX6ONihU1d01SCvr7fJ0uOHS2d7d0z20qYZzdQ/10TpdUKmTG3B6hro71vc4PdzAes9A/2AXNN8J1fZ197k80EpXb1ffECy5fXCP6xqGC27Q7ezpwaac66H3HuxfR//AJk/3GvcQ5+7v6eyCm+1d0DNne08X3xQMqqPH2d1bw3U6e51rurBUP9TiQTGhdxvcXXgL2nPC/zqGuvv76DA6+vuGPHBZA6P0DKWKbuge7KrhnJ7uQaoQl6cfqqfqhBL9WAmU6+via6Gq5hZYBETo9frBrvm+dHY5e6CuQVo4XdiuyXwtkPla4EPoNvO1wJ/vawEl/st8NfDX+dUAb73M1wOZrwcyXw9kvh5YHM0zXxEs/IogqZ3M1wSZrwkyXxP8xX1NAHOT/1sDQs7ZyC3kQi8GJBQgmEVk584RHREJ/w99wlTAe4vwdw8Xf3WK71GrGZBhRi5XXqNB+U9frrxOh/IvXq68Xk/lRfLLlTcYUL7tcuVNJpCHd0L/YoFFeRbznVA4h2iYApLDHCClzEHiYI6SFeK1ZA1ID4HM5kXlRtLKZUG5Yihnh3LLoVwnlLsKpK8FmfFF5b6XVs4K5cqgXD2UWwXl1kK5jSA9DjLRheWYZWnlsqFcJZRrgnJOKNcL5T4O0ttAJrGo3JfTyuVCuRootxzKuaDcIJQbBek4yOxZWE5UnlYuH8rVQrmPQbl1UG4TlAuC9HUgczP1O7mckSufeeZv4fWZz8gljFwml+/cD6+dUgkjlUX3vzczs1MqZqTsqRn6krKMVBqdmXXoT8lYImPbzrTByyFnGDmLAjNkRixm5JJjx47JFYxc9e2Zb8/cB+kIpP2QFBJGAW0kG6HVjRw8MzMTpVnJI7OLGpGzRM62Ca0oGEYhtMI3o6DNKJSMQj0Lry+0faHtMKYDkJRSRilnWTZxYN++fQcSMikjk+/ct++PMzN7ZCwjE5qaoXloa2ZErz+lYIlCIjTW5lAyIqUk1doMyzJK6UF4KVWMUjM7MjsCbR87xB3iboe0D5JKytD/svn/v0kJI5PthCHL5WcWNqliRKpkk0KbKmxTpWFUulnbrO1YxbGKg+6Dbqq9m+U3y2+Uq2WMWiGCV6vrRni5WuVSRi5v6aTNdrbIWUYuFdqdQftG98NY5fujSgmMp63tPWy5rUXNiNTSmYVtq2W0bbWWUetP5Z3KO7PyxZqToZOh7/c8//zxA9878Iz6GbVGzmiUYnitGH+GvsZXKOSMQrFy7Nlnz87Ojq5Ec588Ncu/FFJGId95fPbUzjz1gZ0qCYxuZOS9Ef7VohGJNNLZ1IvMzkqkjEb+PH2lxQgaI0X+UHhcyNvjfH6Y5p0x72gN54xNhmu4jl2xUA23JhDZhowBYwHI00/oa7gebyL84aSxB0qx0rqHSL1QkpR5oSRj80FJpnUcpJmfTIC0SBsCaVEjySOsy+mBw29vzybY7g32dXLk3vUe4LOwOpwjZiIjuaSKfAy2VnQzFSW3k0+TvyFPku+Sl8hr5Dfk9+RfGMJIUNoIszqPVJNVsCANwmZwO7mDfIbcS/4eavsR+Rn5LcMwUkFSQfJh8VwNS+gQHo4PkKPk8+QpiGE/Jj8nv2NEjAwlDbAKFZClpA2WtfX4dyifJJ8lx8j3ycvkFHmLgZmMciaiIoWwvDlhwbsKNE233neSz5EvkG+SH5B/JL8gcwzLKDAmU3k1lGiEDcUGiL5TZC/5FPkyOUPeY5RET0Tt/YMcaRv0tNOtMZXOAs1qgEWkGeLWFjhETJMZcoj8LfkqeYx8i/wD+SfyS/I2eZ9RC/L079DMsAA3wdJ/DWyWd5BPkIPkfvIV8nXyNHmOvEJeJ/9K/h+jEuRFREssZAlZBov0tRBtd5IbyGHyAHmIfIPMkufJSfIG+TfyH4wmNYIsWKPpf7+yGNYnF6wZ9EOQG8n/Iv+HPEweJ98mJ8g/k1+Rd8gfGS3okOneAHa2YUmWlMAxcJLcJ1yVEgds+/83tC/uHhhwk7We/l44Zgx51nFgbSpjBSk9lC4jdWQ5bDQ2wnZ/N7mJ3EqOkAfJI+T/ku+QF8hPyJvkD+QDRodlFLCJb4VtyCY4clxH9pG7GD3etxEJWDUbZkY9WQHblavxqLIHov1+cjf5IvkaeYI8Q35Ifkp+Td4lZxmD0AMpeE0OqSQNZCWBNQmOPNfD7uU2cg/5EnmU/B05Tl4kr5LT5N/JOcbIXOWrj/tkp5FnkO9RyglSjtQjbT5vKCHnkBuRM8gHkS9SKlikFonyiiXIGmQzss3njQcUa5EDyGHkZuQocgIZRiZ8vsmoYjfyAPJu5DHkl5BPIZ9DnkS+iXyHUlmCHEKOIqPIvf5QcFx5O/II8l7kg8hHkU8hv4P8PvIF5Mv+cGRS+RPkKeSbyLeQbyPfQ56lVLFI5Vgw7FXpkRZkHnIJsmIs5vWp7MgWZDuyBzmMHEFuRSaQe4PhYEK1H3kn8gjyKPJYMB4JqR5AfgU67lU9inyDUm1BupG7kSijRhn1E8inkcdD4alJ9XPIF5GvIF9Fvo48jfw98h3k+6GIL6QhSClSjTQibUgOWYa0IxuRrci2yYA/qHEhe5BDyKuRI9BITDOGDCFjyJ3Ivch9yNuRB5F3R+BN8znkfcgHkQ8hH0M+iZxFPot8PhLzhzU/Qp5E/ixK77+B/C3yDPJd5B8ptSKkHKlFmpE5SA5ZhqxB1sd8oYS2BRlFfho5izwdA2Po8pA1yJXIHuRmZAgZi8Nc0+1EziBvQd6JPII8irwvHgyP6R5EPoR8DPkkchb5LPJ55I/ik76o7iTydeRbyHcp9QSpRJrjcUedvgBZgqxCOpDNyFVIF7IPOYzcghwD1uvDyARyN3IGeQvyAPII8nPI+5FfQT6GfArYoD+OfA75IvIV5KvI15G/Rb6NfJ/SIEIqkUZgoyEHWYVsRa5FXo3ciowidyD3IG9E7kfeCWwyHEHej3wMeRz5MrDZ8AawxfAW/Xba8D6lkSClSDXSiLQhC5Al8alo3FiFdCCbkSuR7Ug3sg85FJ+OTxivRm5F7kbejjyaAJ80fgn5CPJx5FPI7yC/j3wB+TLyJ8hTyDeRbyHfRr6329HcaDwLbDKxwGaTErjMpAe2mCzA5aY8oNO0BNhuqgB2mOzATlMjsMvUCnSZ2nY7ljlMLmCdqQdYb/IAG0wbgY2mLcAmkx/YbNoKXGaKAltMO4DLTXuATtONwHbTfmCH6U5gp+kIsMt0FOgyHdvtaHGYHgDWmb4CrDc9CmwwPQFsND0NbDIdBzabngMuM70IbDG9AlxuehXoNL0ObDedBnaYfg/sNL0D7DK9D3SZyW7HcodZCqwzq4H1ZiOwwWwDNpoLgE3mEmCzuQq4zOwAtpibgcvNK4FOczuw3ewGdpj7gJ3mIWCX+Wqgyzyy2+F0mMeAdeYQ3WnDTs58Be85sIfYDHuzLbDfGsEPcX34UeoYfnAbhD3eNthTTeIHsVHYy8Zgt0FPsca0cskSSfmk7J9DznbR/l6ot3xfxTDKXNiT/9dyDOzlPgxlsB91w85uLZwaemCHT+vi71w4d768BPabEvqLEET+oa4scKZYCqeAWvzrXfoXxI2wA2+GXXUL7FtbYb+5Es4yq+Dc0QYnhQ8vf/k9YfGKz4thX/tpOAldfo6BM9c8C8+j5op41SUohjOCCs4sf/ocg59xXZwDKVrhlDQNJ59dcLa4Dk4E18O57BNwzroBzjU3wQniZvDqW+GUcBucQu9CPX1USjBwUqQsuAiNV8R2ZAeyE9mF8U8k/L6MaMEVg6xMI0F6UIp+tJ+8WkjlFdFwRcw/j32XpP4K+D9hXZCS9WSYbIBz/CY4f//XrxlSnSL1pyK8KjrvKnmPLLin/VAUkyyI27Yrzlkxx5CjF6SILCHFV/DOkM9dgiJSQkqv4J0RZt2FKSJlpPwK3qXkDnKAfJIcJIfI4T/BNYOfcl4Oack7yaew5JE/wbWIfJ4cI3TtXYNfa0+Rz16BRzEk+0PxTz0KhvRfkrorog/pRwaQY8hx5AQyiNyK3IYMISeRYWQEGUVuR8aQcWQCOYXcgZxG7kTuQu5GXofcg7weuRf5CeQM8gbkjcibkPuQNyNvQd6K3I+8DXk78g7kAeQnkXciP4U8iDyEPJyW5/V/F/Ju5D3ITyP5tZmPDrxn8XP6b5D3Ij+PPMaUiwZEI6KoaEZ0UHRM9IhoVvSi6JTojJiI9WJO7BC3iQfEI+KoeEZ8UHxM/Ih4Vvyi+JT4DKtkW9gxdgd7C3s3+wD7OPss+wr7JvuuRCqxSMokzRKXZFiyT/oV6VPS56WvSt+S/lGmluXJamQrZT2yzbKQbI88Jr9RflgxotituF1xVqlVFijtylXKPuUWZVh5WDmr/InytypWZVaVqBpVnaohlV+VUO1T3at6SPW06qTqtOo9tVxtU4fVJ9Vva9SaPE2zxqXZqrlTc6/mec0ZrVI7or1P+6j2O9pXtW/p9Dq3blQX092te0D3uN6ib9UP6cP6F/Q/0//e0GkYMvgNCcM+wxHDQ4anDS8Yc4we44zxCeP3jSeNp43vmeQmm+lLpifNPebN5h3mW8xnspRZOVlVWa1ZsawvZR3Pejnrjax3LKzFbCmxNFo6LUMWvyVh2Wc5Yrnf8pjluOVlyxuWd6ys1WwtsTZaO61DVr81Yd1nPWK93/qY9bj1Zesb1ndsrM1sK7E12jptQza/LWHbZztiu9/2mO247WXbG7Z3stlsc3ZJdmN2Z/Z/svcl0FEUa9tV9fZMzXT3VPcgSzJJEBAVEGURuYiIiBHZREREREBAQMCILCEgsssuKoawQ1gMqwiIYZElBAghbAFZwr6Ffd93CH91dYnphnuv997v+8//f+c7Oacenu7q7nreqnrft2p6hvrhLcNjw/uHJ4QnhSeHp4XvCD8Wfi2khPKGiobKhaJD9UMtQ7Gh/qGEUFIoOZQW2hE6FroWoUTkjSgaUS4iOqJ+RMuI2Ij+EQkRSRHJEWkROyKORVyLVCLzRhaNLBcZHVk/smVkbGT/yITIpMjkyLTIHZHHIq9FKVF5o4pGlYuKjqof1TIqNqp/VEJUUlRyVFrUjqhjUdcKKgXzFizK1w7WuPIhkZlF7HfxEy5+y8Vv5OIK51dycS9CUfz+OBd/Kt3Ji05wXv90jPP+JbY6+XPtnfd/hPdx1Z/6T/g2Jy9ZzMXj/gXO21820Xn+xVFO/gpzcTMX5/nKK3lc52sLTng2m8dWWCnDxlcbijOK+DynII+44mhlaYfX6tlYZYKNr194XO03ykpsIzFRomsUROdxqoyOdfLqpV28k/P66pOdvOZwJ6/V3cV7uPgFF7/k4ldc/JqT17baj/9sX+2qLl5TcJd1ateROFximsRsUTuKr9Wr8/VkQ54Nt+FxqxuPLYO5/x/DMwXrs6olKBVloK1oNzqMTonP/BD2YROH4ULyPqk2vh1jY52QxK02vjPYxrqqxOU2viv5u40kynrvnrCxHpPYWuIpG98rL7GlxHgb60dLTJB4xcb360rcYWODZhLP2fjBZBsbNrDxQzlCP5TtbzTM2Qsfuaz+UWUXr+ni7V18TC7O79+ktPN8k9YuHufkMa7nxxxz8vZNXbx/Ls7b336Y4GGoPKqMqvGVXwO+FmrNs5c4nmEM5FnAKB6prU9SF6EUlI4yURY6iE6gC3Zr28vean/Qxi/62NihqMQNNnYkEhtKnG9jJ9nrnUpIlHO200yJZ2zsLHuhc0WJ8jmd022MlaMjVvZarOzFWHl9F/mcLrK9Xbo7rd5ltdNKXQ4Lnhe98BftYt9Fqo2rKXGqjV2LSOwu8Y6N3aQ/67bNxi+lFb6cbWN3abXu/STutfErqeKrBTb2kB6vx1Abe0q1PVtItOd2Ln/bq7TECU7dva4IrqFIvoYqicqhSiga1Ub1+Rq5JZIzupecSb1329gnxca+cTb2e0GinLlfS//bX/bNANlXA6TVBvbiz/T/OSIHveDi5Vy8vIs3dGpwcB59Bndw1h9sPw/EOwaRdhsGy/E0eK7EK6KOy3cOkf0zRNp/iOzfIefc9h0qbTC0sXOcDR0n7pu7ZraN35hOv/JNBRd3WembFBdPc/LvXFb6PtvFD+bi3Go/DEWUODT8kGljfKNcNS3ezsUHuq+Ml3YZUcH5jBEZzisTQi7ex2mthNXizj7ZB3/ORfus9DkJN2wcKcfVKK+No5HEMIlyzI/JEk9RUQgVQSVQWVQRVUU1UT3UCMn5Mk7GkvGyHeOn2zihio0TO9mYKL1VopwJk+T8nCzrTR7s7u3J0i9NvuY+M0WOsSn9nDaZOspt3alSd1IPZ83peR8d19OzbJzR38aZlR6tM1PO01nSfrNqiic+vO+sdo+bC7NkvJx9y8afpE/72fvoE36+Z+Pc2hIfscvcZIlX/lGPz5M9OE/G+PnSzr/IHGCBnHULpB/8Vcb6hTqiYP0rT64+F2cWLZEoZ+Fi6aEXSzVLrtm4tJDT1kvruniMW9FSmdcsi3HWXHbnUfssl72zQpGYLEaoR7w1ZH3xR+pOkdEzRepbKXOhlTJXWjnT7YdWSn0rbzlnf6qdZThakSq9W6r046mbnH51VXnnbF41U/SV/2EbKzzMHcX1qw7buFrG8jXdbEyrIFHadq3M5NLn2Liug40ZfNWiuNqYIdcJ62Nt3FDIbfcNqyXecJ/ZKGf1xjnizN9t98b9Nm6SfmOTbPempRKlv9kso+7mgRLlkzfnOHs8s5iL1xF2/TtjPLO+RDm/tkhfulWO2K2XbPx9mI3bqtq4vZvzKTtSXPyYk+8kLt7a2bs757rXaLuTbNzD/YEnl3/YG+b02nuriXFBRa/9mUXY52RmtFfG/n1y5O+X5/fLsXdAPvNgITFzH5kJh+Rq45D02Id1idJTH8l5nM86KvG47NmTsudOtRQtfuQpp2QEPC3j/RkZWc7IjObsM7lsxjONs7Od/GoJJ78Wj6j4t+T3cq9A+f3ud3fO0pwiwrLsMXGqHeqEuqN+SHqCHJlb5chMMUeueh5Ij/KgsUQ7Q7U+MbNxuER7DmLcRqK92sGkpkR7bmIo7WghhoS/2EIMGRLtWY8Vr8Q4ibatsaeSRNvHYy+R2EiiHWMxrSrR9rPYV1DiVES9f45G7Pe6fCL2y5p+Z/zE/nH/JC/A/iSJ9qoCq6bEPhJtb4u11hJtT4L17hJtj4gDCe42MWkNFua0LyuIKM2lhlVyna8vuHvkYib7jfWXmCoxx0aj8uOvMzpInC3Rzg2wWVRiS4dX5X1jTrAxOMcRLXDQubuB86i59sgsnu7iO1z1t7l45j/hm1x8A8q9B4XzpTvWvTh/yMXzu7hzdwXnZy5e1LHKwPlLuniikxco6uy5iGQnj8zrrB8Z6+RRCQ5fggsm58rSeHsKbnKdz3byJ6vnqs//nhzlfP6TYxz+Hz+Z4LTHkxNc149xcXf94U5eKN7FDzufXyjbxQ86eeHIXM/jego/4zpfwsXLOfUXqebiPZy8aAnn/Z8e47zfs9ucvFhjFz/h5MXzPMpz26v4QCcvES0i3Z/8mPP6Ehdc3JnR4ecLOfkLioufco6nUptcfK+LX3HxG05euqSzP0tXdJ0v77Rn6Rgnf7G0k790zckrLHHyV3qIbPAhr1zFyV9XnPyNDGf/Vhvm4olOXr2+k9fwungzF0938lqu8VR7sotnOfnbdZ28jmt8vtPYxeNdfJSLJznt/85MJ68X4+Tvl3Ze/8E1J2/oslfDU07+4Xco9+44/nC6ky9tnytL5FdElHeMFxIR4xj/JKKNi7d2zAfBc41nEjHZMT5IRIqTF+zn5IWrOXlR1cmfyXS0nxSPd9iLDLrl5EN8Th7v9N9kfCEnT3LGB/JzBSdfFO3kK+s6eWozJ1/v7E+yrZuT7+vv5MeGO/n5CbnyJH7kRu7xwvXfmO60940FrvNzXXypiztXj+RmIRd36bmZnCvT4Udupjqff3O1i6cg61s/CvoEj0St8QRx1xY4wWN6gvxMHuTVa7B0vTpLY6lMrMzweXwJX8HX2evsDcFftO5D8hDr+0lecVcMAV7m58+w8j/r69d/7Pry5xJKNGKSfHo1/S1xT+Dn6yFrt/HPveEePONVHn5qojzcJwaUhGYj63/HmouS0VKOS1AKSuO4GmWgTP1dRPTqej1e1tDf42VNdgoBMXnrTwtMZ2c45uP8rMB0loUIZ7t5mc728jKDHUbA25XGjghMZ9kcV3N+VGA6OybPH5fnT8jzJ+3zei3RhtqiDW9bbdDriCPviCN1Ras2iKduEk/NFE/dKo5sE0d2WEes/33Lyg4958R8QmgK74/b3Bb9ODWwgXrjEI5CfXAxXAz1x41wYzQAx+DP0WD8Bf4CDcUdcSz6Bg/FQ9H3eAwei4bjy/gyisc38A00At/Fd1GC9eIdGkm8xItGEZ3oaDQJkiAaQ/KT/GgsiSARaBx5ijyFxpPipDiaQEqTumgiiSVdUArpSrqiVNKddEerSE/SC60m/Ul/lEYGkUFoLUkgCSidjCaj0TqSRHahDAgAQ/egHJRDOVAVotEDqAE1MIGJMBGDEqtMwYrnE88nuKynlacVftHzqedTXM7T1tMWv+Tp7OmMy3u6eLrgv3m6erriCp7t3sH4ZfU9tTm+qA7SMM7RTf1N8qX+kZ5I5gVaBtqRq4HegWHkDiPMBz5WmBUGgz3FngKTPc2ehiB7lj0LeVhxVhyeYM+x5yAve549D/lYKVYK8rMyrAwUYOVYOQhj5Vl5CGcVWAUIsYqsIkSwSqwSRLLKrDJEsSqsChRkVVlVeJJFs2goxKqz6lCYNWVNoQhryVrCU6w1aw1FWRvWBp5mn7PP4Rn2BfsCnmUdWUcoxrqwLlCcdWVdoQT7kn0Jz7HerDeUZH1ZX3ieDWAD4AU2mA2GUmwoGwql2bfsWyjDvmffQ1kWz+LhRZbAEqAcG8VGwUtsDBsD5dk4Ng7+xiawCVCBJbJEeJlNZpOhIpvKpsIrLIklQSU2nU2HV9lMNhMqs9lsNrzG5rA5UIXNZXPhdfYL+wWqsl/Zr/AGW8gWQjRbzBbDm+w39htUY8vYMniLpbAUqM5WsVVQg61ha6AmW8vWQi22jq2D2mw9Ww9vs41sI9Rhm9lmeIdtYVugLvud/Q7vsu1sO9RjO9lOeI/tYrugPtvD9sD7bB/bBw3YIXYIPmDn2XloyC6xS/Ahu8KuQCN2jV2Dj9gNdhMaG0WMItDUeN54Hj42ShmloJlRxigDzY0XjZeghVHJeBVaGVWNqvCpEW1EQxujmlEN2hrVjerQzqhp1ITPjDpGHYgx6hp14XOjnlEP2hv1jfrwhdHAaAAdjIZGQ+hoNDIaQSejsdEYOhtNjaYQazQzmkEXo4XRAuKMlkZL6Gq0NlpDN6ON0Qa+NNoZ7aC7EWPEwFdGe6M99DA6GB2gp9HJ6AS9jFgjFnobcUYc9DG6Gd2gr9Hd6A79jB5GD/ja6GX0gv5GH6MPDDD6Gf1goNHf6A+DjIHGQBhs8D8YYgw1hsJQY6QxEr4xRhujYZgx1hgL3xoTjAnwnZFoJML3xmRjMgw3phpT4QcjyUiCeGO6MR1GGDONmZBgzDHmwEhjrjEXRhnzjfkw2lhgLIAxRrKRDGONRcYiGGcsMZbAeGOpsRQmGMuN5TDRSDFSINFINdbCJGODkQnTTGximG2CCfCTyQMGzDGpSeFn02/6Ya6pmRrMMwNmAOabhmnAL2bQDMIC8wnzCfjVzGfmg2SzgFkAFprhZjgsMiPMCFhspplpsMRMN9PhNzPDzICl5gZzAywzN5mbYLmZaWbCCnOruRVSzG3mNlhp7jB3QKqZZWbBKnO3uRtWm3vNvbDG3G/uhzTzoHkQ1pqHzcOQbmab2bDOPGYegwzzhHkC1punzFOwwTxjnoGN5jnzHGwyL5gXYLN5ybwEmUElqMCWoDfoha1BX9AHvwfVoArbgnpQh+1BFmSwgwsyYWcwTzAPZAXzBvPCrmD+YH7YHQwLhsGeYCgYgr3ByGAk7AsWDBaE/cGng0/DgeCzwWfhYLB4sAQcCkWEqsAR7t+b86h6Hd/BD4jHjo8kRIqQYlDd08LT0tPa08bTyRPriWOFWBFWlD3DirESrCR7gZVmL7KX2N/Yy+wV9ip7zYrK7C3WhH3CWrFPWQxrzzqwWBbHurFerA/rzwaxIWwY+479wEawkWw0G8vGs4lsEpvCfmTT2Aw2i/3Efmbz2QKWzBaxJWwpW2FFaR6b0nmU2sA2sUy2lW1jO1gW2832soPsHLvILrOr7Lp8h9va0SgkIpa15+rBTXArZbH3vq/yP1BZ4/9LlSGh8kcr/8Ftvfv+h+iz3kD3cG31edaVga0UAfs7+603KiNxEVwCl8UVcVVcE9fjOUcL3A53wt1xP55nxONxeCqejRfgpXg13oC34b04G5/CF/A1fmUqzsBb8W58mB+5hG/x2/q4fcJIIVKMZxUVSBVSndQlDUkz0oZ0IN1IHzKQDCPxKJI0Ja1JexJHevEj35FRJJFMJ3PJIpJC0kkmySIHyQlygdwgOeAFBvmhIBSFElCaX3kPFNAhL0TyIyV55lEJoqE21IfG0BJiIBZ6QH8YBgkwAZJgDiTDclgNGZCJImEcTIXZsACW8iMbYBvshWw4A1fgjkIUVcmjhJQiSgmlrFJRqarUVOopjZRmSmslxt8NAbdVrP9LgV383QXG+b8S2NXfk2Ms/1cvgbH+3gK7+PsIjPP3FdjV/zXHLrxef4Gx/gECu/gHCozzDxLY1T+EYxyvN1RgrP8bgV38wwTG+b8V2NX/PceuvN5wgbH+HwR28ccLjPOPENjV3wMRfrYfL7v4B/Myzv8dL7v6R4r2d/aPkvpGS31jpL6xUt84qW+81DVB6poodU2SuiZLXVOkrqlS149S1zSpa7rUNUPqmil1zZK6fpK65khdP0tdc6WueVJXAlfR2Z8odCUJXbOFrl+krgVS169SV7LUtVDqWix1LZH99pvUt1TqWyb1LZf6Vkh9KVLXSqlrldS1WupaI3WlSV1rpa51UleG1LVe6togdW2UuuYLXYtEr6UKXelC12apK1Pq2iJ1bZW6fpe6tktdO6SunVJXltS1S+raI3Xtlbr2yX7bL/UdkPoOSn2HpL7DUt8Rqeuo1HVM6joudZ2Quk5KXZuErm1C127Ra9lC12mp64zUdVbqOid1nZe6Lkpdl6Suy1LXFanrqtR1Xeq6IXXdlLpuSV23pa67Utc9qeu+1JUj++2Brc/6VStLn4ptfSqx9akg9Z0Sui4IXdeErjtWr3Ef2xAVx9vIJO6f3oHW8Cm0g8+gM3SBrvAl9ASe98FQ+IZ7q2/5eikbjsIxOA4n4CScgtPcM52Fc3AeLsBFuASXuZ+6CtfgesD6PL843koSoRbU4T6vFbSBttCJe7446Ma9Xy/oDX2gL/SDr2E893XLuAdcASmwElJhFfd8ayAN1kI6rONecT33gxthE2wOvCTW+WWtuMCfeh0hsVINQ3984wuhJLEHEGPVUAoqz8oaVsQsJmtM4+eA++AYhJS8ShSvV0wphrRcV1jPKJbrGda3UQzueZ9QPIpXoYpP8XNPrCm6ElCYYiimYu1XKJYm/jjrGqK8qlRGuvK68jpi/FwFFA7TYSb39PMep+txFgxfxq+jMA2m8XvOgBm8NT/BT4jAXOAehltsDX9iNpxFLHxp+FJuA4LKozBefwavN/exFn1M3/GrvLxl0/kzZsJM/ow5MIc/Yx5w78Vbupk/w9Ij3it5sFvYJFvY5E8bLeW1uI087UnyI9/us78n88d3PeLRCJSARqJRaLT4nuc4NB5NQBNRovgWyxSes/3I+28amo5moJloFpqNfkJz0M9oLpqH5qNf0AL0K0pGC9EitBgtQb+hpWgZWo5WoBS0EqWiVWg1WoPS0FqUjtahDLQebUAb0Sa0GWWiLWgr+h1tQ9vRDrQTZaFdaDfag/aifWg/OoAOokPoMDqCstFRdAwdRyfQSXQKnUZn0Fl0Dp23fuMHXUKX0RV0FV1D19ENdBPdQrfRHXQX3UP3UQ56wAcdJu+SeuQ9Up+8TxqQD3g+8SFpRD4ijUkTnkd8zLOL5qQF+YS0JK14VvEpzzXaknbkMxJDPuc5xhc88+hIJpPdZA/ZS/aR/eQAzy4OkcPkCMkmR8kxcpznGifJKXKanCFnyTlQyXlyATRykVwil8kVcpVcI9d5LnKT3CK3yR1yl9wj90kOecAdAAYCwDMSD89TKPjAD+9CPXhP5CNNoBk0h8+hI89IBsBAGAQjYCzPS+bDL/Arz0yWwG+QCVtgK/zOs5HtsAN2Qhbsgt2wh+cm+2A/HICDcAgOwxHlFaWSsk3ZruxQdipZyi5lt7JH2avsU/YrB5SDyiHlsHJEyVaOKseU48oJ5aRySjmtnFHOKueU88oF5aJySbmsXFGuKteU68oN5aZyS7mt3FHuKveU+0qO8sAT8OShr9Oq9A0aTd+k1ehbtDqtQWvSWrQ2fZvWoe/QuvRdWo++R+vT92kD+gFtSD+kjehHtDFtQpvSj2kz2py2oJ/wv1b871P+15a2o5/RGPo5bU+/oB1oR9qJdqaxtAuNo11pN/ol7c7/etCetBftTfvQvrQf/Zr2pwPoQDqIDqZD6FD6DR1Gv6Xf0e/pcPoDjacjaAIdSUfR0XQMHUvH0fF0Ap1IE+kkOplOoVPpjzSJ/kTn0J/pXDqPzqe/0AX0V5pMF9JFdDFdQn+jS+kyupyuoCl0JU2lq+hquoam0bU0na6jGXQ93UA30k10M82kW+hW+jvdRrfTHXQnzaK76G66h+6l++h+eoAepIfoYXqEZtOj9Bg9Tk/Qk/QUPU3P0LP0HD1PL9CL9BK9TK/QW/Q2vUPv0nv0Ps2hD3zIh+k0Op3OoDPpLDqbXqXX6HV6g95Uu6lfqt3Vr9Qeak+1l9pb7aP2VfupX6v91QHqQO0rrYfWU+ul9db6aH21ftrXWn9toDZIG6wN0YZq32jDtG+177TvteHaOG28NkGbqCVqk7TJ2hRtqvajlqRN06ZrM7SZ2ixttvaT9rM2V5unzdd+0RZov2rJ2kJtpZaqrdJWa2u0NG2tlq5t0DZqm7VMbYu2Vftd26Zt13ZoO7Usbbd2RDuqHddOaqe1s9pF7bJ2VbumXdduaDe1W9pt7Y52V7un5WgPdKRjneigK7pH9+pH9WP6cf2EflI/pZ/Wz+hn9XP6ef2CflG/pF/Wr+hX9Wv6df2GflO/pd/W7+h39Xv6fT1HfxBAARwgAQgoAU/AG6ABX8AfUANaQA8EAixgBMxAMJAn8EQgbyBfIH+gQCAsEB4IBSICkYGoQMHAk4FCgcKBIoGnAkUDTweeCYwPTAhMDCQGJgUmB6YEpgZ+DCQFpgWmB2YEZnK/W9jejRW7or3JJMI9qNjrnAI1oRbaCW9DHbQLGsFHaA80hY/RPhHxDkAH6IAO8kjVFx2CeIhHR2EMjEHHeAwej46LaHNCRJuTItqcEtHmNCyCxeiM8PznlJeVihiJPVPiUT0qLu0xPSYuI3ZFy3qPeE/gU7Q0LYcviB3Sq+ogdTwh6jR1JSmgrldvkbJin7SF2CGdLqK3X/xv5+VRFRSNGsg3TzDyi7XZK6QaqUHeUUeoi1XrvSnrLaNqXHt18UOm1hslDZCPZzBNUUt+VQe5f299Fw9QN9SLxyPgfDCPQcBjUTwaow1AhK3X5ohyHS93aRm83KOt5+U+bZM4vouXq7Q9otzHy43aAV5u1g7xcot23qrD8lnXsvzWtayAuPa+OO7n5Vqm8nId08QRQxwxxZGgOBImjoSLIyHrCI+fs8m2/6b46Yye/7Nj5/+d6GnFx78aE/8742Ee2pK2pm3oVzy6WFHxTR4Pa4tI9S6POt+JGNiQxz8r8tlxr9VfjHg9/kmsezTSjeUx7s/oljty/L8W6R5GMh7zxvDYnDvivc4zCyuvsLMKK6eoy7OK2zKnuMszig95NpEo8olJPJu4w0dtAz5SP7bG5R9xkXzujIm6qQf1PPoTel49n55fL6CH6eF6SI/QI/UovaD+pF5IL6wX0Z/Si+pP68/oz+rF9OJ6icdG0gGPj6XMz1Sm/aWIOufRmMoMZrLgI5F1nZahrRfxddNjI+wuHmP3aPu0A9qhP2Ity88KiHh7/u9G3PuPxlwWxsJZ6N+KvI64q9//r4i85pp/EnvfwQTn40ugEC6G8uK6uD56SnwGWgw3xa3Qc/hT/Cl6EbfFbVE5/Bn+HL2Ev8DdUQXcA49E0Xgcnoia4oV4C2pBOpFY1JPEkZ6oD+lN+qLB5GsyCH1DhpBv0XDyPYlHI8WnmWPJKML9PUkkiSgRdMiDJkFeyIumQ34ogWZASSiFlkMZiEapIp7vEPF8p1ibZSlTlS3ojCfoCeIwzw3PDRzuueW5hUOeO547OMLLDYYjvUO83+Io7/feEbiId6R3DH7WO847ET/nneSdjUt553iT8SveRd50HO3N8G7F73uzvFm4qXePdx/+2HvAewi34JH/Pm7lfcAjfz9anr6Cl9BX6Ws4xVfcVwKv8pX0lcJrfGV8ZfA6X3lfeZzhe9n3Ml7vq+yrjDf4qviq4I2+qr6qeJOvmq8a3uyr4auBM321fbXxFl99X3281feB7wP8u6+RrxHe5vvY9wne7mvra4t3+/liHO9RW6if4L1qK7UN3q+2U2PxYTVOjcNned4wHp/jucNKfF29pN7CORrRPiJUa6J1J831SXo26R2oFahF1gS+DYwjaeK9SMJXnHPFznoT3FoeWZTriLWf4EVF+PrXevNbvhmNn8Mv4Ar4LVwLj+H1p4l9hmn8KhD/nivYCslWcHaA/xEea5t7Qp4IT6QnylPQ86SnkKewp4jnKU9Rz9OeZzzPeop5intKeJ7zlPQ873nBU8pT2lPGU9bzIt6Od+CdOAvvwrvxHrwX78P78QF8EB/Ch/ERnI2P4mP4OD6BT+JT+DQ+g8/icwooCtyAm3ALbsMduAv34D7kwIP/5JiCFKxY7/c25zlZkNslDEWKX9koiUqhitw2lcVPtNdCH4hfSrGytDbilyqs3wbqzeeRgU0+jwriYnweNeLWbYtj+GzpguNwTzwEf4OH4eF8xizEqXgVTsfr8Caxc/QX94v+6m6VtVujvP5wp2i43CmystNXSRlSnkSTmjw/+YBnH5+pg9Uh6lB1mPqt+p36vTpcna7OUGeps9Wf1DlqlrpL3aPuVfep+9VD6mH1iJqtHpVe/E8fbvnoPzy05VH/8KeWH/1zxXJevNvyCmn8sF0psl0zeFlftOtl3rK6omWNeNs6/sO2zVXnqfPVBeqvarK6UF3kaOtJ9ZR6Wj2rnlPPqxfUi/+wxXZEyR1Pcmuw/X0uby9U1CDt5GdXFaUWhCxP6uU5fkeErJUCqmqtJtG71hsV6D3tK/1NlMmjWhQey+u9wNWW4aud8qQ8wlz1y/yelUglBFx/NFJ479REHm6JuvyO9Ug9RLlFPkA+bpVGfB3RhDRBKrdPK6TxnPEzpPNssSMKqB+qHyLGV7C9kMFXKfHIVBPU8SiSr1UWoaLqEnUlKs9XLBdRZfWyegu14vF4EPqcR97hqDuPtHNQPx5HF6KRPG7uQRN57x1AS3gPHkK/8Wh4BC3lfXkULeP9eRwt5316Eq3g/XoapfC+PYtW8gh5HqXyKHkRreKR8jJazaPlfbSGx0YvyuT5QhjK4jlCYXSQ5wUl0AluCw1d4JE6iC7zeBni2fQf46KiHBf/a9H/3KKWJaty++SVn7DOFG+Vwf9a9j+27B82rfpwtP6vZf/rxmyxh351lvX5htgXsi1aWNiytHVUnaAm8aOpagbyq7c16wr3pyP/6tXWVaVzzZdZD3v1X7nLH9eXftiKf/0uhPvB0L+TF1lvU/w7mQi/TudtzI/GIOsewK8cZyBUBe1F2eiM+DV8glWch9/1r7+7kIEzuYK9vLUn8Dl8BfOMlShEJSbJTyKt9znIC6QcqUiqkGqkNh/lDUlT0pK0Ix34KqIH6UcGk+9QcZJHvPtRgpTlNauK3KURacFrdSLdeZ2hJJ6MI1PJbLKALCEpJI1sIFtJFtlPsskpcoFcI3cAgddaZ0CY/U4Dn2/7cQmh0cDPC2yEKwhsgl8W2BRXFPgxfkVgM1xJYHP8qsAWuLLAT/BrAlviKgJb4dcFtsbRAtviagJjcC2BX+B3bNt6ClioLPKECVzsCbeQ3fVpFnqe8OkWepN8AYErfExgis8QeN9nCszxBQU+8OWxkK9AnhD4mmH3YTtcHFmj4TleFsMledkIvyAy/1K8bIr5+OMay/CyGS7Ly+b4RV62wOV4+Ql+iZctcXletsJ/42VrXNV6Qwe/wcvP8Ju8jMFv8fILXJ2XHXANXnbENXnZCdfm5Tj8Ni8n4Dq8HO/JiwjXm4+Xiz3WTuNdH0GEK+Uzg+tUeLnC5+Flis/Ly/s+ysscn4+XD3x+RLg2vnbxvYZnc2XjuJqfBDbBcwQ2xT8L/BjPFdgMzxPYAs8X+An+RWBzvEBgS/yrwFY4WWBrX5SFvD0FLeQtelLgCl8hgSm+wgLv+4oIzPE9JfCBr6iFvHVPC3wNJwpbTxJWniysPEVYeaqw8o/CvknCvtOExacLK88QVp4prDzLsp0vr7BOPmGd/MI6BYR1woR1woV1QsI6EcI6kZZ1DCS8jfUmuvW9wWeQ9S1qhXuDfLw1w/kMt3yT9VZZQfl2WRGcX4yKAqI3w0SvhYuyjejrUda/ERbrxjzie88k9FGolfgu6x/3igx15EebhDrxsnaoMy/rhbrwsn4o1jrO7xCGhuD38Qf4Q9wQN8Bt1IY8UjWyP3EhXUgvPtNHwjiYBQvYPXaf5bAH3CdOVBPVSepkdYo6Vf1RTeL+cZW6Wl2jpqlr1XR1nZrBbjLCgCnMw7yMMp96W72j3lXvqffVHPWBhjSs/aDFayO0BG2kNkobrY3RxmqLtMXaEu03bam2TFuurdBStL3afu2gdljL1o5pJ7RT2hntnPZ/2DsXOJ+q9f8/+3uf8TX2d62193fvcQmNcZ3BGGMwJORuck9Iknvul0lCkiOnI5WkkiQkIUnuuZZESp2SVNJN6nQ6up6SX/F/1uf7nTFIqXTif07zaj3b+7v32s961tprPetZ+3K4yBdFvgoHw6FwQjgxXCQcDhcNJ4WLhSuHq4TTwunhquFq4erhjHCNcGa4ZjgrXCucHa4drhOuG84J1wvXD18SbhC+NNww3CjcOHxZUjipaFJSkkiSSSrpSNL3SUeTiieVSCrJFk1FxIUQZfHzzKIlj/YDPAN5hB/pGcmj+jjPOCqKO8GTEDsphoiIiVWNiPdJ75MkAk8ElpMMrAmsISvwXeA7snWcgKI6TkClEw8kfkQVdbSAqheZwuN8nSKP8wjfqMibPMK3KvJ2kbepNcb5XIzzl2Ocb4Nxvi3G+XYY59tjnO+Acb4jxvlOGOevwDjfucgxHuGvDJs8qvfEqD4Oo/qEJItH9Vu4nOupy9nU6G+rwT+knvJrKBHWJFgzAXYUsGNx2DEFJU9DybNQ8rYoeQf4M1fE4i3+RH9RPFXSgnZy2pBKFW7/p7biM7fHWNvR1y63lBaelrFVA67hgtl54sHEj06NYp6IYHJt2Hp1BzoV8ScV6JT/vImPW904bm0z4vuE/cUK6e1QwolrOP861Wtb3IbbsifQ3uig2yK3xO9472pkne2qgvmsfuImdu+Fjl9xvxJ7rkZraJj6jVg+cyt5zKE/yb1FM/mXmPfWuMBz1E8MR80Us6KZbtY0s8xaZrZZ26xj1jMbmY3Ny8wmZlOzmdncbGG2NHPN9mZX82rkOjqeUxbKoAryCv9kXnwcjmp10rGl+djkQscaZoOz2ivtlL08NAaRukV4Ckjvt4SZ6U/wJxCZPbQFzJ5mb7ZMX3MABcyB5iBKNIeYw1jbEeYIKmaOMm8g07zRvJEsc5x5E9nmzeZEcs1J5iQqbk42p1AJ83ZzJl1kzjIXUEVzIdszU9+rw6VtxefINXOZtjPbUyWzo9mRqphdzKsozbyarVXdnGpOpQxoWwWprgUvjeU//T6txfG7mS4UrfXb5C4UrT28X8cC7X00nv9WkH4jiH4zQvIFpr9+M6x+g6wRvxq05pG45lpnAzr7oXMCdC4CnZOgczHorKCzBZ0d6JwMnYubfzP/RqUKNJ8PzZdQDfNx1r92oXbQClfcBNLv/ll20hX3n9Llt7bgVrBhC/R/HmpTSPPfml+sf/Wi19f/akL6rfHOOcs35n/y3If902qUEs/31D3bFfTzbHVok4z30jTj7S7UgzqcE31OPcsJ3VJYu1Jn0O2ntdJ3ceSeIyud0Od8uDpan+M21rpQW0gp1BbOZO/Wp1nl51tQ6zO0oAvx+m59zq/EE9b34AmVE9fUuWm9p9bWub5yz1y7+h1KY/7D/tIJvTojnQiPYgpNpGmk35L+n/UoTmjT7jSdYnePnV86ac9rNV0onldh3fP9Lu03Xhh+16nar2XtN11A2p/aevx8xU9gv3clbYn36iUuwFL44q3owq8J/S6JC7cmdBwE7/Mw9bM5JyIN+k3DPvN28hXNZI21DxRbK0mGD+KNxRNAY0eY5uVcwvZmG6Rtdfqzx+j3tik+Rkcy9FEx2TYmC2vCVqxB/WgwjeQxTo91uAuY5sTf5rGaNsTe30F76C16jw7RZ/QVHaFjhs9INEzDNvSTpxWMdCPTqGM0MJoYrYx2Rmeju9HLGGAMNfKMscZEY4oxzZhhprDWKWY5TsuZqZymmuU5LW9W4LSCWZHTimYlTiuZlTmtzPb0mFXMNE7TzHRO082qnFY1q3FazazOaXUzg9MMswanNUyuMzOT7ezRERVOs8xanNYysznNNtlX0hEWTuuYdTmta+ZwmmPW47SeWZ/T+uYlnF5iNuC0gXkpp5eaDTltaDbitJHJXqq2Mafazh4d7+G0qdmM02Zmc06bc016dPyH05bcdjxmK247Hm5B7TA/bY/a68hpR7MLp13Mrpx2Nbtx2o3blMe8ituUh1vWVE6nFnqeOTaK6Ss5tu7369rmiXann2cL8JXRnTz+v+i0KI+kRphu4RqaacwxFhrLjNXGJmO7sdvYaxwwDhmHjW+NY56AJ8lje0p5Uj3pnixPfU8TT66n0294/jfVm+7N8tb3NvHmejt5u3v7eAd787zjvZO907wzvXO8C73LvKu9m7zbvbu9e70HvIe8h73feo/5Ar4kn+0r5Uv1pfuyfPV9TXy5vk6+7r4+vsG+PN9432TfNN9M3xzfQt8y32rfJt92327fXt8B3yHfYd+3vmP+gD/Jb/tL+VP96f4sf31/E3+uv5O/u7+Pf7A/zz/eP9k/zT/TP4etY8V7Fm1fA/atBPtWhn3TYN90tm8PykC/k4l+Jxv9Tg76nfrody5Fv9MQ/U5T9DvN0O+0RL/TGv1OLtfQTGqLfqcb+h32OX0OlzOFZVlfBV86yyq+DF82yyxfjq8hywZcep6f+1r42vg6seygn3Fm2d3XyzeAZT+2yUiWw32jfeNZjvVN9E1hOdk31Ted5Z1sqdksZ/nm+hayXOBb7FvOcplvpW89y7Vsv20sn/Ht8O1m+aLvVd8+lnt9+30fsHyPrfoZy099X/i+ZfmN76ifWB7z+/yJ5PWH2NaKpfA7/lIsS/jL+iuwTPVX8WewrMY1kMOyjr+BvwnLxv4Wfu6huEY6+Luw7Mz10otlT38//2CWA/3D/aNZ5vnH+nlc8E/g2uJrw3+b/07/TJYz/LP8c1nO8S/wL2a5yL/Mv5LlCv9a/yaWG/zP+Hew3O5/0f8qy1f8e/37Wb7lf89/iOVB/6f+L1ge9n/jP8ryiP9YwEfegCcQCiSxDAdEgGeFATtQIlCWZelAaqAKy0qBaoEslpmBOoEGLOsHGgdasGwWyA10YNku0DnQnWW3QM9AP5Z9AgMDw1kODeQFxrIcE5gQmMxyUuC2wJ0spwVmBGaxvC8wJ7CA5bzAosAylksDKwJrWa4ObAg8w3JLYHvgRZYvBF4J7GW5J/BW4D2WBwIHA5+y/CRwOPANy68CRwLHWP4Q9ARD5A0GguGgYGkG7WAJlsnB0sFUlinBSsFqLNODmcE6LLOD9YONWTYMNgvmsmwVbBfszLJTsFuwJ8sewT7BgSwHBIcG81iODI4JTmA5PjgpeBvLKcFpwRkspwfvC85hOTs4L7iI5cLg0uAKlsuDq4MbWK4PbgluZ7kt+ELwFZa7g3uCb7HcFzwQPMjyg+AnwcMsP9NPX7H8NvhDyEPeEIUCei07lBgyQzZLFUrWK6qhUqGUUCWWFULpoUyWGaHsUH2WOaGGIZ4lhpqEWoXasWwT6hTqxrJLqEeoD8teoQGhoSwHh0aGxrAcHRofmsRyYmhKaBrLqaHpoftYzgzNDs1jOTe0MLSU5eLQ8tBqlitD60NbWG4KbQu9wHJHaHdoD8tXQ/tCB1juD30Q+oTlodBnoa9YfhH6NvQDy6MJlBAgb4IvITHBZJmUoBKSWToJpRL4+k8om1Ahga//hCoJGQnZ3Cdxj63ToplIa+jxlPvwFE2Q1tBjK5NyIOVAUkFSQVJByoOUBykPUgGkAkgFkIogFUEqglQCqQRSCaQySGWQyiBVQKqAVAFJA0kDSQNJB0kHSQepClIVpCpINZBqINVAqoNUB6kOkgGSAZIBUgOkBkgNkEyQTJBMkJogNUFqgmSBZIFkgdQCqQVSCyQbJBskG6Q2SG2Q2iB1QOqA1AGpC1IXpC5IDkgOSA5IPZB6IPVA6oPUB6kPcgnIJSCXgDQAaQDSAORSkEtBLgVpCNIQpCFII5BGII1AGoM0BmkMchnIZSCXgTQBaQLSBKQpSFOQpiDNQJqBNANpDtIcpDlIC5AWIC1AWoK0BGkJ0gqkFUgrkFyQXJBckHYg7UDagbQHaQ/SHqQjSEeQjiBdQLqAdAHpCtIVpCtIN5BuIN1ArgK5CuQqkKtBrga5GqQHSA+QHiA9QXqC9AS5FuRakGtBeoH0AukF0hukN0hvkL4gfUH6gvQD6QfSD6Q/SH+Q/iADQAaADAAZCDIQZCDIIJBBIINAhoAMARkCMhRkKMhQkGEgw0CGgYwAGQEyAmQUyCiQUSB5IHkgeSDXg1wPcj3IaJDRIKNBbgC5AeQGkBtBbgS5EWQcyDiQcSDjQcaDjAe5CeQmkJtAbga5GeRmkIkgE0EmgkwCmQQyCWQyyGSQySC3gtwKcivIFJApIFNApoJMBZkKcjvI7SC3g0wDmQYyDeQOkDtA7gC5E+ROkDtB7gK5C+QukOkg00Gmg9wNcjfI3SAzQGaAzAC5B+QekHtAZoLMBJkJMgtkFsgskAdAHgB5AGQ2yGyQ2SAPgjwI8iDIHJA5IHNAHgJ5COQhkLkgc0HmgjwM8jDIwyDzQOaBzAOZDzIfZD7IApAFIAtAFoIsBFkI8ijIoyCPgiwCWQSyCOQxkMdAHgNZDLIYZDHIEpAlIEtAloIsBVkK8jjI4yCPgywDWQayDOQJkCdAngBZDrIcZDnIkyBPgjwJsgJkBcgKkKdAngJ5CmQlyEqQlSCrQFaBrAJZDbIaZDXIGpA1IGtA1oKsBVkLsg5kHcg6kPUg60HWgzwN8jTI0yAbQDaAbADZCLIRZCPIJpBNIJtANoNsBtkMsgVkC8gWkK0gW0F0qt9/WpqKUjXKpGzKwRPUzagVtaEO1Jm6UQ99lwjP7HN5vqdnzDpyoiPL+u0s2RR7GkO/rV+/H03fb6HfyB97wlqvO8TWrlr9ruhAa05bx2MEmPlzjhlkU0/qQwNpOJ7RnkiT6TaahrjMbJpLC2gRLaUVtJrWx7/MZZs9eC56rdnL7M2z0X7mAD0b5bnoUJ6J5pnXmzfwLHS8eZOef5p65Y9HBuTuwRk8OIsHT4PHVgb1iscUMvBlA+65+Nz6awv6/5mkv32qv3mqv3XqQZzIwP/6aSD28hE14tahY4+6v+C58wNIZyPq8SC252D7IWzPxfbD2J6H7fnYXoj0UaSLkD6GdCnSx7HnMmw/iXQF0qeQrkS6Culq7LkG22uRrkO6HulG8ppXsOR5otmZ5WbQLfoYyr9DUcdePGw5PoJbiIgx3Zb5SG6/fNxGbG/S2ydFW/oiyrdA17SOBB4/Tvlrb/qtOZMKrcA+/h9egW2FMg01l8V1mYfanBBf4/pPauNhC6Wwj0pme/bfLjK7sq9VGpGri39S0wXc5vSq08R4TOx81nUhX60+rmf9l3zea5tNPGtD75OvqZf7tfwoYyJ6yCIFR8ZWSQsf34n7Qy/XShv0obEczqzBr829M/fb+g7kZGqH/vlc56/vsvBTCfx1QO9/rs8QuzOvbDznk2tA/2tWQT3oN3jZGHF+SYcz51KHa0HXhoNR67fnk8PWjtk9GWPfb8+pLJfJw9atdIoFCltK/2vBr9x/fnz/BvES18HYfLZ6nuns5ya3fN0aFlgxB17D79XuXOWXr19jbnX5rb8+7gr5vRqeuxzzdSyNPjR/vDz5/pDC11kbtoi+fk601t9+30nhfE8//6V/0PlPz1dfBxWQa9n4M2CwjT8BezZC2hTp+JM8kEHx9Z7F8FGXaM8TubUgbWP9Vrw+8d76Cfq5O5JjfV3LeBkSoLH+BmtC/M7nE/c9x+55vpbTYvBItT86UI9gPH49aD5kzucxapG5lr0wL0YbfXXpESf3LLT4+fMF2eflUdN8zFxsLmEfMFbOifFy9vgDyvlLJdSaPRgvZ5d4OZv9jnKeWsIT+f/55ex7Tuuz73lbn/P/4Pqcf56Uc+A5rc+B5219LvqD63PReVLOvD+4nHnnSTlX/MHlXHGelLPfOb0++5231+fCP7g+F+KOUcF/+uu5jYngX/3657ySznBEi7hGAR1BMp82N5gbdbSJ9DP92pdsEvfnlv8hZ41FsLTd9N1G+hup2jcM6S3cb9Qtfo+Rw7OJV2kW/70IbZ48D+6E+W1P2zVAy7g23qpGmXncpubE29SK/+9Km3YWpbXJi6jZfedRWfOfX2x7weqfdoHrH7P/5Res/mkXuP4x+7e5YPVPu8D1vwxp+wtW/8YXuP5NzkJ/vd7mdXo41zj6++TeyIDIuIheqWSvxrnW0f6aJ9I/Mgix9URNImvclZHR1jBrlFqn1lg3aA9I7xG5ITIlcpu6Xt2i1qh1Vl3tjwX1GyiNyF8it8NKJagIe5nZeCNjC2pDnagPDcD7stmnFRHhEIlkUZxCIlWkwq/Sb9j24PlMD55A0z5yH0TU9Pc19PpqML6CO4luozuxdjqV/FhNnUVzaSHvNRfrpgsF+2IiKq7mNFlcge1rsN0Z2704LS6uxHZ38C7Y7oHtrti+FvvoYwWOkthfYU8L+9iiG6epOFdE9MSx3bHP1SA9sOc1yEH/6iBPG2eXODZKJ62Jis7xc0ukdqy+vG311xJ0fXlbeAd6Y09jp9OJb5Doeo19N4MiwyM3cg1N4jpQbiU3A08yeCI3JzvwkLPw1XZ1lscZkZt1XUU+jhwnci9zW5PrrnHXUFl4+NlYV9FXw+/P7eTyPPULOXkjV0V6RK5BieqcVKKzPVLrsTtyiPXIcRuzHqvd1fFS5fBf4VL93hx93P71Xya85HOT58nWWvmLtd89cjVsVQ33WaizOu6nz63bqCE88dzaFcpt1S/k5j/pN+474r9F3ZXuSryhyBPpKfyFetjS+NN5rz4Lm+TPQsrG/87uOL0qVTKyNrIusj7ydGRDZGNkU2RzZEtka+SZyLORbZHnItsjz0d2RHZGXojscmu4mW5NN8ut5Wa7td06bl3kqktEKG0iSqTiuQ6PjIiMjIyK5EWuj4zm/nJM5Ebe6y+RyZFbufx/jdwW+VtkauR2PqayW8VNc9Pdqm41t7qr1yo9rNMu1rUGn0PFegG1WW1U+ukzr3pcPaOeJY+xjd4VQ8RQMUwMFyPESDFK5InrxWixVqwT68XTYoPYKDaJzWKL2CqeEc+KbeI5sV08L3aIneIFsUu8KL3SJ/0yIIMyJBNkoiwiw7KoTJLFpCkjUkgplUyR5WSqLC8ryIqykqwsq8g0mS6rymqyusyQl8kmsqlsJpvLFrKlbCVby1x5uWwj28p2sr3sIDvKTnK0vEGOkTfKsXKcHC9vkhPkzXKivEfOlPfK++T9cpZ8VC6Sj8nF8lm5TT4nt8vn5Q65U74g/yE/lf+Un8l/ycPyc/mF/FJ+pTzKq3zKrwKqkWqsLlNNVFPVTDVXLVRL1Uq1VrnqctVGtVXtVHvVQXVUnVQXNVQNU8PVCDVSjVJ5PGZNUn9Rk9U8NV8tUI+ohepRtUg9phbzWLaWx7n1aovaqrbx/1vUXvWG2qfeVG+pt9V+9Y46oN5V76n31QfqQ3VQfaQOWclWcauEVdIqZV1klbbKWGWti60Uq5yVapW3KlgVrUpWFauqVc2qZWW7z7nb3efdne5L7t/d1903uWYvEr3FYB4JbxDcfsRL4gBdJC15MVWXNWRjaiCvkNdQO3mLnEJXyQfkHLpWLpErqK/cJffQEPm1/I5uUEGVTOPVFeoKmq66qmvobh6Xx9Asdau6g+aoJWoZPaqeVhtoCbehzRRrPcvUc+p1Wq4+Vt/RVquyVZletdKsdHrNqm5l0OvuBncTveHucHfQW+4L7gv0trvb3U373VfdV+kdd6+7lw5wC6xDs8R8sUA8IhaKR8Ui8ZhYLJaIpeJxsUw8IZaLJ8UK8ZRYKVaJ1WKN+FJ8Jb4W34h/i2/Fd+KI+F4cFf8nfhA/imPiuCRpSI8cJAfLIXKoHCaHyxFypBwl8+T18g55p7xLTpd3yxlyvlwgH5EL5dNyg9woN8nNcovcKp+R78r35PvyA/mhPCg/kofkx/IT+aM8Jo8rUoaqqqqp6ipD1VCZqqbKUrVUtqqt6qi6KkfVU/XVJaqBulQ1VFeq/mqAuk4NVIPUYDVE3aQmqJvVRHW/mqUeULPVg2qOekjNVQ+rp9RKtUqtthKsRKuIFbaKWklWMcu0IpawpKUsy7KtqOVYrlXTynKfcZ91t7kvuq+4e1z9XSsLNU6ocQu1XB61nIFazkYt56CWG6OWc1HL7VHLfVHL/VDLQ1DLI1DLY1GbE1CDd6EG70bdzUTd3Yu6uw91d7/217x4+k09Fa/HaeIOcae4S0wXd4sZ4h4xU9wr7hP3i1niATFbPCjmiIfEXPGwmCfeFe+J98UH4kNxUHwkDomPxSfiH+JT8U/xmfiXOCw+F1/InvJa2Uv2ln1kX9lP9pcD5HVyoPyrvE3+TU6Vt8tp8iE5Vz4s58mn5Eq5Sq6Wa+RauU6ul6/LvfINuU++Kd+Sb8v98h15QB6R38uj8v/kD6q4KqFKqlLqIlValVFl1cUqRZVTqaq8qqAqqkqqsqqi0lS66qx6qmtVL9Vb9VF9VT91oxqrxqnx6k51l5qu7lYz1D1qprpX3aeeUMutsWqFOqK+V0fV/6kf1I/qmDpukWVYHstr+Sy/FbCCVsiqYWW6m90t7lZ3l/uy+5r7xnlRj4Xe+sdl7s9jYOydf6kYDfU74zOtdjxuD7HaczrUYh9bDIv+QJ7og1Yn8CvAO4P/qHl83X0q7ls0sS1FQCRyOcOiGPnZtxWUwH6uRUXYT02moqKkKEMRcbFIIRv+vCPSRHVyRQ1Rk0qJWiKbyoi6IocuFvXFJVRONBXNqLxoKVpRRZErLqfKoh37yGnuEfcHqu8eS/YT1uDF8IJyxXRyCvyeNT/xe+yJ5tjbxfQ9kwaPj6NxnIdbQz8ivraHUAA+VNlCPtQ6vQfvO4xLOEKMxu8+nas12BqCf02n2N2bsbsV1v9pFvGIfihzYe30XQwzMBfKf6fG+aRf/psudYusctIvuja1b1iKUsiDN/l49JtiHNZeDHeeJo810NmE7c3Y3oDtjdjegu2tepvy3yk8NF6b+kuGxXhc5ZrnsbQTKR7X11AnHtnX0RU8Em6lzjy6H6KredzLoIk8Mtem26wcqyndbuVaV9L9Vl/O9RFrvrWElkTvjs6ilc56ZxdtcD53y9Fu9JpL4u2xVdyn1ufdwKl+d5+esV3h7Yxv3I3R3w+IdOM58wCeNQ+JDNUz7siEyCORhU435yrMi4YhxydOezp5Y/xX9p4L6jKVt9NEAyrN9dGLMt0jbPd28SOTC9r+JtRERCB/0bvAQslxC53+u149uRNtPH+PP++a7617NGnLKNdfsixOHllSliGfzJRZlCDryvoUlg1kQzJlY/aRJHugzUix59mGoux1dqDi7HN2olLs4TxHF6nn1Q4qrXap16gse3N7qbL256gKe3MHKZ09nJ1UCzM/m/+m4yr677TAyS1o80ktZMhpLej037UFSyAmNr3QPrH2+2fZUfc+f4Vfo70a7dPcx96M9mXmsh+j/VbttWqf9XH2VrWvukqsKeQjxDyEE75fzPPL9xOOs4egvQPtG+T7gCZ7f9rz034f+wva97P2WfutA9a71gfWh9ZB65D1ifUP61PrX9YX1pfW19Y31r+tb63vrR+t49wEvbbP9ttBO8FOtIvYSXbEFrayLdu2o3ayXcoubZexU+xydqpdwa5kV7ar2FXtDLuGXdPOsmvZ2XH/JOZtvsa+5hvuPne/+457wH3Xfc993/3A/dA9iLiE7ntL4bmDGf+rr/O+vmJPiehnJabgezF/3viuELXUcc9aLEPw43lOxp551bgf5mG/cXrcc/zzNPWJro7ptHHanUFLA2/Z0u91mfyn2vPMdow9M5Tvo275k3T0UMm4LzWbZzSKtZzHo8wCuZCS5SK5mEqqoqohjy/NVRf2sXqyf92P/ad+lGcfj06n0Y7HCRhhJ+QUMSJOUSfJsLhWIkbUkY5tuI7rlDRKOhc5pY2yDv8ZKU5FJ80o51R1qhuVnBpOppHm1HKyjapOHaeuUd2p71xi1HAaOo2Mms5lThOjltPcudKonRxITjRaJIeTpX57f4EfNeVPtpzUpSfSpSe/Lj0l6NJTEV16KqpLTxFderJ16cnRpSdXl55K6dJTGV16uliXnsrp0lN5XXqqqEtPlXXpKU2Xnurr0vNZdbvpFu8rGsRbjyVMIYUtiosSoqwoJzJElqgt6oh6ooFoLlqI1qKNaCuuFb1c/f2kMPvw/cUAMVAMEoML5tE8i9YxXlmDPQtiz+IQpTjPsFfcBB5EG5y3QaH2uvVXntfDFtazaJJeqdj7qcFz6RQ5mufS7eU9chb1wlx6gHxWvkDD1Ty1mMawFt/RLVYye/GrdXyNXrbGWDfS362brXn0WvTe6FH6txN2wsaVTjGnmNHFEY4wujpRxzG6OaWcUkZ3p4xTxrjaSXfSjR5OhpNhXOPUdLKMnk5tp7bRy8lxcozeTgPnUqOP09hpbPRzmjrNjP5OF6ercZ27091pDHJfd183Brtvum8ZQ5KLJBcxhhVqfw1+kyV4b9a6GGvLmrKeZVi/DK0Xa5WjtWFdWA+tRXIR2L1ZfA7S8DeezxC1MY++Xt1SSPvYE1bPFHh6eo6MngDXt4rv2anAZ3yW09KISA8XI2NxY+7Laql6qpFqqdoisjYYsdhRVnFES8ueiI1anawrrM48+2JtrLHxvOtjXlKtIPdwoWjjUh7nH+BxXEfdIvybH7HoXG4ZCwryiD11KrC22Bk5RsQ0RLfuhbfwpDqijllUKM7DPoCewRW08j2Uwj7zR3h/mSF7yoHIxZevtT6H4cG820M5Rmzetu0sz2PQNT8ZPV1VECk9ESfNj5DGop869hmLd34Yj3FWVZkFMc168SjmYHWTtlGBH/SUWoloJSxWKEbJPo99nT3QHmQPtofYQ+1h9nB7hD3SHmdPsCfak+zJ9q32FPuv9m32NPsO+y77bnuGfY89077XnmU/cAZrnWIjrOToFhq7q/I5/TvPbMrIilJ/XyfIOTTkK78xz11MzF3KILeyyC0D13ND7m22455Cn45UIzp2+rx1+/+81/PQez19dv2/ejof6yn2xub8Efx5eNF9xXVimBil43Tcp03j+uJ+ja14r7iXvHp9gPeZLR6igHhYzKdE3Ytx3S0VS6mYWCZWkqnXfthj1H2Eyza8i+ppG1J9tt8sulTbjxrCn7iMe8kj1Jft+AP1U8fUMbqO+8wEGshWLEp53GsVoxu453JpDFsxi0f+7+xsulWXjnbq0tEu+CIv6fLRy1zCg/T3+Ehi4t6Qxdhukt83n7K68bCYJx3pcr9UgnumsvJimS3ryJfkbvmKfFW+JvdgXeKt+JrED6qUKq3KqvJYceijxnHZYqsKurePtYVjP72KYI2wxqJOdrlvkF7RRW99Sp+pNdXPnM05D3X2kJ+9rkrsCVSxqlBEa00Ceiv2hN7E+r1B8wq1pR3nYRl8p49baD+N49YvW+DZ6G+reOCXEvxPTf3WXr6C+ep195+2/wun7a8t9ob1BlvsTett9k7esd7n2v7I+pYS9HVIxSn/iyP5eezS58Aq42q1VumIvofP+C0Rt+sDVCa+fyZGwCo4Qt97nah7UHGl6CK665kGz3/bOh3hwVV39B2G1eLrfPA7uE+7n/utH9leMa9gr/VPvqbCtmOn2XXsunaOfbl9pX2V3T3uH0yI+wCz7Sftjfar9gH76+hD0Uejy6NroluiO6J/j+6L67WB9TKNEGbWJSLDInplhT1DvWIjRnK/kcd+ZECsFS9yn/+l5L6F/cUMqiYHyYl0ibyD/f2O7OsspmvY13mG+rO38yENkx/JjyhPfiz/RdfLz+XnNF7fEUA3yR+VQTezD9SJJvO1NJCWse+TRyvY/5lMTyP6/6zaorbRNvYyr6Sd8F9fskZZo+llZ5OzlV5zn3OfJ30tppy5jRa0s19oZWhhb/zE1bypoG5f+q+1yoXeOubDS196yv0NPMLxaIZ7A9jDjo35xX7mToB9P9s6dv/XWsUbH/OaxSOHCZzzGu5De8rryZJ/lTOoMvdYD1Mtzs+lBvpIasvHbqP27NXsoU7s1+zDN708PBvkvl3P0Qu+G5pZYOGXsaYWizboqIKw5nPPmhx9ILqZBrtvc/969y/m8cpZ5WFgXKFC43kKSuZVxRXPeKx11iaqYL1gvUzpZzWqwhco0OHvfEwotsaNmkzkmsyjDNRhA9RbM6sf11urqIymUmvU2zVnOPsJDZvFbK+KqvT4PmWtbdZOqmAfjwpKd/Y7+3k29qPzIzVyo26UGrtXulfSZe5gdzC+fXE2voHWf2zcN3iVj4nEY4ysKCn2BJK5vkvKi8hmj6AMubKmzKJkmSPrUQmsfJXCylcZ2YFnjGUxY7zYasflTbEesR6hKtaj1qOUFv0q+jXru55LXQ0je/bvKFdsrqnvAdhWSO8/J66YULC6fTFbS3sxF8ODbgob9MfK9bDol1z6MVi5HofS3/G7Sh+bw+l7DLb/V5Y//+poiKsjxNcbb6nmfNUpXF1lnQPOAcpyjjvHqZbL/1G229XtSrXdoe5QqnOW10WTQj7za7/pPKzhKfc+nXRHm7XD2mntsV6PUtSIeqP+aEI0MVo0mhQtFjWjkaiIqqgVjbIBSkZLRctEy0YvjqZEy0VTo22ibaPtox2jV0a7RK+Kdo9eHe0RvSbaM9or2jvaN9o/Oig6ODosOjw6IjoyOiqad+J6Me4sVJ4/p71UZv9FjyNP8bhYSb4uP6E68giPf7lYr+isblQTqQ97ww/TYPWEWkET1BEeXyZhlrnQGmeNp8XWCmstLbW2WFvpKW1DWmXtsY/RGm1H4wO2pNc4yNb0Gx9pixqH2KbC+ERb0zjM9owaX7BNXeNLbVfjK7ZsqvGNtqlxlK3a3viBLdvR+FFb1zjG9u3pIW1ZT4Bt29cTYvv29yRoG3sS2cp5njD73e95RPT76FFPB/attnk68azmRU8392X3FU93Pcv39NDzYE9PHou+8/T6TW2p0FVvTP9fLV6wtajftVOBTtytv+ekKCrPDp3HnMXaW8FYSQUj9IyC/fWdjn1FX67z68R17JEOE8N4TjlKjCIvz90dRHOTyY/ROiDLy/IUlBVlRQrJarIaJSC+m4j4bjJG68qYdVeBd5RjdbA6UCurs9WZWls3W/MpF6P4MIziw7HKNOIn4r65hXyIPfFRYTBGhSifq7gsTkXZhyhNSTwqtOe+tqPVkS32QHQ2WRgbolzajZT8K+LPu34y/qzfZplRyLJF42sg+p583JHPPlh/a2D0weicU+zeg2fcb1j7rDcRAfyYZ9+fWYetzxED/AoRwO+sI9b31lFE/0I8My9qF7NNxP8kon+O7drJdnFE/iryrD3drmZXR+wvU0f+eKb+oD3HfshebC+1H+dZ+wp7pb3KXm2vsdfaT9sbeBa/yd5sb7F32S/Zu3lG/5r9ur3XfsPeZ79p77ff4Rn+u/Z79vv2Z/Zh+3P7a/sb+1v7O/uI/b191P6Rr5xYD5FJR7mHqHDWNrjm/7H3LXA2Ve3/a++zzxnmTLtzzr4PryQ/NDFJkiS5JUlGGPdbyswYjHEbGpekyS25hUpuuQzdkORWSZJ6vb2SCsk9CUkuJYT+z/ruNceZGXKJpv6f97M/57ues/Zeaz3r/qy1n/2sCF3jiaHp1GfHYU/1pH6G5u5ZVPvZVPdzjVf+dP75HsY9ZjXzXrOmWd9MMB82m5rNsKfxZ3P+Z1tNMawmzrVeiVpvKv4Xph7F342U5m9HqDxmUy/IHd7tncVF6K/CO0Vv64vtdudZW/KnG+HZjZRStDuOYqSMwxhZFWNkW2OjWZl1oDHpffYRH43YXj4CsYPYTz2E/dTDWBfxFSezTlgnwmsSbqErwLJyrdq68lUb1mvFsV67Geu1KghXFau2e7Bqq45VW41zIRHGQJhiCHMr1XNldhvCNEKYRIRp6uwmnvh6r5C7VsN74RDkrCKQsMqiFOKxhivP39VSLFzaqhDWr2jAcvQ3NwkOPhUcxIGD28FBbXBQhzj4mCWDg67gIA0cdPtTvHuwvmVY35ooHfcrL84VP4VvFLjbLGpuBmruBSrZE0YhSoO/SbyVas5it6HmelLNfcDGU819wZ6nmtvEXqCa28Ve/FM8yth3YFjzG6LOG0AiZuALa1DsR0RjJepgJVqDWuVyloB9hGZmZ/Ml1pr61Vn2rHPAOcTmOb84v+JruCvl65/c9nLX7tdXoV9eeQ6iLhKS11Yj1FYzMXqVwrsid/zZwt9hkPzXItSKRWo08W9A+Pc8/KuP0doYEbJMRMhvcoX08JA2tzHdOvw1Ss77cfebE7wXz9GUwpcj/E24+8WI+z7c/VLEfScuNKlILnwCO93zqTW+fZH97nvy7Hin5drz3k7zwO8kc5W27rYSrEfDe9+7rP1chrPbiTzyNwFFRR63okwMm+soSCF+apmsjzETwqN4zleh2/h9fnoU84ViQxVDd4TahtqF3NNXYyNWhdvdMrbdrzHb2on0hI9Sq0Sp1mTxsK+dMxPvQJo60ACWQ6jyNiwyaqM56h2ATzB+QlzuWHJOiLu8eHIsM8v6j0Zx6JqWwrfC/N0Gf7cSy8qSzMQQjwlMYTnfckhayTxxSfo7PEZ9n36Saq0I1c4IcMrPoa1JfMZhJFJYSeK9GPauzvF6pbHzOFJZzi7bTsK4S9WnuVTNHedMrD9fyjkn0BVD//KEUrSviFduNbUElZmH6qUy5dlDpVifNTFaut9S6EvC1OowtSzWIaoTvxumVoepZUYrvHVcItzVwuUWotzviXiLk0XqAfpXktxSlH6l2NhwvLHheGPD8bYR8bYR8bYR8fJWnPP9zESU6q4C1AydEHpVH69P4WPmecZuvj8DvSRWDiP4rRjBb8MIXgEj+O258jMV+dldYPkpFHopNCO0ILREH6tPovlh1Z/M11KRrxEFmi8uXyMP4D4E7m8C9yXBfSlwXwZ838x7kvaYlqx103poz2rP5aqfGQVcP9Ghw5qsLdZWaJu17dpubZ92WpcucT8wJw+rkIdvCywPsaGpobf0ifo09y1fhI6L+14nn34LZJOr07/GIe97ClBHe0po4Z/My+pcfeq7gts5v8I8UCk4K50PzzM+FFxeLm98kLUkrft52lVB8c/b1f7Qb5c4DnB+q4Xlsb2QruL0apcQuuC00HPz/D14LqtX/wfxvA88l9Nr/I15zq2tvR/t6lXINpf2NpmHrYOwB/A2eWZoNvWEObQe9GA9qGM9+C+sB+OxhiyPNeTtWENW/FPjIk+/eljO/uEy+zTfiXqUa2TTGrMPya154zt4BfGN0EZRfGO08cwbUT6uPZkfWd7vyC+/jA+hjEeFxlAZjwvNoDLmezk69nL+hb2ceOzflMf+ze3Yv6l4WemUQTo/8X0lWjXvoHRo3Uzrn2OaLPTQLjUmN9eHIVu5thpgeeMK4jiCsl2kLaeyfVdbxaIuK44qiOMohfHhrQ+jVf4JpvN1PjNonS8xh781YUX5WxPX2tBl8ncMNVuUvxnWy+s1mXYFcfyM1ZxrZQI2Qy4rDvfLgV+wIl14WSHdfn8cI9Vig1tzU3KF7Wf0YyGE0vKl9yvSe5Pl3jGWYV3t3NuiEwU2Q0o6b22ynWwvYyxWj7VYY7xxWEolwKX6shEceojDx2j0le1WrJ1zgkbHZQUmmXhC2aFs4oXzLYHvJiI3+Uv3ZAGW7sxLKt2T/5DSnSlKd3xE6Z4qsNL16HO59adLKuFT/5AShu19qZKQoAu2hGVWNDQ2NJZS5bxKoZ2hnST5HA0dxfuUDkzRumpdmVcbrg2neWO0NppkgWnaNFZIm6nNJJnlLe0tFq29o73D/NpJ7SSL0c5qZ9l1ehG9CFP1W/Vb2fV6c70FC+gd9A4sxPe3mKb30/vRbP2E/gQz9Pk0cpp8T5k5sGdS1Ohv9CdJrp3djt2AsiuOsuPvrmW0Bap7qcHfvO7/iaWa+33ob4TeUDbx25X4HI03bHW0JiQ38He010PmC+Tbfz/NWzjPMysMy3ARduFIZs15url4mn81eSOVVDaV0NGclKgkZlIJvEM5P4u3D5TT8BuI+foC/U33LS3PF+VqAOXIna2L0WxdnHLixZwdwGwdDKfZQKR5lq9LriRNYYfHI2Z4ruF5I6ymcmupr7PFbCVby75kW9hOWlkeJEnrBDsrKVK0FJBMqahUQiojxUsVpSpSNammVEeqLzWSmkot/3wJWKVRAuvZRpK2N7KtbDetuLiE7OIhkqkU+p2iivExRZKlQpIq6UQJvogqJpWU4qTyNCqVlSoQVpAqE1aWaGVM3NYmrC3VI6wnNSRsKDUlbCq1JmwtdSDsIKUQpkhphGlSL8JeUiZhpjSIcJA0hHCINJJwpDQOWlCSRPOLNJF8XpCmEk6VZtF//qO2I821/0ut8gab5G/jVnsV1yG2PyZMtD8l+WyWvQ53D+PuetBHQH8O+ijoDxHqE4TaAP9j8F8N/3/D/wv4/wz/j+C/Fv5fwv8X+K+B/3/g/xX8j8N/I+hfQW8CfQL0ZtAnQX8N+hToLaB/A/0N6NOgt4I+A3o76N9B/8hpxw/6EOgY0DtBS6B3g/aA3gPaC/o70D7Qe0FHgd4PuhCnnWhgKaT4PfAA8CBwF56UEepb0ErE89uA+ziif/HTWOfCatYK9LHfC2zcVWzJljDnDmCS/YT9HLMxzpXj45c92h5N98bz+dgp49zMSkOu4P8Z/pdCbkzkhmsWzeW5kdhF4i2IHYvz54Zz7+rWg22Jujy73p5oP2+/YE+yp9rT7On2DPs1+w17vv2mvcheYsO+Gyxy5WjXh60X4Yts2V7k8LUwPZNX41zicuJfpXHOOdlKveSc/viKCC4Kpq0VguY0g+b09dCcvh15SYTmdBtoxyVBc7oTctEvIhfn9MBX/qPzwXnnlgVcDZaLrbdp9rS32787TrgtTRK5V9jfReM6kscc3euYMJcFVUfGBbV2ub5uc2i7tIe+bg/ovGRA5+UF6OtOhr7uVOjrzjY2mmfZHK4xK62HxmwIGrM6NGZjoTFbFBqzxaAxWxwasyVylco5bWb1f+WSp7XwHe9SolS8LL9OsMQC9k/2EfuY/Yv9q33S/s0+Y591JEd2vE6UU8iJdvzhvjEqHA/F/JfpDc9gDajHH2fp0LnMuESOed4b0rMDI/JelOaGJOLbtYPT2bWEQ2ONSbNFEZolimk3aMVdzUyuT0yp0rhvnbYuXyv0UjmkOV2qGsHhH+vXPnVx6yO0/rjWusd3mVXM6mYNs5bZ2Ew0m5ttzfZmB/NR8zGzo5lkdjJTr7l28qWVr6vBfJBKOPaSS7jlH2gw//+js3zJPV7aI0rOR/h9+GvhnO9Cd8BSNLcTzS1E/xQ6Ass2OXZtJO0xrZu2SdulF9fL6RX1Gmi13K7GmzlazflacOE8NmxyrGr0Nz4wPvwbtOzOsKLTC9Zzhue3mnOtW75V1rrLqm49RLPCdOtla4Y105plzbayrTnWXOsV61XrNet16w1rnjXfWmC9aS203rIWWW9bi60l1lJrmbXcesd613rPWmG9D33ywvZh+5R9mmYL5ngcxfE5hbETOJC/L5XbR9T9W3nrPqIuL70O/1d/F6kVKulu57cdRf3Htf0UYfnpglafLlZOV2wV6qL5sy8hhxdoddTm+P7p+nCrk5lFo/FzJGNMDE0kCW56aDreFG6n0e6EdpoF9SJ6PDNJRk9hcSRdDWS30Xg9ht1BY/Y4VomP2+xOGrlPsrv0M/oZxjWB72V30+hbk1WnEbg+q0GjcAKrSSPxw6wWH41ZbRqPW7A6NCa3YffjC9K6JHudZK0ve4y9UC7LQBehS0TfKpRji4fknub4jonbW8s9D/F1SLJoARFz0oXnlAtykMv6pBRVgNqag0Lv68/g3VlungoVGE96aEjo2dBHoU+1FlprLVMboA3VXtTWaV9qB7Wj2q+6Tx+mz3TedT7Kx3PhAtRCHB76RH9Wn6sf13/l++bORlrZ5uUvugC1oYaFPs7Hj7/g2p3WSuvvvOesIelmLdst15cbyc3ltnIHOUVOk3vJ/eXB8jB5lDxeniTPkOfKC+Sl8gp5tbxW3iBvlrfLe+R98iH5Z/mUR/YU8qge3RPrKe4p44n3VPJU89T21PM09DT3tPV08KR40j0Znv6ewZ5hnlGeiZ7JnumebM88zyLPcs9KzxrPp54vPVs82z17PAc8Rz0nPKcVWSmkBBRdiVWKK6WUskoFpbJSTamp1FUaKE2Ulkp7JUlJUzKUgcoQZZQyTnlBmarMUl5VFiiLlXeVlcoa5VNlg7JZ2a7sUQ4qPyunvYo3xhvwmt6i3hLeMt54b0VvZW81b21vPW9Db1Nva28Hb6o3zdvL29872DvCO847yTvdO9f7unehd7l3pfcT73rvZu927x7vAe9h73HvKR/zHvf5fDG+kM/2FfOV9MX5Kviq+Kr76vjq+xr5mvta+zoQpvjSfL18mb5BviG+kb7xKIsMtxx8k30zfHN9r/sW+pb6VvhW+9b61vs2+3b69vkO+074zkYpUYWi1Cg9KjaqeFSpqLJRFaOqRtWOqh/VJKp11GNRqVE9ojKpdCdTyZ0g3udGDYoaxs6d18G/ZjJwLkectl/7lVXUZT2W1dJr6U1Za5zLka6n6xmsD87lGAjdpqE4l2MMdopeNl433mQLrT7WOLYUZ3R86dpDwUkdW5z/OuvYN87nOC3nK2cj24F9pF1MdhrY44EpQFoTOw1AZQE7AacyD3/Cfhv/ugCnA/sCZwBfxlOdRXzTRBjXTbanwPcN4CDga7gzAM8nCEwBci4SQGUBewI5FwmCiwRwkQAuEsBFArhIABcJgosEpJ4guEgQXCSAiwRwkQAuEgQXTexkSrkJqPHkT/+Ff2/gdGBf4ATgNDzVG08lInQiKB46UYROROhEhE5E6ESETkToRBG6KeVdcpqCSgb2prvki7vNcLcZqGQgv9sMdyWnOfk0t7sDM4HTgSlAHr6FnQqcTk+3ADUa2B3YBzgNOBw4lGInpKdct5dwpwh3qnD7UHwtKURLxNQSqbdE6i2Rekuk3gqpt0LqrUCNBnYH9gFOAw4H8tRbidRbidRbidRbidRbidRJwnE62E8CuwN5abcGD63tZ4Aj6bk2RD2K5x7Fc4/iuTb2HOAzwJGEbal8PRxRsm3hkyV83sa/zuLfBLjd7KeFy+Nuh9DtROh28MkSPm/jX2fxbwJcN3Q7Ebq9vQQ4ADgYmALkPaI9qAnAgcBBwKnA6cAxwLHAZRQzxYWU2iNF2XkEKTyCFB5BCo8ghUeQwiOg3OcGAgcBZwPnAMcAxwJ5Co+IFB4RKXREXXdEXXcENRrYHdgHOA04HMjruqOo646irjuKuu4o6roj6lp2khB3EuJOAjUa2B3oPjENOBzI404ScSeJuJNE3Eki7iTETSNRrI5ey12MbbEGHxmEb4LwTYBv+1jLzTNc/sVnCZwNmsb6skHQ+JnMZrHX2SL2LluFd9lb2V52mJ2QSEqUApItFZNKSfFSJam6VFdqIDWV2kpJUjo0A/iZTQx2pv2wM12UUm3oTKfUGtqdyVXIpdYlfKYLn84RVM69NOF2Eu4Q4Y4T7mCH5+hhh4+YD1PcL1P4hxG36zNd+HSOoHLupQm3k3CHCHeccAeTKzuNkFIjO1m4E4Tr5qNROB+NwL3sNMa/xuL5xuL5xuL5xuHnG+P5/8lB/5ODrp4c5M7VyRgNkzEaJoPKAnYC8vEiWUggyZBAkjEqJGNWT4YEkgwJJFlIIMmY45OFBJIsJJBkSCDJGF2TIYEkCwkkRWAKkHPhUlnAnkDORYrgIgVcpICLFHCRAi5SwEWK4MJNPcXOcV0uUsBFCrhIARcpgotOkGQ6geKjXychyXTCnNkJqXVCap0w5ndCvJ2EJJOK0KmgeOhUEToVoVMROhWhUxE6FaFTRejOkHQ6g0oGckmns5CDuuBuF1DJQH63i5CDupJPV8wGXSGJdEVaXVGaXRE+DTNIGmaQNFCjgd2BfYDTgMOBfAZJEzNImphB0sQMkiZmkDQhiXSjEN0QUzek3g2pd0Pq3ZB6OlJPR+rpoEYDuwP7AKcBhwN56uki9XSRerpIPV2kni5S53H0gRTRx3ZpXtrdwUN3yDfdIQf1IKovnuuL5/riuR6Y3XvguR6Qg3pCkukpJJme8MkSPm/jX2fxbwJcV5LpKSSZXgjdS4TuBZ8s4fM2/nUW/ybAdUP3EqF7Q0rpDSmlN6SU3ijF3ugRvUFNAA4EDgJOBU4HjgGOBXIppbeQUnoLKSUDKWQghQykkIEUMpBCBij3uYHAQcDZwDnAMcCxQJ5ChkghQ6SQibrORF1nghoN7A7sA5wGHA7kdZ0p6jpT1HWmqOtMUdeZQg7qh7j7Ie5+oEYDuwPdJ6YBhwN53P1E3P1E3P1E3P1E3P2EHJQsJJ5kIfEkQ+JJEb4pwjcFvr2FHJTxl8lB2UIOyg7LQdlCDsoOy0HZYTkoW8hB2UIOyhZyULaQg7KFHJTNuBw0R8hBc8Jy0BwhB80Jy0FzwnLQHCEHzRFy0BwhB80RctAcIQfx1tIIKXE5KFvIQdlCDsoOy0HZQg7ivDTGv8bi+cbi+cbi+cbh5xvj+dx6Y66mVczfUm8st4YYPwWjpNPfGeAMdJ5wBjlPOoOdp5ws52lniDPUGeYMd0Y4zzgjnWedUc5oZ4wz1hnnPOeMdyY4E53nnRecF51JzkvOZGeps8yZgtg/tQ9R7KWcUuwmoVETF9aoUSJ1mqG3u8w5EWuhpCTiYkpYbysg9vquy3WH7/OnI0b3rnpBPWn/hU5HpJLxsUZ2IbsEa27fbFdlPe1qFHIouJmNUjnBeeLWq6gVPO+8hLptHrH/qF71+PPm6/prnC8q0Xy5uv4qx543T4FrXlcDnCfz5Spw1ePPm6/gNc5XNPXILOqFIyN7YL58Bq95ennzHbrG+Y4SI9IwGm0mO1Py5Th0DVPKm1ftGuc1hsZcd8QdTqPtsxhdMbbmy7X2F6T5d58T9D+cE4wCmROMaz4nmAUwJ5jXeE6wCmROsK75nGD/LeYE+y+fE5wCnhOcv3BOiP3bzAmxf1GaERbnpCK89dNqdTi5Pnubfdbp6CQ5mbQS5mO1wprQGrQB49+D6cy1wXgh/uQwf83AXw/wNwSliVP7hJU2bm9G0rlNQMn4QaRSlJWh9VYJwVPRP3ja/bo9h/t/MfdEbYkV4naA+TmD9jv2e/b79gci5pqsEqsLi3cu/xc7bZ3Hd5SdsybXj+XYz+OxlSAuy+RY/5OK/eHTUVRqSVTWLVkPKsMuLOcbRglt8M+UIyz2CTt36cAlKJ8WIt0SLJ54LMGqEK/CCq10g0j54uE1toBlsYmsAptBvx5sBBvI+rIxbHLEv7mw81b5KuXHteG3E+V4H7BrBIeuJb+ngDPAJ2+NMtdo4//M9wTXfVl91pbym0q/KlSTdVh16l2PRfxLp/tuaRSPKI2rkbrK0th0Ku1x9OvFMtkLbAhRI1kK0YPoufirU1IaeNKGA98CT50i+EMt6mvyc2nvFlxWIo7iqEXGUY+oiZ4dRz28PNF1RcnceK5k/mRqGrWUxdRm+DdrWdR+5qEFzUAbcineqq5mO+p4Aa47XAHvdYj7itRiKlKras4y0I5S0ZJciretnNZUIqI1XT0e3BMp3C/xJQPhjUfzSNA3iXsyjYqFje5GD6On0cvobWQYfYy+xuOMf+/cR++rP65n6k/pWfrT+hDjbhEHl76LuvZNJD56uSfE8vRDQG7N1OfjXMrB2cFsMXPykbSSSP3/+HjqOej5hbFgj2A/Fh0cFhzBdCfOqcAsZ5GzCFZBpeBsYHb4G51q4Tq/kjj46fb8qs649ZgrjcVLI7N78XN1q15xPNw6a85Vm0nC9umVxMRQsjllzKRSlxhDNmqrtYihckQZX2kcVXKV8ZXGUjVPGV9pPNXylfHlx8S5KUK9uD8bzIbh6/hJ4vv4hWwpW8FWs7X4Uj3nK3XxXboUI/G+UITkwyR8L+R+M7JLM7WS2u3afdo72lfaCXwDP1Rfoq8xGhoPG4lGqhljbrD4V7we51Umh5KAKcBOwHRgD2BP4C5nHpM103mdsKTzBuHtoO8DvgP8ynmN8ARHvQMPpSM2fSgPqy/hz+hrOBoNub/xMDCR3zVSOW3GADdwtErTk1yS8tEYEEfjcRWqpXq8z4eOhI7xb/6dtk5PyvkRZ54zn9xjrqt1EG5X16Wn5jkL+Nsqct9kOTZm+e65bDQzuA5yIcYl0rcojvIh3VnIlJBpN4T9Xh9Gzkekw9Iv0inpd9kr++WAbMixcgm5jKeut4P3MW+SN8Xbw9vLm6EWV0uoJdVSahk1Ti2rxqvl1dvVO9Q71bvUu9V71HvVGmot9X61jfqo2lFNVruoaWq62kvNUPuqA9VBapY6VB2ujlRHqWPV59QJ6vPqi+pL6hR1mvqyOlOdrc5RX1FfU99QF6gL1UXqYnWpulx9T12prlJXq2vUT9S16qfqOnW9ukH9Ut2obla3qNvVg+pP6hH1mPoL41bKvVKSV1N/850tdC/lyiu1kToqS3xnClUL51SWOvm+wb93+X8Plwp9vx/n+yBKMaU02jvXeacn5bvl1hH/HpBTKfTP7Fe5vHyHXJnu1iK/BPlhuancQm4tPyanyunRzaMH0P3zXtHP5b4oltxX5fxX9JLcF6V6/qtWnqsO8Zb7Ssh/RR/OfVFeLnD5h+W+KM+5rxbnu/xv5L6olHJfbXGd+/9YniuZrtQLXOnnu/xnc18xgTyXk+cqkfsS+XP5RQxU+/HybfJttHSpJFdiknyXfBe1hqpyVeaRa8u1mSLXk+sxr9xQbsh8ciO5EYuSm8nNWCG5pdySFZbbyG1YtNxR7sj8cme5M4uRu8vd2XXRLaJbMDV6YPRAdn300OhxLBA9PvolVjR6dvRiVjJ6afT7rFL0v6N/YtWij0SfYB39/fxDWVf/cP8Ylumf5H+dDfbP87/NJvjf93/Npvi3+bexpf4d/h1smX+Xfxdb7v/W/y17x/+d/zv2rv97//fsPf9+/362wv+D/wf2vv9H/49spf8n/0/sA/8R/xG2yn/Mf4Z96P89xsfWxQRjbLYxJjbmRrY95qaYOLZXLaz62SH1ejXIjqi2Ggt7bHxEb5Tvap7vapvvonE5enL0LMaiV0Z/wgpHn/TjHHnqJXcTVgYmEPLeByvjgb6grwfNraL7vL6wzBcx3gXSA/PEeBcdmE//6wcWcBR+XJ6TvIUJlcD95H8/49byY2jkrU7yZn1w35bky1SSO/lcRaNmoGTg5kB84I5ApcCdgcqBuwJVAvcEGgdaUeiS191GeDMwHngHsBLwTmBl4F3AKsB7gI2BrQi5hTsV8n8DWgm0xBvnLiSj9yX5N0tYM1PPy0WtQL2rwEktYL28XEkx7ClplDRemiRNl7Kl16WF0lJphbRaWiutlzZKW6Xd0j7pkPSzdEpmsk+OkUOyLReTS8pxVIuVqH/UlOvKDeQm1Avay0lyF7mH3FceKGfJI+Qx8kR5MrTZ5smL5OXySnmN/GlYn+2AfFg+Lp/Opc9WylPWU8FTOazR1tTTGlpcaZ5enkzPIM8Qz0jPOM8LnqmeWZ5XPQs8iz3velZ5PvGsg07bTs9eklS4TttZRVGilYBiKkWVEkoZJV6pqFRRqit1lPpKI6W50lZ5TElV0pUMpb8yWBmmjFLGK3wX3/AWplbDqBaoJQUaBGjVFmgUaMxuCSQGElm5QMtAGxYfaBdozyoEOgQ6soqB5EAqqxzoEujKqga6BbqzaoGegZ6sRqB34HFWM9Av0I/dHxgQeILVDTwZGMweDGQFsthDgSGBYaxBYGRgIns4MCkwi7UOZAc+YMlM9ha+rjzqmeP/AUsBSwPLAG8GxgFvAZYFlgPGA28FlgfeBqwAvB1YEXgHsBLwTmBl4F3AKsC7gVWB9wCrAe8FVgfWANYE1gLWBt4HrAO8H1gX+ACwHvBBYH1gA2AjYGNgIrAlsBWwNbANsB2wPbAD8FHgY8COwGRgCrATMBXYBdgV2A2YDuwO7AnsDcwA9gH2BT4O7AccABwIfAL4JHAwMAs4BDgUOAw4EvgscBRwNHAMcCxwHPA54HjgBOBE4CTgS8DJwCnAqcBpwOnAl4EzgDOBs4DZwDnAucBXgK8CXwO+DnwDOA84H7gA+CZwIfAt4CLg28DFwCXApcBlwOXAd4DvAt8DrgC+D1wJ/IAjjZWlg8eDvwZPBE8GTwV/C54OngmeDf4e/D64L7g/eCD4Q/Bg8MfgoeBPwcNhvyPBo8Fjrp9zn1PHud+p6zzg1HMedOo7D/E3aLlWNFnBZ8WKpphIb1twe3BHcGdwV3B38NvgnuB3wb3BdcHPguuDnwc3BL8Ifhn8KrgxuCnstzn4dXCL6+dUde5xqjn3OtWdGk5Np5ZT+w/T46fXlBaz0MVXTDl+7srJ9Quvn6CXVFKK++P8heTgNuB24A7gTuAu4G7gt8A9wO+Ae4HrgJ8B1wM/B24AfgH8EvgVcCNwE3Az8GvgFo5OVeA9wGrAe4HVgTWANYG1gLULoLxo9Qv8EXgI+BPwMPAI8CjwGPBn4C8cgz2APYG9gL2BGcA+wL7Ax4GZwH7AYcDhwBEcnTjgLcCywHLAeOCtwPLA24DchpV7Foq7/+QJtgm2Dz5C91iwDaEn2J5QIZ9c0hVfZ+dIV0YiXz8bLTgKKSoeO735Jal8dp2NNK4XaUBPlbA3j5nr4RE+AxxJ/tCdNKCBSsifgaYu4TNAbiPJZoVZmXzp8vO0uoW6MxbqGerLd82MLrYEHMC5tV8B3R/4BHywF8B1I8lnDHAsxcItoXU2+ApRDqUglz58NSzpr0XKk/p8Lk+SnxzsjtXkGex8gPbwtaO7J+mTT4Lmp5lNZg/asu2xFdtr++xCdmE72vZzC2HcPpit2bpt2Kbt2LF2Ebuo/S9uI8wuYd9sx9m32GXtcvatdnn7Nm4hjNsH49bBuG0wbhmM2wWzH7Dr2Q/a9e2H7AZ2gt3QfthuZDe2m9iJdlO7md3cbhHri42KLRRbODY6Nib2ulg19vrYQGwwNhSrFZieXXlmXOrZPjjZx7jUE4OcM25NUuk2QU0GQ21QS3dg57Y/vgUPXtySAz0dvLjdF4pNZQrs1Ry1uNVoBWcN3qyVj2wxvA0Eu6Ml8Ke5jRtxemXON+h0ZxyrE7bUsMX4xthqbDO2GzuMncYuY3eecxxfNV4zXjfeMOYZ840FxpvGQuMtY5HxtrHYWGIsNZYZy413jHeN94wVxvvGSuNbY4/xnbHX+MD43thn7DcOwAbEjxFWII4ZP8MSxCrjQ2ersw3nrUusTtj6xIuhSaGXQpNDU0JTQ9NCL4dmaLbmUE6LUl5LaDdplbUq2n+1ddp6bYP2hfaltknbrG3RtmrbtO3aab2YXlwvoZfWy+rl9CR9gD6WynOCKFGcf4JylSJKlp+Ewu1X9DT6O+87K53/OJuwB+/FWU7xrBJ2W71UXlupbL51tjKPsTHYnfqgx9gq3N3C/dZ1HdefW7T/F+vA0lgmG0JlPpW9yhazVWwd28L2sqPsrBQtmVIJKV6qItWRGkltpVQpQxpMK6NJtCpybYlvMjYxRrX0DbWnbcYuplDpHmeFqdy20wqZ7vOUkJrX+DqC3hJBfxNBb4ugt0fQOyLonRH0rgj6uwh6bwT9fQS9L4LeH0EfiKB/iKAPRtA/RtCHIuifIujDEfSRCPpoBH0sgv45gv4lgj5+jnYiysQ5VybcemtJmme4jnYGrZeH0Lw/keowm82jWlzB1lA9bmTbqSYPseNUlz5JpdrM0dKuRjWao6WdJmXweYNa0HHGqM1vZzdGtKFNwt0s3K+Fu0W43+Rpa9uEu124O4S7U7i7zt8mjT3C/U64e4X7vXD3CXe/cA8I9wfhHhTuj8I9JNyfhHtYuEeEe1S4x4T7s3B/Ee7xXH3F44h8uTVApZ9E4/ZatoH6ym52gHrLKUmm/hKSYqnHxEkVqM/UlOpRr2kpdaB+00PKpJ4zQhpHfWeG9Kq0UFourZLWShukLdJu6YB0VDoly3I0CXR89zlOriBXkfl7i/LivEJYZMFZg398ymDuMwYjTxh8z9zATxkMnyy40vrE+tzazDyhUW7OQqOFO0a4M4U7S7izXVcX9/UXhXtSuGeEe1aUYLRwVeFeL9yNeWruV9c1Y4RrC7eccKsI927hVhVugnBbCLeNcNsKt7Nwuwi3q3AHCXeEcEX+TZF/c7Jw3xTue8LdIFzRsk3Rcqxpwp0j3AXCXSLclcL9RLifC9ftUdCTzLE7ZPxmnDbOGGeN301mSqZsekzF9Jo+WCMqbEabftgkUiOsEummwS0TOTucnc4uajElLzxThWebi8w1mGc2uZyFLfkUNf9lFjNvMIubN5olzJvMkub/maXM0rDvE2feYpaFlZ9bI+z83GFW4rZ+nN3Ot84ecJZjtWteaH5oQejN0MLQW6FFocWhJfokfYo+VZ9mFBanfnGLQqEIm0L8/C9+9tcq50Oc/lWWacaTxmDjKSPLeNoYYgw1hhnDjRHGM8ZI41ljlDHaGGOMNcY5W/jI5p7UAuvcIUiy7/H3GrCZw4hKYxXN32FDU7Y8lmJ5LZ8VZRWCNU2/FZPLoqYGm5qmZVm25VixVhGrKKxr3mAVj7Swaaw2PjLWGB/DQud643Njg/EFt9TJd3/1IvyUdZJMVrAyxlrjM5rDZVqx3W/1sfpaj1uZVj+rvzXAGmg9YQ2ynrQGW09ZWVZpq4x1sxVn3WKVtcpZ8datVnnrNquCdbtV0brDqmTdaVW27rKqUHz/MT41/musMz6LTNdKgM3PRlZjq4mVaDW1mlnNYf2zldU60gIodLBspyP/zokV1q/j55aA0xKUo3+zMrBHFG9vtbeymvYZ+wyr5VAxsNpOC6cFu89Jc9JoJSLTOvRu626rqnWPVc2616pu1bBqWrWs2tZ9Vh3rfquu9YBVz3rQqm89ZDWwnraGWEOtYdZwa4T1jDXSetYaZY22xlhjrXHWo7BImmQlWylWJyvV6mx1gW3SblZ6pH1Se4fDnFgniX9BdQWn2LuS6HPWeGuCxTVCzp2H7d553nrBetGaxCLPMpGlE+xk+GRXbv2IW/2qadYya5v3mXXM+8265gNmPfNBs775kNngvPauepsZZh+zr/m4mWn2M/ubA8yB5hM0gjc0HzYbmY3NJmYibCkNMp80B5tPmVnm08I2VnMa5VuarczWGOvbme3NRyKsjCWbKbCe9Yw50nwW4/8Yc6w5LsKO1gvmi7BFFmlvbLr5sjnDnGnOMmeb2eYcc675ivmq+RqskM0z55sLYIvsrQhrZMvM5bkskn1grjI/NFebH5lrzI/NT8x/m2vN/5ifwk7ZZ+Z683NYK/sywl7ZFvObXDbLdpvfmnvM78y95vfmPnO/ecD8wTxo/ghLX4fNI+ZR2Pv6JcLi12/maVj9Wml9YK2yPrRWWx9Za6yPaW77t7XW+o/1qfVfa531mbWe5roN1hfWl9ZX1kZrk7XZ+traYn3z/9i795g4EgS/40Uvw7IsyzLQZrqr36/q9/v9frHEAcIRjuMI4ThCLA/n9RDiZTjkMCxLEGEti8GkBiEfVV3LshzhOEK8LOd4LMeyLGRZFrJ8DmdZhCWWQxyHczjOISzhuFT/3LMzuxkpykXKrhL/4W9R3dVV7e5PNV1NddV7m+/9u/e23vvpe9vi/yDeEf9H8Uvxfxbvil+I/1z8n8SvxP9FvCf+C/G++C/Fr8X/VXwg/m/E//m5lG8QLf8bGv7n5/5//cx+8Shpf+NHNPdI/Dn/KHz2P/+bnwX67f/5/4f/82efl4nwWUP2XN2Cd7vKKNT/y5+65c7I/cUp+OIc3Z9/VuAlBCICZ7Z+s6fI5593/fK5rLPTkagnd5ts29DfRdt/+f6J1Nm+28Vfq+abfV/wDpZq/fLl/cL5lAXC3TIJ37/K9lQJqsi24nfQsbLsvs3TRM3nn6nmOfjtrgi/VZD9fmwjv13Qzm97nee3DPryBvKG+W2D8bzJvGl+62A+bylvhd8+uJ23lveA30J4kreV95zfRtjLO8g75rcSCgUlAiG/naAUUAILv6UQEMQElYJqQb2gSdD686NnXBQMCkYElwUTgikBK5gVLAiWBauCm4I7gnuC9V/VZ11lBdnvjJd9FS1Ev4YWocXoN9AS9Jvou2gZKkRPoe+hIlSMkqgMlaMKVImqUA2qRSnUitpQO+pAnagb9aBe1I8G0DAaQWNoHP1b6Gm0Bq1F69DfQBvQ30Qb0d9Cm9DfRpvRv4e2oH8fbUV/B21DfxdtR/8B2oFv6B+iP0OP0P+OHqMn6F9nSxJoHipAv4Lmo+/wfWv6y0zTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNA3TNEzTME3DNP3W9JeaZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWkGphmYZmCagWnmrekvNZ2B6QxMZ2A6A9MZmM7AdAamMzCdgekMTGdgOgPTGZjOwHQGpjMwnYHpDExnYDoD0xmYzsB0BqYzMJ2B6QxMZ2A6A9MZmM7AdAamMzCdgekMTGdgOgPTGZjOwHQGpjMwnYHpDExnYDoD0xmYzsB0BqYzMJ2B6QxMZ2A6A9MZmM7AdAamMzCdgekMTGdgOgPTGZjOwHQGpjMwnYHpDExnYDoD0xmYzsB0BqYzMJ2B6QxMZ96a/lLTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM3BNAfTHExzMM39upv+VZzFjV/mx0R2D5Fs89F30AK0EP0aWoR+Hf0GWoKWou+i5agQPYVWoGKURCWoFJWhClSJqlEjakLNqAW1onbUgTpRN+pB/WgADaFhNIbG0RSaRr+FVqF/G61Ga9Ba9O+gdehvoPXo30Ub0N9EG9HfQpvQ30abURw/mMRjS34VxSNM4hEm8QiTxSgeYRKPMPlNFI8ziceZLEOzj/Zb019mmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqYZmGZgmoFpBqZ/7d9P/4pMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjQL0yxMszDNwjT788/DSXweviBksmdnF3WKVjF8nx/mEd2El5glFohlYhVHfrz3C99UPSCO8/J/vt8wlWfJo4jVPA+xwV8ayavE+Zyb+XWjM687e/Zj/t8gP4+NvFF+/ZjK4/ipsj/N5y3nXedvfSv719uyH5b9iH8X/Ydlf5Ldw0T4A0KIv0DI8BcIG/724MDfHtz424OHv+dz+FxoLnvUT74fosPod1A29//6CcZ6UQ7tQ2fQH2CqD3PzyuRuk8k9Fp/g0j9GB9E/wjUf5aZ/PzcdnRv+BMN/nD0WKobfw1R/gn6Ey4ayx9vEMj7JLfkTnCU8O8WbpQ3g8sHc9eO54ZXc8JPssUpxDzD+5qieGOL/RlZg7M3RPG2EkIgRldhHuIXoIDqJLhwpYhB7jb05tudnz3F2f4l/WH6eIMq7yn8/K6S8I3uEV7449m959j1wduzbPx++ubQL/T10BJ1Ah/h+gDl8kJvDB7jlB7k5fJCbwweYwweYwweYwweYwwf8HLJHjSkiTISD8BER/v9RTdQTTUQrcQb39lL5GH9vx8tp4h1+7PvZownz/QTNLvf7ueV+XzTF92Nc/zGu/xjXf5y7/mP++l/V3tz/99ezsbJxfj2bKJvJ7tElnCKEwsNThfx6lt2T1yb+N+LseYb/VPyn/Hr2Z+I/w3p2BdavYD27gvXsCtazK1jPrmA9u4LXj+xYL8qhfegM+gNM9WFuXpncbd4McTRrfvjH6CD6R7jmo9z07+emo3PDVQzfrGdXcuvZFaxnV7CeXeHXMya3DCa3ZP63edkVTPFmaQO4fDB3/XhueCU3ZLCeZe8BxnPr2ZXcenYF69mVXzpq7i9+hzG7V+YXn9sv+7Y/zj+fR+Yps88ujgn107Kf8s/Pvy/7C/7e/mV59nVaULaNR2E7K5jvR+h30E9QFv0Q5VD+2c1OnxvrRDPov0SvocPov8a0ODp32X6u76Mfod9BP0FZ9EOUQ7NL2s8taR9L2seS9rGkfSxpH0vax5L23xzp+8v+0lrOlf+gfKZ8tvxH5fzrYXkGa2wmuzS+/JzLf4hLfohLfpg9jji+R+oiAvyr3C+us589D9nXiZXyG/zrxM3yO8RX+bEfYx4/zh51PPszXgF+jLn/OGuX73dQLnsEBEz7Kab9NDftp5j2U0z7Kab9FNvzVYQSr6592Cf3MjFBTOH5z37vJvv8f/G7OC/5KUeyR1Hmr71LnPC3WeUvWeTvbQHO20uUH5YfEsLyo/K/Ik6V/7UwjxBnz71LSLPn3s1+E6f8Z9kjtJf/DD/9AX/v+HF+mB37EOXQPpRBM5jqQ0x1gluf4KfsrU9ytz7BrfFJBt8+lEEzmOrD3DI6Ma/O3G06cV12LI9/Bqgv/J7p4YeD/LOQveTNGvH50aQ/fzw2+OEzYgeX7BL7/KPy872W8corze6NJnQIU0Q5PybJvp7y/X2UQ3tQfvlCCX76GM2g30f/WXb/uzfHz8awJzdkckM2N8zO1Y4l2HM/c2gPml2CHT99jGbQ76PZJdhzS7DnlmDPLcGeW4L9zZHev3Qvg37hR8IB4aDwe0L+N6fwn2Tl8aXR7O+O7+KS7+KS7/KXfPHbOPw6JlzG78sv7OkgXD01wHcl+5v41Ee49vNb/Cu8Aq78um/fvN1XgXi7r8LbfRXe7qvwdl+Ft6bf7qvAEP9v7atgIN7F5xOfbdd3/PwoNJ9/n30mu1VUXlXeyL8rzp75+Jv4Pkdp9tsdeHf+rey2Bd9B9CfoH6CL/O2+JfpHubFO9NtoFzqE/hj9PfQjdAS3e1/0T7Nj5Hu571xn36tFcLSyen4ro53Ibn18TTgj/KHwR8I54R8K54X/Qrgg/rf8O67Z7NZqtnivNps9aw7GfoKxb+fGPsEQZ83B8Hv8u7LsESVN/Pu3X/784bPPbN5sVXDEPLGU/ab+KfKUnCBOKU+ZiHdOWU5ZiFKcC+vd7D6p2W1hvh+hQ2gn+m2UQQeIvFMK/DSIsiiHjqNXUH67LTuv7HtZfvh+7tb/PDtGvodn8hf28f3suxKn7Fi+HfOy8/PKHnnYSHTx7+5ZgU+w/pWzXznJn3zH9s5aQVvBwVfHCqnCW19r+tqropGvy7++WlxXvPONgZKKkqVvVn1zq7T33ZJ35/jXh43yLmGBkD3lO7Vecbbi5L1JUfZ7NF8Rfcy/8yZwdpI8HJdYT9SImkVtojOic6JuUa+oXzQkGhWN8VNcFXGiOdGi6JrouuiW6K7ovuihaEO0KXomeiF6JXotOhIT4gJxsZh/GRDLxVqxSewQ+8QRcUp8WlwnbhS3iNvFZ8XnxRfEfeIBHNl6XDwpnhbPiOfFS+IV8Q3xbfGa+IH4kfiJeEv8XPxSvCc+EB+TArKQLCGFRI14SDwqHhPT4qtiTjwnXhRfE18X3xLfFd8XPxRviDfFz8QvxK/Er8VHJEEWkMUk/1JEykktaSIdpI+MkCnyNFlHNpItZDt5ljxPXiD7yAFymLxEjpOT5DQ5Q86TS+QKeYO8Ta6RD8hH5BNyi3xOviT3yAPyWCKQFEpKJEIJKVFKKIlF4pIEJDGihlwkr5HXyVvkXfI++ZDcIDfJZ+QL8hX5mjySEJICSbGkTCKSyCVaiUnikPgkEUlKclpSJ2mUtEjaJWcl5yUXJH2SAcmw5JJkXDIpmZbMSOYlS5IVyQ3Jbcma5IHkkeSJZEvyXPJSsic5kBxLBdJCaYlUKCWlSikltUhd0oA0Jq2UVkvrpU3SVmmHtJOokWxINiXPJC8krySvJUdSQlogLZaWSUVSuVQrNUkdUp80Ik1JT0vrpI3SFmm79Kz0vPSCtE86IB2WXpKOSyel09IZ6bx0SboivSG9LV2TPpA+kj6RbkmfS19K96QH0mOZQFYoK5EJZaRMKaNkFplLFpDFZJWyalm9rEnWKuuQdcq6ZD2yi7JB2YjssmyCqJERsgJZsYz/FSGTy7Qyk8wh88kispTstKxO1ihrkbXLzsrOyy7I+mQDsmHZJdm4bFI2LZuRzcuWZCuyG7LbsjXZA9kj2RPZluy57KVsT3YgO5YL5IXyErlQTsqVckpukbvkAXlMXimvltfLm+St8g55p7xL3iO/KB+Uj8gvyyfkU3JWPitfkC/LV+U3iRq5Se6Q++QReUp+Wl4nb5S3yNvlZ+Xn5RfkffIB+bD8knxcPimfls/I5+VL8hX5Dflt+Zr8gfyR/Il8S/5c/lK+Jz+QHysEikJFiUKoIBVKBaWwKFyKgCKmqFRUK+oVTYpWRYeiU9Gl6FFcVAwqRhSXFROKKQWrmFUsKJYVq4qbijuKe4p1xWPFU8W2YoeoUTQqWhTtirOK84oLij7FgGJYcUkxrphUTCtmFPOKJcWK4obitmJN8UDxSPFEsaV4rnip2FMcKI6VAmWhskQpVJJKpZJSWpQuZUAZU1Yqq5X1yiZlq7JD2ansUvYoLyoHlSPKy8oJ5ZSSVc4qF5TLylXlTeUd5T3luvKx8qlyW7mj3FXuKw+VJ6p8VZGqlKhRDiiHlZeU48pJ5bRyRjmvXFKuKG8obyvXlA+Uj5RPlFvK58qXyj3lgfJYJVAVqkpUQhWpUqoolUXlUgVUMVWlqlpVr2pStao6VJ2qLlWP6qJqUDWiuqyaUE2pWNWsakG1rFpV3VTdUd1Traseq56qtlU7ql3VvupQdaLOVxepS9UVaqlarTaobWqPOkTUqOZVS6oV1Q3VbdWa6oHqkeqJakv1XPVStac6UB2rBepCdYlaqCbVSjWltqhd6oA6pq5UV6vr1U3qVnWHulPdpe5RX1QPqkfUl9UT6ik1q55VL6iX1avqm+o76nvqdfVj9VP1tnpHvaveVx+qTzT5miJNqaZCI9WoNQaNTePRhDQJTZWmVtOgada0ac4QNepH6ifqLfVz9Uv1nvpAfawRaAo1JRqhhtQoNZTGonFpApqYplJTranXNGlaNR2aTk2XpkdzUTOoGdFc1kxopjSsZlazoFnWrGpuau5o7mnWNY81TzXbmh3NrmZfc6g50eZri7Sl2gqtVKvWGrQ2rUcb0ia0VdpabYO2WdumPaM9p+3W9mr7tUPaUe0YUaM51gq0hdoSrVBLapVaSmvRurQBbUxbqa3W1mubtK3aDm2ntkvbo72oHdSOaC9rJ7RTWlY7q13QLmtXtTe1d7T3tOvax9qn2m3tjnZXu6891J7o8nVFulJdhU6qU+sMOpvOowvpEroqXa2uQdesa9Od0Z3Tdet6df26Id2obkxH667qON2cblF3TXedqNFROovOpQvoYrpKXbWuXteka9V16Dp1Xboe3UXdoG5Ed1k3oZvSsbpZ3YJuWbequ6m7o7unW9c91j3Vbet2dLu6fd2h7oTKp4qoUqqCklJqykDZKA8VohJUFVVLNVDNVBt1hjpHdVO9VD81RI1SYxRNXaU4ao5apK5R16lb1F3qPvWQ2qA2qWdEDVVPNVGtVAfVSXVRPdRFapAaoS5TE9QUxVKz1AK1TK1SN6k71D1qnXpMPaW2qR1ql9qnDqkTfb6+SF+qr9BL9Wq9QW/Te/QhfUJfpa/VN+ib9W36M/pz+m59r75fP6Qf1Y/paf1VPaef0y/qr+mv62/p7+rv6x/qN/Sb+mf6F/pX+tf6IwNhKDAUEzX6i/pB/Yj+sn5CP6Vn9bP6Bf2yflV/U39Hf0+/rn+sf6rf1u/od/X7+kP9iSHfUGQoNVQYpAa1wWCwGTyGkCFhqDLUGhoMzYY2wxnDOUO3odfQbxgyjBrGDLThqoEzzBkWDdcM1w23DHcN9w0PDRuGTcMzwwvDK8Nrw5GRMBYYi41lRpFRbtQaTUaH0UfUGGYNC4Zlw6rhpuGO4Z5h3fDY8NSwbdgx7Br2DYeGE2O+schYaqwwSo1qo8FoM3qMIWPCWGWsNTYYm41txjPGc8ZuY6+x3zhkHDWOGWnjVSNnnDMuGq8ZrxtvGe8a7xsfGjeMm8ZnxhfGV8bXxiMTYSowFZvKTCKT3KQ1mUwOk88UMaVMp011pkZTi6mdqDGuGx8bnxq3jTvGXeO+8dB4Yso3FZlKTRUmqUltMphsJo8pZEqYqky1pgZTs6nNdMZ0ztRt6jX1m4ZMo6YxE226auJMc6ZF0zXTddMt013TfdND04Zp0/TM9ML0yvTadGQmzAXmYnOZWWSWm7Vmk9lh9pkj5pT5tLnO3GhuMbebz5rPmy+Y+8wD5mHzJaLGdGg6Meebi8yl5gqz1Kw2G8w2s8ccMifMVeZac4O52dxmPmM+Z+4295r7zUPmUfOYmTZfNXPmOfOi+Zr5uvmW+a75vvmhecO8aX5mfmF+ZX5tPrIQlgJLsaXMIrLILVqLyeKw+CwRS8py2lJnabS0WNotZy3nLRcsfZYBy7DlkmXcMmmZtsxY5i1LlhWixqK2GCw2i8cSsiQsVZZaS4Ol2dJmOWM5Z+m29Fr6LUOWUcuYhbZctXCWOcui5ZrluuWW5a7lvuWhZcOyaXlmeWF5ZXltObIS1gJrsZXf6LPKrVqryeqw+qwRa8p62lpnbbS2WNutZ63nrResfdYB67D1knXcOmmdts5Y561L1hXrDett65r1gfWR9Yl1i6ix1lobrM3WNusZ6zlrt7XX2m8dso5ax6y09aqVs85ZF63XrNett6x3rfetD60b1k3rM+sL6yvra+uRjbAV2Ipt/IanTW7T2kw2h81ni9hSttO2OlujrcXWbjtrO2+7YOuzDdiGbZds47ZJ27RtxjZvW7Kt2G7YbtvWbA9sj2xPbFu257aXtj3bge3YLrAXEjW2Xlu/bcg2ahuz0barNs42Z1u0XbNdt92y3bXdtz20bdg2bc9sL2yvbK9tR3bCXmAvtvMbv3a5XWs32R12nz1iT9lP2+vsjfYWe7v9rP28/YK9zz5gH7Zfso/bJ+3T9hn7vH3JvmK/Yb9tX7M/sD+yP7Fv2Z/bX9r37Af2Y4fAUegocQgdpEPpoBwWh4uosXP2Ofui/Zr9uv2W/a79vv2hfcO+aX9mf2F/ZX9tP3IQjgJHsYPfAHfIHVqHyeFw+BwRR8px2lHnaHS0ONodZx3nHRccfY4Bx7DjkmPcMemYdsw45h1LjhXHDcdtx5rjgeOR44ljy/Hc8dKx5zhwHDsFzkJniVPoJJ1KJ+W0OF3OgDPmrHRWO+udTc5WosZx3/HQseHYdDxzvHC8crx2HDkJZ4Gz2FnmFDnlTq3T5HQ4fc6IM+U87axzNjpbnO3Os87zzgvOPueAc9h5yTnunHROO2ec884l54rzhvO2c835wPnI+cS55XzufOnccx44j10CV6GrxCV0kS6li3JZXC5XwBVzVbqqXfWuJlerq8PV6epy9bguugZdI0SN87XzyEW4ClzFrjKXyCV3aV0ml8Plc0VcKddpV52r0dXianeddZ13XXD1uQZcw65LrnHXpGvaNeOady25Vlw3XLdda64HrkeuJ64t13PXS9ee68B17Ba4C90lbqGbdCvdlNvidrkD7pi70l3trnc3uVvdHe5Od5e7x33RPegecV92T7in3Kx71r3gXiZq3HK31m1yO9w+d8Sdcp9217kb3S3udvdZ93n3BXefe8A97L7kHndPuqfdM+5595J7xX3Dfdu95n7gfuR+4t5yP3e/dO+5D9zHHoGn0FPiEXpIj9JDeSwelyfgiXkqPdWeek+Tp9XT4en0dHl6PBc9g54Rz2XPhGfKw3pmPQueZc+q56bnjueeZ93z2POUqPGc9tR5Gj0tnnbPWc95zwVPn2fAM+y55Bn3THqmPTOeec+SZ8Vzw3Pbs+Z54HnkeeLZ8jz3vPTseQ48x16Bt9Bb4hV6Sa/SS3ktXpc34I15K73V3npvk7fV2+Ht9HZ5e7wXvYPeEe9l74R3yst6Z70L3mXvqvem9473nnfd+9j71Lvt3fHueve9h94TXz5R473g7fMOeIe9l7zj3knvtHfGO+9d8q54b3hve9e8D7yPvE+8W97n3pfePe+B99gn8BX6SnxCH+lT+iifxefyBXwxX6Wv2lfva/K1+jp8nb4uX4/vom/QN+K77JvwTflY36xvwbfsW/Xd9N3x3fOt+x77nvq2fTu+Xd++79B34s/3F/lL/RV+qV/tN/htRI1v2jfjm/ct+VZ8N3y3fWu+B75Hvie+Ld9z30vfnu/Ad+wX+Av9JX6hn/Qr/ZTf4nf5A/6Yv9Jf7a/3N/lb/R3+Tn+Xv8d/0T/oH/Ff9k/4p/ysf9a/4F/2r/pv+u/47/nX/Y/9T/3b/h3/rn/ff+g/CeQHigKlgYqANKAOGAK2gCcQCiQCVYHaQEOgmajxr/kf+B/5n/i3/M/9L/17/gP/cUAQKAyUBIQBMqAMUAFLwBUIBGKBykB1oD7QFGgNdAQ6A12BnsDFwGBgJHA5MBGYCrCB2cBCYDmwGrgZuBO4F1gPPA48DWwHdgK7gf3AYeAkmB8sCpYGK4LSoDpoCNqCnmAomAhWBWuDDcHmYFvwTPBcsDvYG+wPDhE1gb3AQeA4KAgWBkuCwiAZVAapoCXoCgaCsWBlsDpYH2wKtgY7gp3BrmBP8GJwMDgSvBycCE4F2eBscCG4HFwN3gzeCd4LrgcfB58Gt4M7wd3gfvAweBLKDxWFSkMVIWlIHTKEbCFPKBRKhKpCtaGGUHOoLXQmdC7UHeoN9YeGQqOhsRAduhriQnOhRaImRIaUISpkCblCgVAsVBmqDtWHmkKtoY5QZ6gr1BO6GBoMjYQuhyZCUyE2NBtaCC2HVkM3Q3dC90Lrocehp6Ht0E5oN7QfOgydhPPDReHScEVYGlaHDWFb2BMOhRPhqnBtuCHcHG4LnwmfC3eHe8P94aHwaHgsTIevhrnwXHgxfC18PXwrfDd8P/wwvEHUhCvD1eH6cFO4NdwR7gx3hXvCF8OD4ZHw5fBEeCrMhmfDC+Hl8Gr4ZvhO+F54Pfw4/DS8Hd4J74b3w4fhk0h+pChSGqmISCPqiCFii3gioUgiUhWpjTREmiNtkTORc5HuSG+kPzIUGY2MRejI1QgXmYssRq5FrkduRe5G7kceRjYim5FnkReRV5HXkaMoQdREuiI9kYuRwchI5HJkIjIVYSOzkYXIcmQ1cjNyJ3Ivsh55HHka2Y7sRHYj+5HDyEk0P1oULY1WRKVRddQQtUU90VA0Ea2K1kYbos3RtuiZ6Llod7Q32h8dio5Gx6J09GqUi85FF6PXotejt6J3o/ejD6Mb0c3os+iL6Kvo6+hRjIgVxIpjZTFRTB7TxkxETXQqykZnowvR5ehq9Gb0TvRedD36OPo0uh3die5G96OH0ZNYfqwoVhqriElj6pghZot5YqFYIlYVq401xJpjbbEzsXOx7lhvrD82FBuNjcXo2NUYF5uLLcauxa7HbsXuxu7HHsY2YpuxZ7EXsVex17GjOBEviBfHy+KiuDyujZvijrgvHomn4qfjdfFGoiZ2J3Yvth57HHsa247txHZj+7HD2Ek8P14UL41XxKVxddwQt8U98VA8Ea+K18Yb4s3xtviZ+Ll4d7w33h8fio/Gx+J0/Gqci8/FF+PX4tfjt+J34/fjD+Mb8c34s/iL+Kv46/hRgkgUJIoTZQlRQp7QJkwJR8KXiCRSidOJukRjoiXRnjibOJ+4kOhLDBA18d34fvwwfpLITxQlShMVCWlCnTAkbAlPIpRIJKoStYmGRHOiLXEmcS7RnehN9CeGEqOJsQSduJrgEnOJxcS1xPXErcTdxP3Ew8RGYjPxLPEi8SrxOnGUJJIFyeJkWVKUlCe1SVPSkfQlI8lU8nSyLtmYbEm2J88mzycvJPuSA8nh5KXkeHIyOZ2cSc4TNcmKpDSpThqStqQnGUomklXJ2mRDsjnZljyTPJfsTvYm+5NDydHkWJJOXk1yybnkYvJa8nryVvJu8n7yYXIjuZl8lnyRfJV8nTxKEamCVHGqLCVKyVPalCnlSPlSkVQqdTpVl2pMtaTaU2dT51MXUn2pgdRw6lJqPDWZmk7NpOZTS6mV1I3U7dRa6kHqEVGTSqSqUrWphlRzqi11JnUu1Z3qTfWnhlKjqbEUnbqa4lJzqcXUtdT11K3U3dT91MPURmoz9Sz1IvUq9Tp1lCbSBenidFlalJantWlT2pH2pSPpVPp0ui7dmG5Jt6fPps+nL6T70gPp4fSl9Hh6Mj2dnknPp5fSK+kb6dvptfSD9KP0k/RW+nn6ZXovfZA+JmrS59Ld6d50f3ooPZoeS/8P9u71JY593RN428vldrldLlctl6mqvt+7q2/Vt+rqW/X9ctTj9rjdbrfH43gkiASRIBJEgkgQCSIiUu2IiF2I40jGcTLiOCIiEkSCSBAJIkEkiIhI8DgZx8l2e9xT/bw4r/YfMBzqzTcmdEhS30/s/HzC72Hj03EuvhBfiq/E1+Nb8Z34XvwgfhQ/iZ/FL+PX8dv4fUKUKEqUJpAEmpAntAkiQSaoRDARS2QStYmGRHOiLdGR6Er0JPoSA4mhxEhiPDGZmEnMJRYTy4nVxEZiO7Gb2E8cJo4Tp4nzxFXiJnGXeEiKk8XJsmRFEk8qk3pRdYJNTCe4xEJiKbGSWE9sJXYSe4mDxFHiJHGWuExcJ24T90lRsihZmkSSaFKe1CaJJJmkksFkLJlJ1iYbks3JtmRHsivZk+xLDiSHkiPJ8eRkciY5l1xMLidXkxvJ7eRucj95mDxOnibPk1fJm+Rd8iElThWnylIVKTylTOlTlpQzRaeYVCJVlaoTVSe3kjvJveRB8ih5kjxLXiavk7fJ+5QoVZQqTSEpNCVPaVNEikxRqWAqlsqkalMNqeZUW6oj1ZXqSfWlBlJDqZHUeGoyNZOaSy2mllOrqY3Udmo3tZ86TB2nTlPnqavUTeou9ZAWp4vTZemKNJ5WpvVpS9qZptNMOpGuStelG9Mt6fZ0Z7o73ZvuF1WnLlPXqdvUfVqULkqXppE0mpantWkiTaapdDAdS2fStemGdHO6Ld2R7kr3pPvSA+mh9Eh6PD2ZnknPpRfTy+nV9EZ6O72b3k8fpo/Tp+nz9FX6Jn2XfsiIM8WZskxFBs8oM/qMJePM0Bkmk8hUZeoyjZmWTHumM9Od6c30ZwYzw5nRzERmKjObmUeK8rNH5Df52SNSnJ89Ij/kZ49ISX72iJTmZ4/Ij/nZI1KWnz0iP+Vnj8jP+dkjkv/ffAhSkZ89Ir/mZ4/Ik/zsEUHzs0cEy88e8/eZIDgiy88ekfyty3JEkZ89Isr87BFR5WePiCY/e0S0+dlj/h4VRI9Y87NHJH/7sQ2x52ePSP72YxLJ337sQFz52WP+jpT83Sn52WP+3hWYvIoRGgnkZ49I/gbqIJK/ezo/hRUjYSSdnz0imfzsEanOzx6RmvzsEanNzx6R3+Vnj0h9fvaI/D4/e0Qa8rNH5A/52SPSmJ89In/Mzx6RpvzsEcnfm/wnpDk/e0T+MT97RFrys0fkn/Kzx/ydLfk7XfKzx/y9Lkgbkr+b+Z+R9vzsEfuWnz1if87PHrH7/OwR+0t+9og95GeP2GN+9oj9NT97xEX52SNekJ894uL87BH/Lj97xAvzs0f8+/zsUWhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBoUGhQaFBo8N9Hg8JeA2GvgbDXQNhrIOw1EPYaCHsNhL0Gwl4DYa+BsNdA2Gsg7DUQ9hoIew2EvQbCXgNhr4Gw10DYayDsNRD2Ggh7DYS9Bv9/7jVAxSIxKka/4/M7tJDPQvR7Pr9Hi/gsQov5LEZ/4PMHtITPEvS3fP4W/ZHPH9EyPsvQcj7L0Z/5/Bn9hc9f0Ao+K9Bf+fwVreSzEsX4xFCcTxyV8ClBpXxKURmfMlTBpwJV8qlE1XyqUROfJpTgk0DNfJpRC58W1MqnFbXzaUdJPknUwacDdfHpQt18ulEvn16U5pNG/Xz60QCfAZThk0HDfIbRGJ8xNM5nHE3ymURTfKbQv+Pz79AqPqvQaj6r0Ro+a9C/5/Pv0Vo+a9Hf8fk7tI7POvQf+PwHtJ7PevT3fP4ebeCzAf0Dn39AG/lsRP/I5x/RJj6b0D/x+Secf7Z4Ef4bPn+D808YL8b5J4z/gPNPGC/BS/ksxfknjP+I808YL8N/4vMnnH/OeDnOP2f8ZxzhE8H5p43/IjQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0+O+jQZFYpBX9hP4ndAH9z+jiv327hC6jb9GV/DaC/FYC/hWT6H9Ep9BpdBbNoRw6h/4X9L+i/w397+gq+j/Rdf4VRSIJnwXov8DH/Ef87/UE/dd/+9536Cn6V4xvUqQXlWM/Yj9h5djPGIL9gv2KPcFQTIJJMQWmwtSYFtPxry9H/wX9X+j/Rv8P+n/RP6N/Qf8VfcQKMDH2PfYbrBgrwXhJIlT0A1aGVWCVGIbhmAyTY0pMw//cH9Ab9B594H89EfYdVogVYT/wPzojqi5ACtACeYG2gCggC6iCYEGsIFNQW9BQ0FzQVtBR0FXQU9BXMFAwVDBSMF4wWTBTMFewWLBcsFqwUbBdsFuwX3BYcFxwWnBecFVwU3BX8CAWi4vFZeIKMS5WivVii9gppsWMOCGuEteJG8Ut4nZxp7hb3CvuFw+Kh8Wj4gnxlHhWPC9+I34rXhNvit+J34s/8H+SX5AipEQkQkqRn0Tfw86PH2Dbx2+RJwgu+hGRISrRz7C9oxLRI3oRilgRhwhDXIhHJIedHCrYxqGBPRw62MBhgN0bJti6YUbqkXaRFfuGPYgY7BH/XhTPbyRB/0d+IwlkMeQPkCWQpZA/QpZB/gT5MyQCWQH5K+QTSBQSg8QhZZBySAWkElIFqYHUQuohrZA2SDskCemAdEG6IT2QXkgaMgAZhGQgw5BpyAxkNWQNZC3k7yDrIX8P2QD5B8hGyD9CNkH+CbIZ8h8hWyD/CbIV8j9AtkH+M2R7PrFvkH+GvIf8C+QD5CPkX/OJiyALIMWQ30EWQn7Pp2D6b5lmwTQLplkwzYJpFkyzYJoF0yyYZsE0C6ZZMM2CaRZMs2CaBdMsmGbBNAumWTDNgmkWTLNgmgXTLJhmwTQLplkwzYJpFkyzYJoF0yyYZsE0C6ZZMM2CaRZMs2CaBdMsmGbBNAumWTDNgmkWTLNgmgXTLJhmwTQLplkwzYJpFkyzYJoF0yyYZsE0C6ZZMM2CaRZMs2CaBdMsmGbBNAumWTDNgmkWTLNgmgXTLJhmwTQLplnB9N80nQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdBdNZMJ0F01kwnQXTWTCdFUz/TdM5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0zkwnQPTOTCdA9M5MJ0D0znB9N80zYFpDkxzYJoD0xyY5sA0B6Y5MM2BaQ5Mc2CaA9McmObANAemOTDNgWkOTHNgmgPTHJjmwDQHpjkwzYFpDkxzYJoD0xyY5sA0B6Y5MM2BaQ5Mc2CaA9McmObANAemOTDNgWkOTHNgmgPTHJjmwDQHpjkwzYFpDkxzYJoD0xyY5sA0B6Y5MM2BaQ5Mc2CaA9McmObANAemOTDNgWkOTHNgmgPTHJjmwDQHpjkwzYFpDkxzvOlGkVHUIXosmBTbxLvftX53Vzj2vf77raLGouvfDBfLi9d+qP3homTgt5W/XS5NlZ7++KKsrGzhJ+ano/Lun4t+nkUo5MMvHb88Vkz+avt1t7K18u7JmCj/NZL8bj8R7PbTi6qfbD/ZfbL/5PDJ8ZPTJ+dPrp7cPLl78oDmv1ZShlagOKpE9agFdaI0yqAJtAqtQxvRFrQd7US70V60Hx1Eh9FRdII/j8+i8+gb/qS+hm6i79D36Af0I/oJ/YxeoF/Qr+g3/sxcyJ+Vy/kTspQ/WRsxG+bG/FgES2E1WD3WhLViT7Fn2HPsBfZSVI1e8efmO/SBP2UXw7ka58/TesyCOTEaY7AEVoXVYY1YC9aOdWLdWC/Wjw1iw9goNoFNYbPYPPYGe4utYZvYO+w99gH7iH3CPmMX2BfsK//35BEvxEvwcrwSl+Jq3IjbcDfuxyN4Cq/B6/EmvBV/ij/Dn+Mv8Jf4K/w1Poaz+DTO4QuiarwCx3ElrsctuBOncQZP4FV4Hd6It+DteCfejffi/fggPoyP4hP4FD6Lz+Nv8Lf4Gr6Jv8Pf4x/wj/gn/DN+gX/Bv+Lf8EdJoaREUi6plEglaolRYpO4JX5JRJKS1EjqJU2SVslTyTPJc8kLyUvJK8lryZiElUxLOMmCZEmyIlmXbEl2JHuSA1G1hJEkJFWSOkmjpEXSLumUdEt6Jf2SQcmwZFQyIZmSzErmJW8kbyVrkk3JO8l7yQfJR8knyWfJheSL5Kvkm+RRWigtkZZLK6VSqVpqlNqkbqlfGpGmpDXSemmTtFX6VPpM+lz6QvpS+kr6WjomZaXTUk66IF2SrkjXpVvSHeme9EB6JD2RnkkvpdfSW+m9qFraKe2W9kr7pYPSYemodEI6JZ2VzkvfSN9K16Sb0nfS99IP0o/ST9LP0gvpF+lX6Tfpo6xQViIrl1XKpDK1zCizydwyvywiS8lqZPWyJlmr7Knsmey57IXspeyV7LVsTMbKpmWcbEG2JFuRrcu2ZDuyPdmB7Eh2IjuTXcquZbeye7lIXiQvlfOfquRyuVZULZuQTclmZfOyN7K3sjXZpuyd7L3sg+yj7JPss+xC9kX2VfZN9igvlJfIy+WVcqlcLTfKbXK33C+PyFPyGnm9vEneKn8qfyZ/Ln8hfyl/JX8tH5Oz8mk5J1+QL8lX5OvyLfmOfE9+ID+Sn8jP5Jfya/mt/F4hUhQpShX8p0uFXKFVEApSQSmCipgio6gVVcs35e/k7+Uf5B/ln+Sf5RfyL/Kv8m/yR0WhokRRrqhUSBVqhVFhU7gVfkVEkVLUKOoVTYpWxVPFM8VzxQvFS8UrxWvFmIJVTCs4xYJiSbGiWFdsKXYUe4oDxZHiRHGmuFRcK24V90qRskhZquQ/ZSvlSq2SUJJKShlUxpQZZa2yQdmsbFN2KLuUPco+UbXiQvFF8VXxTfGoLFSWKMuVlUqpUq00Km1Kt9KvjChTyhplvbJJ2ap8qnymfK58oXypfKV8rRxTssppJadcUC4pV5Tryi3ljnJPeaA8Up4oz5SXymvlrfJeJVIVqUpV/NuGSq7SqggVqaJUQVVMlVHVqhpUzao2VYeqS9Wj6lMNqIZUI6px1aRqRjUnqlaVqypVUpVaZVTZVG6VXxVRpVQ1qnpVk6pV9VT1TPVc9UL1UvVK9Vo1pmJV0ypOtaBaUq2o1lVbqh3VnupAdaQ6UZ2pLlXXqlvVvVqkLlKXqhE1qpartWpCTaopdVAdU2fUteoGdbO6Td2h7lL3qPvUA+oh9Yh6XD2pnlHPqRfVy+pV9YZ6W72r3hdVq/3qiDqlrlHXq5vUreqn6mfq5+oX6pfqV+rX6jE1q55Wc+oF9ZJ6Rb2u3lLvqPfUB+oj9Yn6TH2pvlbfqu81Ik2RplTDv4lq5BqthtCQGkoT1MQ0GU2tpkHTrGnTdGi6ND2aPs2AZkgzohnXTGpmNHOaRc2yZlWzodnW7Gr2NYeaY82p5lxzpbnR3ImqNU81zzTPNS80LzWvNK81YxpWM63hNAuaJc2KZl2zpdnR7GkONEeaE82Z5lJzrbnV3GtF2iJtqZZ/I9fKtVotoSW1lDaojWkz2lptg7ZZ26bt0HZpe7R92gHtkHZEO66d1M5o57SL2mXtqnZDu63d1e5rD7XH2lPtufZKe6O90z7oxLpiXZmuQofrlKJq7ZiW1U5rOe2Cdkm7ol3Xbml3tHvaA+2R9kR7pr3UXmtvtfc6ka5IV6pDdKhOrtPqCB2po3RBXUyX0dXqGnTNujZdh65L16Pr0w3ohnQjunHdpG5GN6db1C3rVnUbum3drm5fd6g71p3qznVXuhvdne5BL9YX68v0FXpcr9Tr9Ra9U0/rGX1CXyWq1q3rtnQ7uj3dge5Id6I7013qrnW3unu9SF+kL+X/uYbq5XqtntCTekof1Mf0GX2tvkHfrG/Td+i79D36Pv2Afkg/oh/XT+pn9HP6Rf2yflW/od/W7+r39Yf6Y/2p/lx/pb/R3+kfDGJDsaHMUGHADUqD3mAxOA20gTEkDFWGOkOjocXQbug0dBt6RdX6M/2l/lp/q783iAxFhlIDYkANcoPWQBhIA2UIGmKGjKHW0GBoNrQZOgxdhh5Dn2HAMGQYMYwbJg0zhjnDomHZsGrYMGwbdg37hkPDseHUcG64MtwY7gwPRrGx2FhmrDDiRqVRb7QYnUbayBgTxipjnbHR2GJsN3Yau429xn7joHHYOGqcME4ZZ0XVxlIjYkSNcqPWSBhJI2UMGmPGjLHW2GBsNrYZO4xdxh5jn3HAOGQcMY4bJ40zxjnjonHZuGrcMG4bd437xkPjsfHUeG68Mt4Y74wPJrGp2FRmqjDhJqVJb7KYnCbaxJgSpipTnanR1GJqN3Wauk29pn7ToGnYNGqaME2ZZk3zpjemt6Y106bpnem9qNpEmYKmmCljqjU1mJpNbaYOU5epx9RnGjANmUZM46ZJ04xpzrRoWjatmjZM26Zd077p0HRsOjWdm65MN6Y70wMhJoqJMqKCwAkloScshJOgCYZIEFVEHdFItBDtRCfRTfQS/cQgMUyMEhPEFDFLzBNviLfEGrFJvCPeEx+Ij8Qn4jNxQXwhvoqqiTaig+gieog+YoAYIkaIcWKSmCHmiEVimVglNohtYpfYJw6JY+KUOCeuiBvijngwi83F5jJzhRk3K816s8XsNNNmxpwwV5nrzI3mFnO7udPcbe4195sHzcPmUfOEeco8a543vzG/Na+ZN83vzO/NH8wfzZ/Mn80X5i/mr+Zv5kdLoaXEUm6ptEhF1eYR87h50jxjnjMvmpfNq+YN87Z517xvPjQfm0/N5+Yr8435zvxgEVuKLWWWCgtuUVr0FovFaaEtjCVhqbLUWRotLZZ2S6el29Jr6bcMWoYto5YJy5Rl1jJveWN5a1mzbFreWd5bPlg+Wj5ZPlsuLF8sXy3fLI/WQmuJtdxaaZVa1Vaj1WZ1W/3WiDUlqrasWjYs25Zdy77l0HJsObWcW64sN5Y7y4NVbC22llkrrLhVadVbLVanlbYy1oS1ylpnbbS2WNutndZua6+13zpoHbaOWiesU9ZZ67z1jfWtdc26aX1nfW/9YP1o/WT9bL2wfrF+tX6zPtoKbSW2clulTWpT24w2m81t89sitpStxlZva7K12p7antmei6qtp9Zz65X1xnpnfbCJbcW2MluFDbcpbXqbxea00TbGlrBV2epsjbYWW7ut09Zt67X12wZtw7ZR24RtyjZrm7e9sb21rdk2be9s720fbB9tn2yfbRe2L7avtm+2R3uhvcRebq+0S+1qu9Fus7vtfnvEnrLX2OvtTfZW+1P7M/tz+wv7S/sr+2v7mJ21T4uq7cX2MnuFHbcr7Xq7xe6003bGnrBX2evsjfYWe7u9095t77X32wftw/ZR+4R9yj5rn7e/sb+1r9k37e/s7+0f7B/tn+yf7Rf2L/av9m/2R7KQLCHLyUpSSqpJI2kj3aSfjJApsoasJ5vIVvIp+Yx8Tr4gX5KvyNfkGMmS0yRHLpBL5Aq5Tm6RO6Jq0knSJEMmyCqyjmwkW8h2spPsJnvJfnKQHCZHyQlyipwl58k35Ftyjdwk35HvyQ/kR/IT+Zm8IL+QX8lv5KOj0FHiKHdUOqQOtcPosDncDr8j4kg5ahz1jiZHq+Op45njueOF46XjleO1Y8zBOqYdnGPBseRYcaw7thw7jj3HgePIceI4c1w6rkXVjhZHu6PT0e3odfQ7Bh3DjlHHhGPKMeuYd7xxvHWsOTYd7xzvHR8cHx2fHJ8dF44vjq+Ob45HZ6GzxFnurHRKnWqn0Wlzup1+Z8SZctY4651NzlbnU+cz53PnC+dL5yvna+eYk3VOOznngnPJueJcd245d5x7zgPnkfPEeea8dF47b533LpGryFXq4o/FomrnsHPUOeGccs46551vnG+da85N5zvne+cH50fnJ+dn54Xzi/Or85vz0VXoKnGVuypdUpfaZXTZXG6X3xVxpVw1rnpXk6vV9dT1zPXc9cL10vXK9do15mJd0y7OteBacq241l1brh3XnuvAdeQ6cZ25Ll3XrlvXvVvkLnKXuvmjuVvu1roJN+mm3EF3TFTteutac2263rneuz64Pro+uT67LlxfXF9d31yP7kJ3ibvcXemWutVuo9vmdrv97og75a5x17ub3K3up+5n7ufuF+6X7lfu1+4xN+uednPuBfeSe8W97t5y77j33AfuI/eJ+8x96b5237rvPSJPkafUg3hQj9yj9RAe0kN5gp6YJ+Op9TR4mj1tng5Pl6ja/cn92X3h/uL+6v7mfvQUeko85Z5Kj9Sj9hg9No/b4/dEPClPjafe0+Rp9Tz1PPM897zwvPS88rz2jHlYz7SH8yx4ljwrnnXPlmfHs+c58Bx5TjxnnkvPtefWc0+JqCKqlEIolJJTWoqgSIqiglSMylC1VAPVTLVRHVQX1UP1UQPUEDVCjVOTomqqkCqhyqlKSkqpKSNlo9yUn4pQKaqGqqeaqFbqKfWMek69oF5Sr6jX1BjFUtMURy1QS9QKtU5tUTvUHnVAHVEn1Bl1SV1Tt9S9V+Qt8pZ6ES/qlXu1XsJLeilv0BvzZry13gZvs7fN2+Ht8vZ4+7wD3iHviHfcO+md8c55F73L3lXvhndbVO21ed1evzfiTXlrvPXeJm+r96n3mfe594X3pfeV97V3zMt6p72cd8G75F3xrnu3vDvePe+B98h74j3zXnqvvbfee1pEF9GlNEKjtJzW0gRN0hQdpGN0hq6lG+hmuo3uoLvoHrqPHqCH6BF6nJ6kZ+g5epFeplfpDXqb3qX36UP6mD6lz+krUTXdRLfST+ln9HP6Bf2SfkW/psdolp6mOXqBXqJX6HV6i96h9+gD+og+oc/oS/qavqXvfSJfka/Uh/hQn9yn9RE+0kf5gr6YL+Or9TX4mn1tvg5fl6/H1+cb8A35RnzjvknfjG/Ot+hb9q36Nnzbvl3fvu/Qd+w79Z37rnw3vjvfg1/sL/aX+StE1b5Xvte+MR/rm/ZxvgXfkm/Ft+7b8u349nwHviPfie/Md+m79t367v0if5G/1I/4Ub/cr/UTftJP+YP+mD/jr/U3+Jv9bf4Of5e/x9/nH/AP+Uf84/5J/4x/zr/oX/av+jf82/5d/77/0H/sP/Wf+6/8N/47/0NAHCgOlAUqAnhAGdAHLAFngA4womr/kn/Fv+7f8u/49/wH/iP/if/Mf+m/9t/67wOiQFGgNIAE0IA8oA0QATJABYKBWCATqA00BJoDbYGOQFegJ9AXGAgMBUYC44HJwExgLrAYWA6sBjYC24HdwH7gMHAcOA2cB64CN4G7wENQHCwOlgUrgnhQGdQHLUFnkA4ywUSwKlgXbAy2BNuDnaLqwFHgJHAWuAxcB24D90FRsChYGkSCaFAe1AaJIBmkgsFgLJgJ1gYbgs3BtmBHsCvYE+wLDgSHgiPB8eBkcCY4F1wMLgdXgxvB7eBucD94GDwOngbPg1fBm+Bd8CEkDhWHykIVITykDOlDlpAzRIeYUCJUFaoLNYZaQu2hzlB3qDfUHxoMDYdGQxOi6pAoVBQqDSEhNCQPaUNEiAxRoWAoFsqEakMNoeZQW6gj1BXqCfWFBkJDoZHQeGgyNBOaCy2GlkOroY3Qdmg3tB86DB2HTkPnoavQTegu9MCImWKmjKlgcEbJ6BkL42RohmESTBVTxzQyLUw708l0M71MPzPIDDOjzAQzxcwy88wb5i2zxmyKqhmCIRmKCTIxJsPUMg1MM9PGdDBdTA/TxwwwQ8wIM85MMjPMHLPILDOrzAazzewy+8whc8ycMufMFXPD3DEPYXG4OFwWrgjjYWVYH7aEnWE6zIQT4apwXbgx3BJuD3eGu8O94f7wYHg4PBqeCE+FZ8Pz4Tfht+G18Gb4Xfh9+EP4Y/hT+HP4QlQdbgg3h9vCHeGucE+4LzwQHgqPhMfDk+GZ8Fx4MbwcXg1vhLfDu+H98GH4OHwaPg9fhW/Cd+GHiDhSHCmLVETwiDKij1gizggdYSKJSFWkLtIYaYm0Rzoj3ZHeSH9kMDIcGY1MRKYis5H5yJvI28haZDPyLvI+8iHyMfIp8jlyEfkS+Rr5FnmMFkZLouWi6shAZCgyEhmPTEZmInORxchyZDWyEdmO7Eb2I4eR48hp5DxyFbmJ3EUeouJocbQsWhHFo8qoPmqJOqN0lIkmolXRumhjtCXaHu2Mdkd7o/3RwehwdDQ6EZ2Kzkbno2+ib6Nr0c3ou+j76Ifox+in6OfoRfRL9Gv0W/QxVhgriZXHKmPSmDpmjNli7phfVB1djC5HV6Mb0e3obnQ/ehg9jp5Gz6NX0ZvoXfQhJo4Vx8piFTE8pozpY5aYM0bHmFgiVhWrizXGWmLtsc5Yd6w31h8bjA3HRmMTsanYbGw+9ib2NrYW24y9i72PfYh9jH2KfY5dxL7Evsa+xR7jhfGSeHm8Mi6Nq+PGuC3ujvvjkXgqXhOvjzfFW+NPRdWxw9hx7DR2HruK3cTuYg9xcbw4XhaviONxZVwft8SdcTrOxBPxqnhdvDHeEm+Pd8a7473x/vhgfDg+Gp+I/z/27jXWrvMs8PiJzz6XhlLCJqTbZ0opoRMVpoRSAnRCJ2TqvQ+dNlM6oZTQllA6EXYcx3Ecx3Ec3+/3W3y/rXe9a613reU4juM4jkEVQhVCFUIVQhVCFUIVoAqhCqEKoVBKGK+frfk430bkw/7yz9bRsROt58nKT34UnZOLzi8qF11YdHnRtUVfXvSVRV9d9LVFX1/0jUXfXPStRd9e9J1Fby56a9gb3j68Y3jX8D3Du4cfGN47vG94//DB4fzwoeHDw0eGjw4fGy4drhiuHq4bbhnuGh6Y+OSi7w0XDGeH7xreOZwbvm94z/CDww8PPzJ8YDgcfmL46eFnh18Yfmm4ZLh8uGq4drhpuGO4b3hkeHJ4flgOLwwvD68Nvzz8yvCrw68Nvz78xvCbw28Nvz38zvDN4Vuj3uj20R2ju0bvGd09+sDo3tF9o/tHD47mRw+NHh49Mnp09Nho6WjFaPVo3WjLaNfowOjo6PQojNLo4ujK6PrEJ0f3jD44+vDoI6MHRsPRJ0afHn129IXRl0ZLRstHq0ZrR5tGO0b7RkdGJ0fnR+Xowujy6Nroy6OvjL46+tro66NvjL45+tbo26PvjN4cvTXfm799/o75u+bfM3/3/Afm752/b/7++Qfn5+cfmn94/pH5R+cfm186v2J+9fy6+S3zu+YPzB+dPz0f5tP8xfkr89fnf3/+D+f/eP5P5/98/i/n/7o/3V16+jPdpac/2116+u/oLj3927tLT/+d3aWn//3dpaf/ru7S0/+B7tLT/8Hu0tPvd5ee/p3dpaf/w92lp//u7tLTH3SXnv7C7tLTn+suPf0f6S49/fd2l57+j3aXnv77uktP/8e6S0//x7tLT//93aWnf0936en/VHfp6d/bXXr6P91devof6i49/Z/pLj39n+0uPf37uktP/+e6S0//F7pLT/8j3aWn/4vdpaf/0e7S03+gu/T0f6m79PR/ubv09D/eXXr6n+wuPf2HuktP/1Pdpaf/K92lp/9wd+np/2p36el/prv09H+tu/T0P9tdevq/3l16+o90l57+b3SXnv7nuktP//Pdpaf/he7S0//N7tLTf7S79PR/q7v09L/YXXr6v91devpf6i49C9/sLj0L/6W79Cz8bnfpWfiv3aVn4fe6S8/Ct7pLz8J/7y49cxPdpWfutu7SM7egu/TMTXaXnrled+mZm+ouPeMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4guMJjic4nuB4gjcnOHHbxCcm7p74zMTnJr448TsTyyZWTqyZ2DCxbWLPxKGJ4xNnJ+JEM3Fp4urE7038wcQfTfzJxJ9N/MXEX0387cTfT/zjxD9PfO+2BbfN3vau2+687cakJm5buG7huYkbf9cbf81udP3CcKMbFsYb3aibdLOvb1mY3+jWhcWNbvN5u887dKfu8v27fd7je/b6vM/n/XpAD+ohPaxHug7+xuejfp9jfu1xPbHw/I2e9PmUntYzvn7W95+70dsW3H/j4f0/ft7Dgq8v+MaCby741oJvL/jOgjcXvDXZm7x98o7JuybfM3n35Acm7528b/L+yQcn5ycfmnx48pHJRycfm1w6uWJy9eS6yS2TuyYPTB6dPD0ZJtPkxckrk9cnf3/yDyf/ePJPJ/988i8n/3ry7yb/YfKfJr/bm+hN997Z6/cGvff23t/7yd6Hej/f+2jvY72P9z7V+0zvc70v9n6nt6y3sremt6G3rbend6h3vHe2F3tN71Lvau/3en/Q+6Pen/T+rPcXvb/q/W3v73v/2Pvn3vemFkzNTr1r6s6puan3Td0z9cGpD099ZOqBqeHUJ6Y+PfXZqS9MfWlqydTyqVVTa6c2Te2Y2jd1ZOrk1PmpcurC1OWpa1NfnvrK1Fenvjb19alvTH1z6ltT3576ztSbU29N96Zvn75j+q7p90zfPf2B6Xun75u+f/rB6fnph6Yfnn5k+tHpx6aXTq+YXj29bnrL9K7pA9NHp09Ph+k0fXH6yvT16d+f/sPpP57+0+k/n/7L6b+e/rvpf5j+p+nvzkzMTM+8c6Y/M5h578z7Z35y5kMzPz/z0ZmPzXx85lMzn5n53MwXZ35nZtnMypk1Mxtmts3smTk0c3zm7EycaWYuzVyd+b2ZP5j5o5k/mfmzmb+Y+auZv535+5l/nPnnme/NLpidnX3X7J2zc7Pvm71n9oOzH579yOwDs8PZT8x+evazs1+Y/dLsktnls6tm185umt0xu2/2yOzJ2fOz5eyF2cuz12a/PPuV2a/Ofm3267PfmP3m7Ldmvz37ndk3Z996R+8dt7/jjnfcdePfh+/7vz8H5J6JqRtvpAcn3nfjHfLYxH2D2wbTEw8PZgd3Tzwy+InBRyeeGTww+PzEzsHiwe9OVH5Sw5sL35x798R3u/drt5H9GZ3Vd+jt+k79fn2X/oDeoT+off0hvVN/WO/Sd+tAF+qc/id9j/6Ivld/VN+nP6Z364/r+/U/6z36U3qv/rR+SH9GP6w/q/fpz+nP6y/oR/S/6v36i/pR/W/6gP6SPqi/rB/X/6Gf0E/qQ/o/9VP6K/pp/V/6sP6qfkZ/TT+rv66P6G/o5/Tz+gX9TX1Uf0u/qL+tX9L/rY9575wf3Nb9TNPu82BSezqlNmFgBwZ2YGAHBt+nNmFgEwY2YWATBjZhYBMGNmFgEwY2YWATBjZhYBMGNmFgEwY2YWATBjZhYBMGNmFgEwY2YWATBjZh8BP6k/pf9INqEwY2YWATBjZhYBMGNmFgEwY2YWATBjZhYBMGNmFgEwY2YWATBjZhYAcGdmBgBwb/XT+mi3SoI51XezKwJwN7MrAnA3sysCcDezKwJwN7MrAnA3sysCcDezKwJwN7MrAnA3sysCcDezKwJ4PP35r4Yl2ij+tSfUKX6ZO6XJ/SFfq0rtRndJU+q6v1OV2jz+tafUHX6XrdoBt1k27WLbpVt+l23aE7dZfu1j26V/fpfj2gB/WQHtYj+qIe1WN6XE/oST2lp/WMntVzevN5Zho016iFllpp0lobbfWCvqQX9WW9pK/oZX1Vr+hrelVf12v6hl7X3+268AP6Exx3nuPOc9x5jjvPcV3/Td/Sf+86N6G3qbfEnLfEnLfEnLfEnLfEnP9ezHlXzHlXzHlXzHlXzHlXzHlXzHlXzHlXzHlXzHlXzHlXzP3QzS2du1N/WO/Sd49tNLbRf7iNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbq3unZLRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbJSxUcZGGRtlbHRz4ot1iT6uS/UJXaZP6nJ9Slfo07pSn9FV+qyu1ud0jT6va/UFXafrdYNu1E26WbfoVt2m23WH7tRdulv36F7dp/v1gB7UQ3pYj+iLelSP6XE9oSf1lJ7WM3pWz+l5vflUg+YatdBSK01aa6OtXtCX9KK+rJf0Fb2sr+oVfU2v6ut6Td/Q69rZKGOj7JaNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2Chjo4yNMjbK2ChjI8+TjTI2ytgoG9tobKO3gY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbdW/zcMtGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjW5OfLEu0cd1qT6hy/RJXa5P6Qp9WlfqM7pKn9XV+pyu0ed1rb6g63S9btCNukk36xbdqtt0u+7QnbpLd+se3av7dL8e0IN6SA/rEX1Rj+oxPa4n9KSe0tN6Rs/qOT2vmd58trlGLbTUSpPW2mirF/Qlvagv6yV9RS/rq3pFX9Or+rpe0zf0unY2CmwUbtkosFFgo8BGgY0CGwU2CmwU2CiwUWCjwEaBjQIbBTYKbBTYKLBRYKPARoGNAhsFNgpsFNgosFFgo8BGniQbBTYKbBTGNhrb6G1go5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNuvd4fstGORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvlbJSzUc5GORvdnPhiXaKP61J9Qpfpk7pcn9IV+rSu1Gd0lT6rq/U5XaPP61p9Qdfpet2gG3WTbtYtulW36XbdoTt1l+7WPbpX9+l+PaAH9ZAe1iP6oh7VY3pcT+hJPaWn9Yye1XN6XjMNevMJRy201EqT1tpoqxf0Jb2oL+slfUUv66t6RV/Tq/q6XtM39Lp2NsrZKL9lo5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2Shno5yNcjbK2cgzZKOcjXI2ysc2GtvobWCjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRt0bPN6yUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKObE1+sS/RxXapP6DJ9UpfrU7pCn9aV+oyu0md1tT6na/R5Xasv6Dpdrxt0o27SzbpFt+o23a47dKfu0t26R/fqPt2vB/SgHtLDekRf1KN6TI/rCT2pp/S0ntGzek7Pa6ZBc735nAsttdKktTba6gV9SS/qy3pJX9HL+qpe0df0qr6u1/QNva6djSIbxVs2imwU2SiyUWSjyEaRjSIbRTaKbBTZKLJRZKPIRpGNIhtFNopsFNkoslFko8hGkY0iG0U2imwU2SiykafHRpGNIhvFsY3GNnob2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo+7dXdyyUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGBRsVbFSwUcFGNye+WJfo47pUn9Bl+qQu16d0hT6tK/UZXaXP6mp9Ttfo87pWX9B1ul436EbdpJt1i27Vbbpdd+hO3aW7dY/u1X26Xw/oQT2kh/WIvqhH9Zge1xN6Uk/paT2jZ/WcntdMg+Ya9ebTLrXSpLU22uoFfUkv6st6SV/Ry/qqXtHX9Kq+rtf0Db2unY0KNipu2ahgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjYq2Khgo4KNCjby3NioYKOCjYrORv+f/j++bjrrF3bT2bCwm8tG3aSbfX3Lwm5qWxd289rm83afd+hO3eX7d/u8x/fs9Xmfz/v1gB7UQ3pYj3Qd/I3PR/0+x/za43piYbdFJ30+paf1jK+f9f3nbnRsx7Ed/6PtWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJjyY4lO5bsWLJj994pb9mxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMebE1+sS/RxXapP6DJ9UpfrU7pCn9aV+oyu0md1tT6na/R5Xasv6Dpdrxt0o27SzbpFt+o23a47dKfu0t26R/fqPt2vB/SgHtLDekRf1KN6TI/rCT2pp/S0ntGzek7Pa6ZBc41a6M1nXmnSWhtt9YK+pBf1Zb2kr+hlfVWv6Gt6VV/Xa/qGXtfOjiU7lrfs2P3z/It+V/9Vv6f/pm/pv3e9YceSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNmxZMeSHUt2LNnRE2PHkh1LdizHf642ttHbwEYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG3Xv6+qWjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2qtioYqOKjSo2ujnxxbpEH9el+oQu0yd1uT6lK/RpXanP6Cp9Vlfrc7pGn9e1+oKu0/W6QTfqJt2sW3SrbtPtukN36i7drXt0r+7T/XpAD+ohPaxH9EU9qsf0uJ7Qk3pKT+sZPavn9LxmGjTXqIWWevPJJ6210VYv6Et6UV/WS/qKXtZX9Yq+plf1db2mb+h17WxUsVF1y0YVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLFRxUYVG1VsVLGRZ8VGFRtVbFSNbTS20dvARomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY26N3W6ZaPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYqPERomNEhslNkpslNgosVFio8RGNye+WJfo47pUn9Bl+qQu16d0hT6tK/UZXaXP6mp9Ttfo87pWX9B1ul436EbdpJt1i27Vbbpdd+hO3aW7dY/u1X26Xw/oQT2kh/WIvqhH9Zge1xN6Uk/paT2jZ/WcntdMg+YatdBSK735/GtttNUL+pJe1Jf1kr6il/VVvaKv6VV9Xa/pG3pdOxslNkq3bJTYKLFRYqPERomNEhslNkpslNgosVFio8RGiY0SGyU2SmyU2CixUWKjxEaJjRIbJTZKbJTYKLFRYiNPiY0SGyU2SmMbjW30NrBRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUY1G9VsVLNRzUbdO7q+ZaOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajWo2qtmoZqOajW5OfLEu0cd1qT6hy/RJXa5P6Qp9WlfqM7pKn9XV+pyu0ed1rb6g63S9btCNukk36xbdqtt0u+7QnbpLd+se3av7dL8e0IN6SA/rEX1Rj+oxPa4n9KSe0tN6Rs/qOT2vmQbNNWqhpVaa9OYUGm31gr6kF/VlvaSv6GV9Va/oa3pVX9dr+oZe185GNRvVt2xUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUb1WxUs1HNRjUbeT5sVLNRzUb12EZjG70NbNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUcNGDRs1bNSwUfd2bm7ZqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjho0aNmrYqGGjmxNfrEv0cV2qT+gyfVKX61O6Qp/WlfqMrtJndbU+p2v0eV2rL+g6Xa8bdKNu0s26RbfqNt2uO3Sn7tLdukf36j7drwf0oB7Sw3pEX9SjekyP6wk9qaf0tJ7Rs3pOz2umQXONWmiplSat9eYsWr2gL+lFfVkv6St6WV/VK/qaXtXX9Zq+ode1s1HDRs0tGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0YNGzVs1LBRw0aeDBs1bNSwUTO20dhGbwMbtWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUslHLRi0btWzUvZfbWzZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ahlo5aNWjZq2ejmxBfrEn1cl+oTukyf1OX6lK7Qp3WlPqOr9Fldrc/pGn1e1+oLuk7X6wbdqJt0s27RrbpNt+sO3am7dLfu0b26T/frAT2oh/SwHtEX9age0+N6Qk/qKT2tZ/SsntPzmmnQXKMWWmqlSWtt9OZELuhLelFf1kv6il7WV/WKvqZX9XW9pm/odf3drmzU3rJRy0YtG7Vs1LJRy0YtG7Vs9H9Y+xb4KIrk/37MY7OZHcJmk2w2IcQQEQKGGJBHAI0hIEaeIUGIyCME5C3mOMCIgBgexhwiIiIiInJq0ONQOeQ4RY7j+HHIISJGTBBRQRGRlxgQkf19p6eB3Un86/3vd/Wp+lZN99T0dFdX1yDcVonaqErURlWiNqoStVGVqI2qRG1UJWqjKlEbVYnaqErURlWiNqoStVGVqI2qRG1UJWqjKlEbVYnaqErURlWiNqoStZGYE1EbVYnaqErURlXi3/FpYCtjzcfKU+ICm9aV6LaQSswI8LfeUt/dVk/OrBbvqNB+vgdFv6FE8Z71zYpODW3zfibahhPdN5lw72cxg33FvrdCe8S+gzNWI+kxxSQ6eqLvEcJjitBzjK84urv3sG+Wb/U1K/ZG3yO/qV862kPf5FHxjNSYYcT0f2HfGf2mbyz8vUW4b0d0sW8sPDtb00NbG/CX7h9Kohvy5x0l3vLqvfX6pTfcL/QZeE8tpjhmZExJzKiY0fE34IluwmLuj/m9tVa+aaK3pllzSRv/MUR/iRAgIQYhqHixo8kYXIghlMbSeMJogLaA3pL2hd6PPgV9KcXupMvoc9BXUsQ+/Qs9Bf00PUM4PUvPQf+B1kE/T3+EfpH+BP0SvQw9yCjhjDEFNbbKNOg6c0OPZAZ0D2sEPYo1hu5lPugxLA46DkfoAZYAPZFdBz2FNYOeym6A3oK1hJ7G0qC3Yq2gt2atod/IboSezpZDf5Y9C30FWwH9OfYc9JX8dkJ5T34H4TxPjSYUNTHeF3Vxd+g91NsJV3uqI6AXq2Ohj1Pvh16qToM+XS2HPledC32euhX639W/Q9/mwoyiwryeMFfziPGERkyImEB4xERPFaGetZ61hHte9fwd+jbPP6HvMJsQaiaZmCvzvBkktBFphNVqxKKaERqVGjWA8KiCqALohVGF0AdGDYR+V9Qg6IOjBkMviroH+tCoodCHRQ2DPjzqMeiVUZXQ/+BVsac0VJ/cOyqmP5Y1H/uOxQzDDqMxIxAzLGZk3E+Exl2KC2JHEz+WHnVqF8L9Xf1doVsVKvcP8Y+GbtWp3L85vjkywQ2IMCpqVh6fFv+g/Be51q9G4U3j18a/jutvxCPC4jfFW/lvc/x56FZ1ywP+gJ/QQHwggEyTkNDS2vEyBhn5K6LotIifH0TkXLRihgZFtKgiTiJFhESJ2IgRUREQ8ZAiIgGxyu/AmlqrVgxZopZAjlYxfnzXjBErWAo5RZ0COVWdKtfCZSabyViLFBN+zFQTWclsbjaHbGHCp5lmIrrM1ibiykw30yEzzAzItiaynnmzeTNkB7MDZCezE2RnszNkVxNzaN5q3gp5m3kbZDezG+TtJmLPvMe8B3KkORJylIkcad5r3gs5wZwAOcmcBDnZnAw5xcRozakmRmtON6dDzjRnQs42Z0OWm4hGc745H/JREznZrDQrIReaCyGfMJ+AfNJ8EvIpE/vXfNp8GvIZ8xnIZ81nIZ8zsZfN583nIV8wX4B80XwR8o8mMoX5svkyZJWJlTVfNV+F/JP5J8j15nrIN8w3IDeYGyA3mhshN5mbIDebmyHfMd+B3Gpij5jbzG2Q283tkDvMHZA7zZ2Qu8xdkLvN3ZB7zD2Qe829kPvMfZD7zf2Q1WY15AHzAGSNWQN5yDwEecI8AXnKRP4xz5hnIL83v4f8wfxBRL71O7+G+FXfKG8Uvs3sX/WN9kZDt3/VN9YbCz1O/JJvgjcRehPxu70p3hTo9u/2Xu+9Hnpz8eu9N4pf6c30ZuJKW/H7vO297aHbv8/byZsF3f593q7ertDt3+fNxndgpPx93ju8edDt3+ft7e0N3f593n7e/tDzxa/ojsSejcRORJ724xuAKH58BhM3vh4joRt+g+h+j9+E3sjfCHqUvzF0r98LPdofCz3O74ce728CPcmfBL2pPxn6df7roKfgK1TxN/O3gM+W/huhp/vTcb2N/ybomf5M6G397aDf7G8PvYO/I/RO/k7Qs/ydoXdBltCRH26Fnu2/DXqOvxv0XH8u9O7+HtBv9/eEfod/MPQiZBIdOeQhvNFMVJ0R/lmo/jT/UlR5qn856jvVb/0qnuq3/v+pVL/1t8FVv1WXcf+rqLZU/wbUWar/LWQhVWQeFZXUJVEx/Uwi4y+L3wvWAm6iBCIDkUQPGIFo6D7kHE3mFzct1vOJPqJ0RDFpPaJ04iSyYOQDpRPI0ntH3VdK9t5bOmo8OThmVHEpOTlhxJRJ1CCJROlxW34yad271+Bk0nFAn9xkkluYD9mPkGCQqDiB40kLcjNpL2xOIkiAtJS6mySQNKlHwlcrqRukCWktsp5lM4CHRBGW03dAMkkakJ+D54kWBW2NSFOSLi3rrE8iN0qL455k0uaqH0oaX9UVkJdcRzIwBnrHXXgDn3xWNEmRmo80I7GE39GvX0+Smt+3dzLJKMi/M5ncIj2oJIakkpvkmGPJ9SRTtmgkjjQnbaWl49i4gbQjd4yc/LvJdJOQW4TcLuQuIfcKWS3kQSG/GD+qdBI9ZkmWLmQfIScJuVDIPULuF7JGyMNCfiXkCSHPCnlByMuW5IqQbiGjJo4oHc9jhewhZImQc4RcJeRWIfcLeUzIS5ZUxL1KvpBLhHxFyLeF3Dtx/MTxyhEhzwp5yZKqJmSUkAEhU4RMEzJTyCwhc4TMEzL/d7/L6KAWQXZUJ5VltG+nlkPerFZAtlcXQXZQl0J2VFdAdlJXQ96mvgKZo66D7KZugMxVN0N2V7dC9lB3lGV0yFB3Q96k7oPMVA9AtlUPQbZTj0DerB6Xe+M/kdchPtMReRmIjkzEQTsR/x1IR9KJZJHOpAsZTkaQYjKSlJBRZDS5FzXlWDKOjCcTyEQyidxHJsOLGebFec9/354U1v6fj4+S+4Wk9WRpiG6EyPo9LRmLHdsVu+pWkk1uIzmkG8kl3UkPcjvpSfLInaQX6U36kL7IKP1JvsgFdu+Gev13reb/o7Uv2l3IClzsfA272oVc9t9da4rxmMhgUchMXmQeHzJKLHKHHzkzgNyYiDyYhF7JiKgUZKNU5JjmyCUtkEHTrGz5f+Dh//qdVHIHGULuIUPJMFhcWr+mWV9jkf8FukgBKSQDyV1kEBlMisjduBZBBjRwlSKyLVks5EghS4QcJeRoIe8VcoyQY4UcJ+R4IScIOVHISULeJ2ToriglF2kd0/DdlcXyWBEbx8pYBVvO1rLNbBc7ws5xhft4R3xhTVUmqDvUavUrrURboF3S0yJmRiyMWBmxLmJLxJ6IQxEn3V53iruHe6Z7o3uHuzpSifRFpka2i8yNLIgsiZwSWR65JPKcYRpJRkejpzHIGGOsMtYbW40jxjmP4vF5Uj23ePp4Zng2eLabOeYQ1M/HzYuN3I16NVrYaGWjTVHto3pEjYva2thoPLXxvMarvEXexd793pPey9Ep0ZnROdH50cXRpdFzohdHb4yuib7sS/H18I3zLfS94av2XYxxxwRi0mKyYvJiimLGxZTFVMQsj1kbszlmV0xNzPGYi7Hu2EBsWmxWbF5sUey42LLYitjlsWtjN8fuiq2JPR57Mc4dF4hLi8uKy4srihsXVxZXEbc8bm3c5rhdcTVxx+Mu+t34HEpDTZWHCmmcv8xfgVporX+zf5e/xn/cfzHeHR/AF1ZWfF58Ufy4+LL4ivjl+L7aHL8rvib+ePzFgDsQCKQFsgJ5gaLAuEBZoCKwPLA2sDmwK1ATOB64mOBOCCSkJWQl5CUUJYxLKEuoSFiesDZhc8KuhJqE4wkXE92JgcS0xKzEvMSixHGJZYkVicsT1yZuTtyVWJN4PPFiE3eTQJO0JllN8poUNRnXpEzsAfvPHZDbEiphu0RF48NepFYtk1Bj44vNbdy0LOQe1DAROeF2fma4PeBEuH1Xdbg9rTTcLjscbs9YTiJcIfbC0SHtGqEv7Qu3X7d2UoTYaV4xYvrmfhs3p+M6vebpH6vC7e23hNjg9yYI+9psWNdWSNxt424W7mN3hrAVZLlYZLLmdsu/L9i4x5SYI3G66O3HaXYLMngf7P2h2NGTyFQyk8wjC8lSspK8RNaRjWQL2UH2kGpyiHxFTsq7yyS+InGHje8zickSh0gslbjFxr2GRNm+d5nEahs/8EkskLhEomzf55XYT+JCiXts/FC+7Yey/cNyiZvFW6fgtMpHlitGriolZWQOqSCLyXKymqwlb5DNZBvZRfaRGvIFOU7OIjsx6qZeGqApNI1m0iyaQ/NovvQoZ2B/Dxs/kjPw0VYbq+VIq+dIPGfjx+kS50k8bOOBFImy/4EjNn4i1/MT2f+TYzbWrLGxttjGg/L+g4tt/FSROF3iXhsPpUmU/g5Jf5/1kviGjYfl+A9PkXjAxs87Slwu8XJ4NH5hhEf0d6nCNkRkpjcQdXYvOZrvLtl4cpGNp+Tbn7pFohzNqdckbpd40cbTmRLzJM6uv59Oy3vPZEgcI/pYX1epqPfaobbLRUVTgHO3BOeY3UfG0Rn5nLOrbPy+p8QTNp6Ts/9DlsSNNtbJVTofJbGyoT17Xnq/INfsR3n9x2rRuzOZQcpJJVlCVpA15DWygbxNtpPdZD85SI6QE+QcuUQValAfTaSptDVtR7vQXNqLFtAhtIROoFPoDFpOK+kSuoKuoa/RDfRtup3upvvpQXqEnqDn6CWmMIP5WCJLZa1ZO9aF5TIZFxflzv1JvsGlJBt/zrbxsnzDoL2SDDtKILXjjjF7ZZnSwkZ1oI2aPbNM32Cjy55xFmHvE+ZWJNbYGGnHJzMqbPSU2Gjm2tjI/q8BLEqTaMc3a2xnT+a1I4hFJ0q0MwfzzbYxxt7PLNaQuN/GODsLM+vPMS2Mby3xrI2BzTYm2PuXJdrzxprI5zSxI4QlvW1j04USj9uYLO+/Tr5Xip0hWTM5D83kOFPt2GDXt5do5xXWXM7fDfL9Wsj2FpdtbGlnapZm7yzWqihs37LWSWH7lmWUOuxyh70i7AxkGW+EtMO+yR9uZ+bV24msrYyBtjIG2jp8tD1Q/5526yTa+ZHdXCb6qKjv/ajhW5AMeX2VRPvkYO3lerbPkTi94fvar5Qo172DW2K2xKnh89BhZfiYO+xsYGezTskSZfR0km/R6UL4KmR1EZWEbaOCyBoe0m7ZY0LacX/WuBCbwT4YbndOC7dzysLt3B0kIiLkbXqhXmEUPa7MSUd8cfbEd+Ug2W7nVdZ7jI19ZBT3tc931l/uxnz7dGAD5K4rlP4Hbg6rlHDlLrl/Bq0PH9ngLGfPu+2TlQ3pGD4HQ1Y47L3h7zSkjkRoDaz0PT6JWRJlFN6zXuJFUZleHdHQpPC1GjHaEZ24NqqXjXOSbVy+JeQelbBnk0mEO8THn06H2Gh//UR4dP3FPidCZmGjHPXGQ+GjeWtLQ3H3zkyJ9jnJtsjstmVlA9GP57+bYuM2OZ4dzMb/uWDj3snh71OT8htOd/a5nNEv7KqMfSlz5xGZc4/Ks+IrmfO+jpIoc+IxuZe/kbns20yJJ8NmB7vvxGobv+tBIiJD5vG76cL+lXF+J3PsSbnXT8qcekpG8Wl5dp1eZuMZmVPOyJx85isbz16w8fs+El8jEXrIaM55HfZUMToNbxFAjZpGMomMyXPy9PxBzkTdSzael1n8wgwbf0z6JQ8/FkvcZ+NP8l0vybn8ebjE/eGRdznHGXmX5cl8eZ7IEb8yl5dlHXB5p0R5DgdNiXKOg6USF0iU+Te4TSCHVxvtjMLpzLBxcvpavTOC050S7Wdy5pL5IdYxZrvVKzFX4hyJGyTaFTrnbonZEqeQCIUSXTz3WuVot1VItNePK0RihkR7Vbgq30LtKUboDlm9nKvfKnaP4RIXSnxb4mkbtSSJvSTKEWhbJdp1AtfTwnYw1wc61plHSA8Rk0SLt954Gvp2su8okbhY4haJcozugMQeEidLXCFxh0TZP9IvMUfiBInLJO6WaO83biRLzGvwbOeGnEtDzqGxSaJdS3BPlLiv/i7iHrua4qYccaNKG6PsaOeNoyRWOjISb/yFjfEZYXUCT1gtdlFY3CbaNSJvIteyyc6QGgt2kumwWzvsXg57gsNe6LDXO2z7zzXCxpQkx9RURkfTjvX7NM2XWCZxdQN9ZCw0tXMkTzbr90lOk1ggcWYDfWSsJMtYST5dv891psSOEosb6DNb4msSDzTQR8ZVSqrEfvX7pMiISJHjStnZQB+Zh5r5JGaHVRa8WUm43XxN2NnOByeH20NfCreH14TbI86F2yO3hdslGeH2ve5we+wQh7033J6Q6LArwu2JvcLt+8rC7fs3hNu/Oxm+N6aWOOwj4fa0kvD7px0Jt8sqwqpo/uCakIoQ8zvLLfbeNXt0uD0nN6wW5XNTwu35ieH2AsNhXwq3H80IeT7G8+hQUZH+sj3OYYd+c1j2HIdd4bAXO+zlIdUQ7IqAw85x2GMc9kKHvcFh14TbjxGH3dxh93LYpQ57WUh9ZNlbHfax8P6VUQ67vcMe6rDLHfZah703fP4q68LtPygh8WLZLoft/pX2/9TWfv155Jdspb69MCvcfnxc+P2Lljvs1Q57rcPe4LC3iMroqv9F28LtJ7wOu4/DXuKwj4T7X9zCYWc47CyHneuw+4TXQIsHOewt4f2fTHXYrR12O4fdxWE7nv9kaH5EPnuyINxelhS+vstvqW+H/DeU+nYfhz3EYU9w2GUOe4HDXuaw1zrszQ57l8OucdjHHHZduP2s4rB9DjvVYbdz2LkOu8BhlzjsKQ673GEvcdhrHPYGh73dYe9z2Icd9kmHfSncXuF22H6H3dxhO+ZjRY7DznfYVl3sRuS3IP1wXpnYc3MIYRmsH5nF1rCPySr+HH+O7FemKC+Qj9QPtQWUuwe4R9C/uudHUrrTiDK6s27G3cZK9oCnxDOOveOZ5alk201mutg+87x5nn1CqGej9XeLtGpfw/9LB3X05YRQT0npDVC+b/ZVmgdaBloN2imorh6lx5AYb+w5SZevUZxL0NAGaUzcuqt0LO7sFfIXSCprgCpBiwMXrlECs0m0OCghKqH5VWqdeAsoV1BxQ+SvTJycOK/JsRA6a1FScoOUnjToKpUmTb9KqyW90iCtE7RBYjgdkhL9mqYKyrxC9t1NuzTt03RB021NLyVrFjm9JxsNke09OTY5W1L+NbKekjzIkkmHLG62tuWyq7S25fqrtE3STtChljvTFoFWtqpstbrlTsjK1sk3Nk9vJyg/fRNoT5tyUEVGdsZAcHbGkJua33TJoozszEBmT1Bx5oTM0rZ+UGa7FaB17TbdfNGm9okdDnUqz+qRdbrLYtCKrlO7bupafWuUpMCtqbdmZi8ALc0+kpPVrUTQydxkQUW5S7q7JflgFQH7CKtP9+Egd/eKHiduD9xeeefGOzf26tJ7R7eTdm9gH7tX3xVWv75r+83ut7Dfiv5a/3JB6/rvFFTd/0j/i5DV+S1At+QfyD80oMuAPaBzBVvQa11h68LW+S0gsywNlF2YVzio8JBFA5WBaYK6DMwDdxlYMLB4YAHa8wZuuivrruy79oFOD5qJfgraRMugAwMLBucM7nX3untSh24cOXlk2cjyicUTN01qP2nQFZxUManivqgpk6bMnlo99fC0pGnZ0/KmFUwrnrZo2upp26ftmXZg2lfTzk13T/dNT5meMX3P9NMPaA/0e2DoA5MfeOmBrWWBsnZli8u2ll18cMODX81InJE/o2RGxYw1D7kfyn1o9cxBM8tmrpm5ZebemRdnGbPaz5o9azNSQ/vZg2aPmz1l9tLZq2Zve1h5uP3DCx5e/fDbD9fNcc3JmlMwZ+WcA48EHil5ZOUje8vN8tTyovLp5TvmKnPz5i6bWz3PmLfuF3KVr14+Css28/ZfIyuPzLt8jewM8gt77xXnjgvfJ3akN5h1rmSeEArPHfNTr5GVHeZnXiM7L1g5NM7VNLXJWeThjt374E3sHGwh8m3cOuTXuhgSe86XfjVnoq+/oOU2kX99vrpruVPO0mzrHpDda3YMuTp7uGrlYtG3o9UurssZhF8fnroTWZv4Ogpv6b5leLLP6ivOiZ4NnA/54nnXzoGrJ4Hlp372l7nfFZbxx8hsf+xKnrf8iLdeDb3uSibEemj2elm5yc4/dn6z19HKiciA1qptu5Idr64oclzSK/OzrTuurXHL9fOz52cjx1m98tG2Ljm75fr6MYE8mBmSURvIs6F5tX5OlZk7VUSTnUXXXsmfVl7HFTx1fl6yhivrk9Z1WVzYOrHYPscE4sxKGoSTqjhx8tXTR54q/rLE4msnkB2V1tkmehdbPXBvcuJkq0VcQS/rur/Ml34lUpOmoy03cbJ1v9DF1WvnaOhJao1FnJpXzs1rJ+dkjM5xToadlOnyfCwVZ6MYPdoHyafj+f3XJd6StBrjCZt9a9asOZ6fHbpjr8yxvROt2bQjpeW25HysB1bTmomkdYELYr01a21CdvWyZAPvKk9YsbrQ5+clHZqfZ5P1BAtbrrdWxdLsSLNwfl6ryrRFNtsnXNoicSqFkHXC2aebOB//P0mcqSFUv4d10oaSPHGvUv07xEn7H5E4i38zXTmxf4mcM2XR1XP8F0ic7L+ZRLXxG8k5O6JGCaH68ydqlxCy4t5e6f+M6nv+9dH9NrLn2apdYki3kn6zc4t8Ha2qx6JuJ60r3UqsSkdYJ/vNtmog2QZCBbXUqprsq+JkGm6Tdc+dG63KStRQfbr3EfWRVUP1yU3udtKqTlDNXKliLFJQ32QVHrIqGMuSlU4XqSuogrKtK6LWwX2FkkTFs0/URugrWhVLJhvorVjVFLJFeWGWqLuqJa0TV8qtqktY6wqzrLwk20Co3Bb232lVaOK+I6JWA4k6bY+o59DXqs6u1Wv913UfLmakyJqLu/bZM9GtRLwPRmyPNL+F8G096Yjly/br2Iv1VjQ0DtLb2RZhtBG+2m7E12IWuZWkkdtAGeROMoDcJP7WcBYZTEaTLmQMqSR5ZCFZS+4jm8kWWFtBT5BdpJosJgdAz5NPyVGyinwNj1U0gSaQfTSJ3kg+pL1ob/Il7UsLyFFaRIeQb+kwOoycpCNoCTlFJ9BJ5Hv6e7qM1NHloABdAUqgK0GJtIqupU3oVvo+bYrv1UzahrVjHWgmy2JZtD27hd1KO7BuLJd2Yj1YD9qZ9WR30i6sN+tNs1l/NoDexgayQTSX3c3uprezYWwY7clK2Ch6B7uX3UvvZGPZJNqLlbKpNJ9NZ/PpXexR9gd6L3ucLaUT2DL2DJ2CL+TX6VT2JvsnLWf/w6rp0+wA+5K+zL5h39I32Sl2mm5kZ9l5uon9yH6iW1iQE/p3zjin/+A699B/8kbcS3dzH/fRvTyWB+gH/DqeQqt5Kr+eHuA38Ja0hrfmN9JPeRvehn7Gb+KZ9DBvx9vTL3gW70yP8q78Fvo1z+bZ9Buew3PocZ7Lc+m3vDfvS0/wAj6InuJFfCQ9xyfwifQyL+XTGOEz+Aym8Zl8JtP5Uv40c/F1fB1z8w18A4vkb/G3mMH/yv/BPHwP/5j5+Rf8W5bC63iQtVZUxWTtFZ/SgmUrXZWurFCZosxnA5UK5S9snLJJ2cKWKv9W3mfPKfuUo2yVckwJsg2qW3Wz3aqhGuzfapTqZXvUD9VP2AfqQfUwO6B+qX7JPlW/Ur9ih9Rj6jfsM/Vb9TT7XD2rnmVfqz+o59kx9Uf1R/at+pP6Ezuh/qyp7DtN10xWp0VpUeyy5tViWFDza0mca9dpbblbu1m7mTfROmi38yStr1bI22j3aHN4e61cm8eHaI9qj/Fh2uPa47xYe0JbzEdqT2lP8VHa09oKPlpbpa3iE7QXtRf5RO2P2h/5JO1V7U1+n7ZRe5tP197VtvFZ2g7tf/gj2r+0j/hc7WPtAF+s1Wg1fIl2SPuMP6V9rR3nT2tntEv8WZ3ojL+s63oyX6s319vx7XonvSv/UM/Ws/kBvZt+O/9Ez9P78EN6f70//1Iv0Av4EX2gPpAf1Yv0YfwrfaRewk/oY/Wx/KQ+Xp/OT+ll+kz+sz5bf1hh+jx9vqLoFfpjiqY/ri9TXPpyfbni1VfoK5RofaX+vOLT1+hrlFj9Vf1vSpz+D/1fSgv9A71aaaPX6meVm/Vz+kWlt35JDyoFruau5sogVwtXmjLYle5qowxxtXO1U4a6OrmylGGuLq6uyghXtitbGenq6cpTSly9XL2Ue119XH2VMa4BrkJlnGuwa7Ay0TXSda8yyXWf637ld64yV5ky1fWQ6yFlmmu2a44y3TXf9ajyoOsxV6Uy0/W463Fltmuxa7HysGup61lljutl1yvKAterrleVCtc61zrlMddZ1/dKpesH1w/KQtcF1wXl8QgSQZVFEUqEoiyO0CPcypMRRkSc8nREfES88mJEQkSSsiYiOSJZecU9wF2kVLmHu4crr7tL3CXKG+4x7rHKm+7x7vHKX9wT3ZOUje7J7snKJvdU91Tlr+4yd5my2T3DPUv5m3u++zXlXfdW907lqPsj90HlpPuQ+6hS5/4xMqBcjmwWuUhNjlwc+YK6MHJj5BZ1ZeT7kWfVlw3d8KvvGa2M7uqn1r86UC8Y443JWoRRakzRGhlTjema1ygzyrQYY4YxV4s1FhgLURouMhZpNxiLjSVaC2OpsUprZaw2VmvtjTXGa1oH48/GBi3beMv4m9bDeMd4R7vTeNd4V+tl/N3YqfU2dhv7tEJjv7FfG2JUGwe0e4wa4zNtuPG5cVobbXxvXNCmGheNS9oM47KHaLM8zMO0OR7Fo2mPeFwejzbPE+WJ1So9fo9fe9IT8CRqSzxJnlTtaU9zT3NtpWeWZ5b2vOdhz1xtlWeB5w/aHz1PeJ7UXvU85VmqrfM843lGW+951vOs9rrnOc8L2hueFz0va2+ZzDS1t02vGaf9y0wwm2jvm+fNi9o+otGtwRreO/g2LySN+CBi8NLgGb6FdMC5szW4F9ZRoZ3ghcEjhEKeJwzyX3xQcC+JJK8GL5HtwUt0OImmI0g+LSbxdCS5DudGYzqeNEbPduh5K58QfJdQ+PmSKOhroG9j9DXQ1y38HUWvkwikoSQR7c3QXoj2JmhvBl/Xw9d1uPtZjOcQiYT2BsbbmM/AOB4KvoXxZvEvg0/zIySDHyWZ/GvSin8T/IAft/7WGLzvhfcviAKN8UGXf8JolsDTP8h00ghnZhQ4i7QkncElwQ/IKPBo8O+CX5MpwXPk9+Cp4Gng6eAHiEHKgvvIg+AZ4IfAM8GP4P5y8FzwPPB88ALwo+AK8GPgSvBfSQ5O6BxyAfplcJC0pARMwf1IZ9ofnA8eAC4AjyV96Q7SFG88lg8kXfjdxMWHgSeQBXwWSeIPk2T+CElSng/uU1aBXwDvIy2VD8H7wR+Bq8Efgw+APwHXgGvBB8GfkpZqVPAD9XBwn/otMdQT0L8Dnw7u01SSp7UEtiUttfbACcEPtIngSeD7wL8Pfq1NBWNuNMyNhrnRysCYG+3PpLO2HvwW+DzprKeRpnor8DDSUh8OLgbfDy4FPwCeDX4YjDnSF4GfAD8PfoHk6K8CvwOfBJ8GnwGfBZ8HYw5dI8El4FHg35OmEYR0jvCRpiJ2v0Jcu4X2DVb9PIlB1L6JqH0T0dYc0XYbom0Oom0Aoq0Y0XYHoi0bvdcgXtL5wOBCflewDBF0M+LmKXgYzrcEX+JfIs6OEs6/Qgx+Q+4WcXYEvQ6Sxld3xVDSJsR/T/ifCv/d4b8DehfB9xL4fgt3tYXvpfD9LPy9DX8DiQkvp+DlFLxEwcsN8DIJXtrASxt4aQUvN2CUh+CpBTyVwEsmPLwi3vRf0P5M/PDxLny8Cx8t6LDgZvhpAz/D4Kcd/AyAn1vp2OD78NWGLgtuwp1/gz8F/qZiZKPhMxojewTeHuNfBM9hdLv4MezWb8iN/LjcsY3hNQ1ex8JrB3jtDq+p8NgC3j7EnR9i5/XGWxaSSJlhfkYmsTLLM+SR4AlSDp4LngeeD14AfhRcAX4MXAneFbxA3gPvBv8bvAf8Pngv+APwPvCH4P3gj8AHwJ8Gg+QQ+DPwYfDn4C/AXwbfI0fAR8Fng7Xke+zzc+AfwHXg8+ALyG4/ov0i+CfwJfDP4MsYSzB4ghIwFVnxS16ECBsSPMWHAocHTyn7gieUD8H7wR+Bq8Efgw+APwHXgGvBB8Gfgo8FLyjfgI+DvwWfAH8HPgk+BT4NPgM+C/4efA6MsSiXwcHge6o3+J6eHbygdwfnge8E9wl+rRcAC8FFaL8bPBQ8LHhCHw4uBo9H2/3AUvAU6NPA08EPwJ4BnA18GDwP+nww1kF/HLgI+AT4SehLwE+Bl4Kfhv/ncX019DXQX4X+Z+h/A2ONdKyRjjXSsUZ6bTCoHwRjjXSskY410g/jns/BX4CxRvo3wVr9OPhbvMsJ8HfBvfpJ8Cm0nYbvM+Cz4HOwsXZ6HfA8bKyRayS4BDwK68XwVeQTJxcnCxG7hYhh6/RSYf0JVh6sOxDl2/n7pBWhuFpHchGZtYjMWkRmLSKzFpFZi8isRWTWIjJrEZm1iMxa9P4akXYBkXYBkXYBkXYBkXYBkXYBUXQCEVOHiKlDxNQhYurwvK14Xi2/h6h8BLgYETQy+CWiphZRU4uoqUXU1CJqahE1tYiaWkRNLaKmFlFTi6ipRdTUYiXrsJJ1WMk6rGItVrEWK1eHVavFqtVitf6Xd3uPj7Ou9j3+ZKZN02TCpRQKFIRwqYBc5K6AXLUCSr1tFXFvd7YKGgREsFx0F1qCsBGwIoJFRHBT5KIUJRZFbCjQ0pKSkrRJmialSZsOSaaTNEnzTKYt+NvvmR056Dnndc4/5/zxcTIzz2Wt73et9fs9Y8lxKsepTq50cqOT6nmq56mep3qe6nmqZqmapWiOojmK5qjYScUcFTup2EnFzmLHdkSTaHmOTi6z9i6x9i5ONllrm61CVpuivhkZNstwU1Hff/duX+8OoO8trrAuutg6WWWdrLJOVlknq6yTVdbJKutklXWyyjpZZZ2scqdTrJWHWSsP07MterZFz7bo2U16NtazsZ6N9WysZ2Pr6RQ9m9azaT2b1rNpPcvv6BPWzZP06SZ92qVPN+nTruRXoxnJr+GK6Fbr6EHW0YOso9OtnVXWziprZ5W1s8raWWXtrLJ2Vlk7q6ydVdbOKmtnlbWzSi+m9WJaL6b1Yovei/Vci55r0XNpa1yVNa7K+lZlfauyrlXplbS1rcradpheSVvfqtR/i/pvUf8t6r9F/W9S/5vUf6z+Y+vfFOvfFPWfVvMtaj5W82lrYJX1r8r6V2X9qyrUexih9Yj92Y/CDzhwvnm+yTyfzYnzOfGYb+9S7R9LrrGTagl/TbZGXy261+noDke1WzF/FG7y7qvOXePctT4927k/cu4K517o3BbnfSkqHe+jLzqy1ZEtjrywuL8q1MzjxStd6vuzfL/a922+P92V7vDt71zpXFdqcKUPFo9fX9wnbiz+by4qL9k9OqjkElyBK/FtXI3v4Bp8Fz+00u9ZsjSqdJdbXP0G13mtuDd6JJqWfCE6OfkS/zdHh1q1P2eXOMXKvb9d4qHJPpOhXwQZn22NTraeXxNecsY+9pSHFNZ0518RXWAFu0TNfzm6IPmV4u7rgmg3kU0X2XSRTRfZdJFNF9l0kU0X2XSRTRfZdGdOdeZVzpzqzKuKZ1Y6s9KZlc6sdGalMyudWenMSmdWOrPSmTOcebwzZzjz+OKZKWemnJlyZsqZKWemnJlyZsqZKWemxs88afzMk2Ty5egofx1V1LiuuEcYo1YnhT+Nz+Cz+Bz+KSq3dyu3dyu3dyu3dyu3nyq3c18a7eWcT4/vNJYVPdoUtZQcETaXHImj8AEcjWNwLI7DB3E8TsCJOAkn4xScig/hwzgNp+MMfARn4iycjXNwLs7DR/ExzMTHcT4uwIX4BD6JizALn8LP8SB+gV/iYTyCX+E/8SgW4jH8Go/jCTyJp/Ab/BZPYxGewe/wezyLOvwBi+3Wlnp9KXSUvIxXsAzL8arPV4TWkpV4DQ1YhdfDWyWNWI037CAu8bTyldA0YbmdxKtYgZV4DQ1YhdfRGFonrMYboXXinmHzxKnYG/tgGvbFfmFz6Xw8ABqU/jK8VfrrsK30cTyBJ/EU/uDzV7zabZYu93dTaC1d6/h2f+fC5kkH4n04CAejKmybdAgOxWE4HDNC66T344jQMelIqIVJamES3yed4P2Jvjs9vDXpDK+fDdvKEmFzWRITMBGlmIQyTEY5KpBCJXbD7tgD8i2bgr0g7zJ5l8m7TN5l8i6Td9n+mI4DIP4y8ZeJv0z8ZVU4BIfiMByOGWI6IbxVdiI+HFrLTsPpPjsbM/Fx/Kvjvur1Mt99w3HfRA0ux2zfzcFNuBlzMd/njzr+ccc/ETrKnvT+KYz4LA6bJ5dArpP3Cq2T5TF57/DW5IPV0PdLqFNCnRLqlFCnhDol1CmhTokzSqhTQp0SypTsEXpL9sQU7IWp2Bv7YBr2xX7Y3571fTgIB6MKh+BQHIbDMQPvxxGeso/EUfgAjsYxOBbH4YM4HifgRJyEk3EKTsWH8GGchtNxBj6CM3EWzsY5OBfn4aP4GGbi4zgfF+BCfAKfxEWYhU/h02FLyWfwWXwO/4TPi/sL+CIuxpcwJwyU3ISbMRfzcAtqcSt+gNtwO/4DnjdKfhzGSu7BT3Avfor7cD9+hp+bkQ/iF/glHsYj+BX+E49iIR7Dr2EFLHkCT+Ip/Aa/xdNYBLO2xKwt+T2eRR3+gKVm+Ut4Ga9gGZZjBVbiNTRgFf5xinw+/JspfbF1YHeT/wzrwO6m/xmmdvMEE2+CiTfBxJtg4k0w8SaYeBNMvAkm3gQTb4KJN8HEm2DiTVjkGeUZ/A6/x7Oowx+wGH8KAxOex5/xAv6CJajHi1iKl/AyXsEyNEapCavxRpSauGdUPnFqVDFxb+yDadgX+0UVpXeFgdK7Q7Z0vr/v9/eC0Fv6gDWJB8Vp9ojv5FL6mO/EXCrmUjGXmtKlz4Qtpb/Ds76rQ2HKPef4P/rsed//GS94/xeIs1Scxem3wvsG363y+rrPGrEab6ApSpWudW/PdqWe7UrbfLYujBUnZYfYPM+V9jrXM0tp1t9216V216Xb4Jml1DNLqWeW0u0YRYyc3MbClkm7hYFJu2MP7Il9w9ik/bA/puMAHBiVT3ofDsLBmBGlJr0fR+BIHO+zE7yeCKvsJKvrf0/dKFWWiCrKkpiAiSjFJJRhMspRgRQqsRt2xx7YE1OwF6ZG5WV7Yx9Mw77YD/tjOg6AOMvEWSbOMnGWVeEQHIrDcDjeHwbKPuAZ7Wgcg2O9t1MoO97ff5vEJ/n7FJyKD+HD8jgNn/T3RfCcW/Yp5306LCv7DD6LL4Wxsn8V52WO+8cp7Xm3zPNu2fWYI4abcDPmOv4O99b/xal9v9cFrvsAfo4H8bjrPYG/TfHf+IyHZbFzd4WxyVHYMrnEXqksZCfTc3K51z19vleUKk52K9TkaT7bF/vBPJ58QOF3yUKnj++r5ujQ1uIe7eV3P7/K5zcWf0cp7LcGo4mJ88M/Jy8Kr9idlhd+2/LdQHR04oMhkzgJp+IsnB+aExeEVYlP4CK78s+HjXYXG+wuNpRfHFaVX4LbQ6b8P3AHfog7cRfuhme58vn4Me7BT3Avfor7cD9+hgV4AD/Hg/gFHsIv8TAewa/wn3gUC0Mm9YGQiZIizSUu9kx8jWfo08Ufiz9OnBbS4o8T53m9I2xK/NCzy5ejY8yvYxy5qvxzIV3+T/gC/hlfC5vKL8cVuApX47u4PcRyi+UWyy2WWyy3WG6x3GK5xXKL5RbLLZZbLLdYbrHcYrnFcovlFsstllsst1husdxiucVyi+UWyy2WWyy3uOLCsKniE/gkLsIsfAqfxmfCJrnHPDw1rOPQ64mij2Fl8ZfDg+T+hLyfSHw5LEp8HVfijrCUBksLz99yf0LuT8j9Cbk/Ifelcl8q96VyXyr3pXJfWn5DWFR+I76PefhBWCSupeJaKq6l4loqrqXiWiqupeJaGp3DgRoO1IithwM14htTQaMqaFScXSJpF0l78vN/HU1e/NfY6lLJmeOsLpXcOW78GX+Z6hpVXaOiaxddu+jaRdcuunbRtXOmhjM1nKnhTA1najhTw5kaztRwpoYzNZyp4UwNZ2o4U8OZGs7UcKaGMzWcqeFMDWdqOFPDmRrO1HCmhjM1nKnhTA1najhTQ4F2CrRToJ0C7RRop0A7Bdop0M6Zmug8KlRToZoXr1Ghmh+vJc6PDpT9LNnPGv+99c7x5+mjqLAPFU6kwj5UOHH8V+Iv8eo1Xr3Gq9d49Ro1ZlFjFjVmUWMWNWZRYxY1qqlRTY1qalRTo5oa1dSopkY1NaqpUU2NampUU6OaGtXUqKZGNTWqqVFNjWpqVFOjmhrV1KimRjU1qqlRTY1qalRTo5oa1dSYRY1Z1JhFjVnUmEWNWdSYRY1Z1KiOJqmFURmnZHyPjK+T8RQZ3iTD66P9aLSMPsto00abNjpMocEU394r/2XyXyb/ZfJfJv82+bfJv03+bfJvk3+bONrE0SaONnG0iaNNHG3iaBNHm16pCY//w7wbjY5JfMaMuxg15tzlZty3cAVcW8Td7866OWbGzWFVxfdDpuLfMQc34WbMxTzcglrcih/gNpiNFWZjhdlYYTZWmI0VZmOF2VhhNlaYjRVmY4W5WGEuVpiLFeZihblYYS5WmIsV5uJuk1GOCjOvMNkzxdhjPZ7W42k9nqZb4Tl9hm/X6N203k3r3bTeTevdtNhjscdij8Ueiz0Weyz2WOyx2GOxx2KPxR6LPRZ7LPZY7LHYY7HHYo/FHos9Fnss9ljssdhjscdij8Ueiz0Weyz2WOyx2Asz6+KwntqvU/ild2dWIaOu6AQZ1fl+s+/HuPE2N97mxtuO7XJsmWMrdEq5TI/VKeWyPXb8N6BXOfQ2h96WZZ0s62RZJ8s6WdbJsk6WdbKsk2WdLOtkWSfLOlnWybJOlnWyrJNlnSzrZFknyzpZ1smyTpZ1sqyTZZ0s62RZJ8s6WdbJsk6WdbKsk2VddLJManmzkjcrEzXRAfxZKYOv6YAdOiAnk1tlMm38l5lphV9mZPKzwq9ZvFvJu5W8W8m7lbxbKataWdXKqlZWtbKqlVWtrGplVSurWlnVyqpWVrWyqpVVraxqZVUrq1pZ1cqqVla1sqqVVa2samVVK6taWdXKqlZWtbKqlVWtrGplVSurWn18cbGPPySLN8b/P6eZor5X1M9GFfJtlG+jXBvltbec9vbNffJplE+jfBrl0yifxqg0MZuv14UdievDW4lb1cXdYTBxX+GXdp/uTNwaclGJ/90RHemIXOIGFXEjbg2tiduissTtzr4r9CXujyoTC8KuxANhV4X9bYX9bcWBeB8OwsGowiH4umMuxWX4Br6JGlyOb+EKXImr8G1cje/gGlyL72I2rsP1uAE34nthVzGfnSLtScwJvXLZkvhp2JbwpBddkrhGtV+L2T69QZY34ubQlJiLebgFt0Z7J24LzyTmO+7HoTtxD36Ce7EgPC+/5ysS4fWKJCZgIkoxCWWYjHJUIIVK7IbdsQf2xBTshanYG/tgGvbFftgf08MgDQdpOEjDQRoO0nCQhoM0HKw4LTRVnI4z8BGcibNwNs7BuTgPH8XHMBMfx/m4AF+Xx6W4DN/AN1GDy/EtXIErcRW+javxHVyDa/FdzMZ1uB434EZ8LzwfTVA5G6m4loqbEveHYbV0axhRJ2PRp7mQ50KeAzs5UKiwTVacnBUn54gclfNUzlthclaYnBUmZ4XJWWFyVpgc9fPUz1M/T/089fPUz1M/T/089fPUz1M/T/089fPUz1M/T/089fPUz1M/T/089fPUz1M/T/089fPU30n9ndTfSf2d1N9J/Z3U30n9nVa5nFUuZ5XLWeVyVrmcVS5nlctZ5XLUzVM3T908dfPUzVM3T908dfPUzVM3T908dfPUzVM3T908dfPUzVM3T908dfPUzVM3T928nrtOdRd6cQ5Nb1Ldt0a7UbuH2pupvS26msb1NK5X6X2OXEnrHlr3JL7n/ZzQ76wRlZ9V+VmVn1X5WT68w4d6PtTzYTjxo7BCB6zTAet0wDodsE4vvW42vMqjVh618qieR/U8qudRPY/qeVTPo3oe1fOonkf1PKrnUT2P6nlUz6N6HtXzqJ5H9Tyq51E9j+p5VM+jeh7V86ieR/U8qudRPY/qeVTPo3oe9fCoh0c9POrhUQ+PenjUw6MeHZLVIVkdktUhWR2S1SFZHZLVIVkdktUhWR2S1SFZHZLVIVkdktUhWR7X87iex/U8rudxPY/reVzP43oet/K4lcetPG7lcSuPW3ncyuNWHrfyuJXHrTxu5XErj1t53MrjVh638riVx608buVxK49bedwa1XAwzcE0B7fz+2UubuNcB+e2cm6Qc4OcG+TcIP9T/H+We1nuZRN3+uxuTs8PT3Owj4N9HOzjYB8HBzg4rE6WcLGLi11czHIxy8UsF7NczHIxy8U0F9NcTHMxzcU0F9NcTHMxzcU0F9NcTHMxzcU0F9NcTHMxzcU0F9NcTHMxzcU0F9NcTHMxzcU0lwa5NMilQS4NcmmQS4NcGuTSIJcGuTTIpUEuDXJpkEuDXBrk0iCXslzKcinLpSyXslzKcinLpSyXurjUxaUuLnVxqYtLXVzq4lIXl7q41MWlLi51camLS11c6uJSF5e6uNTFpS4udXGpi0tdXOqKPsilHJdyxW78bxdGuTDMhWEO5DhQeG4apu4wdYepO0zdYeoOUzdH3Rx1c9TNUTdH3Rx1c9TNUTdH3Rx1c9TNUTdH3Rx1c9TNUTdH3Rx1c9TNUTdH3Rx1c9TNUTdHnWHqDFNnmDrD1BmmzjB1hqkzHB1lMrxtMryt+7PW8/LEnbK4SxbF6P19PxZY7x+wbk+3qzsAB+J9OAgHowqH4OuOuRSX4Rv4JuwgaT1G6zFaj9F6jNZjtB6j9Ritx2g9RusxWo/ReozWY7Qeo/UYrcdoPRZ9k9Z9tO4TcVbEWV2Q0QUZXZDRBZmi/n/rALr/T5VvB58o/LLxv6/2Pn708aOPH3386ONHHz/6+NHHjz5+9PGjjx99/OjjRx8/+vjRx48+fvTxo48fffzo40cfP/r40cePPgpmKZilYJaCWQpmKZilYJaCWd2Q0Q0Z3ZDRDRndkNENGd2Q0Q0Z3ZDRDRndkNENGd2Q0Q0Z3ZDRDZn/i27IcCjDoQyHMhzKcCjDoQyHMhzKcCjDoQyHMhzKcCjDoQyHMhzKcCjDoQyHMhzKcCjDoUxxjR8q/r+Qp/Aqy6usaZM1bdK0z9K+oHGWxlkaZ2mcpXGWxlkaZ2mcpXGWxlkaZ2mcpXGWxlkaZ2mcpXGWxlkaZ2mcpXGWxlkaZ2mcpXEhx6wcs3LMyjErx6wcs3LMyjErx6wcs3LMyjErx6wcs3LMyjFbUaiF2bgO10O9yTErx2y0h1kc/33PqLQ7i52eM1Nz/6cesXe/zh7Vk6luS+m2Ut22SaftrdPKo1nvTpTZVuM5uMlz+a3udUcYUtlDjs7rzSGr86izjqVwjsKj79k1DanuIdU9pLqHVPeQ6h76/zRthlTfkOobUn1Dqm9I9Q2pviHVN/T/dFdUeFrJU2rFu88to1Fy/LM8l3ZFn6dtA20b+DfAvwHaFp5sOjgxkb699O0tzr/53v/UM8J9dkoLfPZA6KVrL1176dpL11669tK1l64NdG2gawNdG+jaQNcGujbQtYGuDXRtoGsDXRvo2kDXBro20LWBrg10baBrA10b6NpA1wa6NtC1ga4NampATQ2oqQE1NaCmBtTUgJoaUFMDdO+ley/de+neS/deuvfSvZfuvXTvpXsv3Xvp3kv3Xrr30r2X7r1076V7L9176d5L916699K9l+69FYU8Z+M6XI8bcCO+F3qLGu8Y74R8tFdicbRP4iU7zpfV5SthbmJFeCKx3T4jDvMTO0JT0uRMHuPp9bjwTPKkkH73Xyt/Idoj+cUoNf5vCvtSnWE1xxa67iK8rANeCS2JZSp9OVa450qvq0JnYrUn3RZ3a/Xahr5ocqJfp8b2uDk7oTHsDMPJKHQnJ6EM+3n6Py70JI8P25Mn4EScHHLJ08PmVHXIpi4NjalvwYxIfdvr1aEz9R2YCanve53j9SbYQ6dqYcVM3Q1dmZrv+3t9Zvalfub9AvzCNRaGHaknXf8Z/C5sT/0ez/qszvvnvcop1eSzZqzBOu/b0envDeh23EDoTm3HWOiunBoGK/fGPvB0WOnpsPIwn18eGivt6SvFVXl7GK28O2yvvA8P4NEwGF04rmoHn/JUXUfVAaoOUPVtqm6hajtV11F1O1XXUXUdNXPUHKHmCCVHKDlCyREq7qBiTMWYijEFByjYQcF1FFxHwQ4KrqNgOwXbKdhBwfZ/ULCDggMUHKDgAAXbKdhBwQ4KDlBwgILrqDdAvQHqxdSLKTdAsZhiMcViSsWUiik1QKkRSo1QaoRSI5QaodQIpUYoNUKpEUqtG1eqg1IDlIopFVMqptRIdEjiqfD9xOLwO0rVq8FdFPo1VbYmNoZvqLPZif7wsOr+QmLUTntHOFOdvZpMhmXJ0vCjZCpcpdpbk1NDVfKg6LLk4eG7Kv+Q5LHhXKo9qvpnqrkHk2eGm5LnhC+P/+usruQXwyPJi8PlyZqwpPDvl2T1ZzPpJavEK1gR3nTHt/ix0R3T7tDvqkOuuNkVt+ml0/XSRzwRPsWxl0Kzswr98nqxR/qi9zl7jTNfc+YWsaXFVuEKLcV+OCm0OPOl8Jqz3nLWc87Yyxmb3K+r2L+eqos9fJA+Pcb748JGZ3WLcll0oMraXjxzmcpajpUqZpWzV6uqFrvIVq9tYYvq2KI6tqiMLSpjk8rYpCo2qYrtqmK7qtiuIvIqIq8i8ipik0rIq4S8StjCuS2c2861wuTvi3YTT6nIF7rfU+77J7k+j5VhJ1030DOduiHkXH/E9UdcfyT1gPe/DDnXGYkmOGtU5Nc4Y3Oh7u2EnzJLFsvlldDk085EszlS0HBjyNCt2XXXue666GJ3ne/ouXqqp1gtfwpz3H2OM4cpsZMSO12hhxKBEqPjfTVKidFEe1jkinUqqSmRVT3lmBouTe7DjWnYF4eGa5OH4fCwNXkEn4/EMdyje/Is359T/LfLx4vmeL3XQ91R6o7qvR4Kj1I4UDjovR4qzKF0oMR8SsynxHz910PtndTeSe2d1A76r0f/9VB9J9V3UmsO5UcpNif1tEm0CC+Ea1PLvL6ORqzGenTgTd91ed3kGpvDtZVReLVyYlhUWYpJqPJ+Bi43oeaF+Xqwh5s7K+8Pmyt/hgX4OR4Ki6IKFTmiGjdz+kTT5x3T5x3T5x2un6rT39Hp7+j0d3T1O9EB/Ch4maP9EO2HnFVqRg2bUcNm1LDcR+U+KvdReQ/Je0jeQ3IdkuuQ+TJsvgybLcNmy7DZMqy+h82WYbGOinPIrBg2K4bNiuGScnecpwLu5/5S7v+E+z9JLOFoPV4KKxLLrIrLsSI8qgp2Jdb4vEVttYfZifXhL4kOdGID3sTGcHuiy+tm9LjmFq9p9KIvmqda6hIZf29FVuUNeB3EtnBtYgjD/h7B9lBjNjWZ3O0md7sO/oIZtTqxy3dv452wJPFXr8EqXIIECvNrgmqb6O9Sc6o8zE1W+DsVrizOs9297oE9MQVTw+mq9XzVer5qPd/aelty/3B9crrvDsBB0ZeSVV4PwaFm3mE4PPxzcob378cR3h+Jo/x9NI4J55mR/2ayPM21eVybx7V5qv0i8/Lu5CmOORUfCrckP+z1NJwebk6e4fUjODP8i644P3m2v88J1+iML4z/i9mndcj1yUuifZNfQU14w3z9baomNKUux9Vhly7ZpUN+okN2qZJ5qmSeKpmXmuf7W/AfuAM/xF3RPqm78SPMd/x9PrsfP/N+AR5wnQe9/6XXh8OVqV/hUSwMt6UeC9dbzW5OPeX9b/BbPB1m6qqZVribVeA8FTjP/uA2q9zNqT+EW1KL8ZzjnvfZC477i7+XoN7ny7xf4fOVrtvgs1V43WeNWI0m12rGGqx1/DrHtmO97zpgeqvuebp2Zmpj+IvOnWkVvVn3nq97Z6Z6fKYGU2ow9RbUYaoP/WFpSh2m1GEqCzWY2oYhDJsAI8j5Ox+WpHZgp7/fgZpLqTlTYW6luqtUd5XJsKRygteJYbYpMduUmF1Z5v1k06McarAyFZZWVmI3f++OPXy+J6ZgL59PDe1W+nYrfXvlNNfb1zH7YX9MxwE40LEH+f5gVLn/IT4zYU2juZU3hyYdPq/y9mifSl5X8rqS15V34i7c7bt7w/U6f55JNdOkmmlSzTQF5plWMysfdJ2HxP2waz7q+gu9fwy/xuPh2qjKlLjGlPh9cWV+ubieLzcJenX8fJ39Lzp7sa59Rte+Zs2NdeyLOrZHVzbrxgZduEQXrtV1H9NZX9FJz+iYu3XMch3Tq0vu0yVrdUG96n9M9X9K9S9V/YX/UuEUFf9G9FXz6kmR/NaKtSbxjFVqsZnwJ589j5etc6/4blloMz3brFxLzawBK9dia+CAaPutXoutXovNr4UiX25O9Yt8tVm0TNTt5s1m82azyHvN6xaRbzOzW8zsFvNkmeifNgueNgueFuUuUX62sOexeq1J/ZtJe2lYbAVbbAVbYwVbrDcH9OaAFWyN/nxSfw7ozyf155P680kr2JrUrc77Ae7EXaHNVG8z1dv05oDVbI3VbI0J32bCt+nNJ61mi/Xmk3rpaXX/tDp/Wk33W09arCct6rbfmtKiVvvV6TJ1uVBdLlSXC9Viv1rbrNY2q7XNaqtfbfWrq83qarO6WmYtalFTy6xwi9XUk1a4NVaONvWxUH30q4/NdpBL1EE9XrJDWxH+ROktVodmtXCuab7BNN+gHlZRtZuqTVRtUhN/NLk3UnalSb2Bsispu1JtbFUbb5nGa03jtabxWjVytBoZM2U7TNkOtbJenaRN1kaTtdFkbVQzrabpelO03eRcayI2m4jNVN9C9S3U3mICNpuAzSZgswnYbAI2U3aLqdds6jWbdM0mWrsp1mGKdZhi7aZYoynWaIK1m2DrTbD1ptV606rDdOownTpMpw7TqdF0ajSdGk2n9aZSh6nUMT6VGk2jDtOo3TRay52VJssGk2UDl1ZyaKXpstF02WiCbDQtNpgWG0yGDSbDBpNhA6eaONXEqSZTYaMJsIFTTZxq0vkbOLVS5zfr+GYd36zjm3V8s45v1vGNur1Rt3fo9g7d3qHbG3V7h27fwMUmXb5Bl2/Q5Rt0+QbPxH12x4V99Unh7ehkXVZ4zvqWjlqgoxboqJf5PFfX7ODrr/lax9c63ZLhaw9fF/F0EU8X6Yi8LsjzYi4v5uqAPD/mqvi8Kl+gyheo8gW8mKvK86o8r8oXqPIFqnkHvRbRaZFq3kGrRbTqoVWPqt5Brx6VvIM+dfSpo08dfXpU8w7VvINGdTSqo88i1ZtXvQtU7g4518nxlXC3ih2TwRLvtos9Dk+pzY3R/jLb7l1aZv0y65fZkKwazYGMzBpl1ii67aJrFF2j6LaLrlFU20W0XUT9IuoXUb9ototmu2j6RdMvmkZRFJ5l+6OD3Cl2p/XulHantDv10bDwjNrkbqPu1uRuTe4Wu1uTuzW5W+xuTbQYocWIu8a0GHHn2J3T7px25zQtRtw9dvfY3dPunnb3JncvPB+mPSNsNC+3hzdk/YY7j7rjBrPseRN3nYlbeD74Y3HiljpqdPwZKjP+3zAdl7w4OqGoXLdvNvimu/iu8Gy3q6jjxPGzRrzLun6b6w/bDbfb02YpvFOe5ZSIMNGetBSTUOX9DDwUhlxjY9GZZkd3WkUKMY5GM1xjuW/+RL8R1/qzI9762/N9cb2JzJdJKEN5+LOsPiObr9FxhI4b6biRjoXn6430GxHDn8WwXAzLxbCcln//3D0dB7zn+bvK8YfpxRleH3L8wz4rPHOXyHkwmia+YTENi2mrmLaO/4KzTfT94tomrm3i2CaObWLY5t7D7j3s3sPuu9V9t7rvVvfb6n5b3Wub+wy7x9boMFd/Qfavynzle6ZsC52fdqdccaqWF/+lyA/GvVwv+5rCv+j52/SR8Up3fcFdX3DXF/6Xk6cwaaocV5gyM7wWJsZDjv3HiTG5uIputw/Y4dm6lK+fD1eP/+uON9z5S8V/MXqCuDc68o9ca/Rc0Cb+F6n0zHsmSGFlaKfUQ7wurLtvUeshaj0knxdd9U5XW8TFRnu3Ngo+RMGHONlIxYd0RLuOaOdoo/xe1BXtctwox41y3MjVRnuwNnuwNvuttn+YHO1cbuRy47uTo8o1DgsPyf1FeW/kcmNxekyneifVO4u/RsSmyI7wiqgHKN8p4gERF37DGaB2J7U7RTkgwgEqd1K5k8qdVO6kcieVOync6U4DFO6kbid1O6nbSd1OXRWbujutfqpHhcXhxShhFdxpp7QjStqNrPBu2LveqMq7Qc8wefuTQfuTQSvlmJVyzEo5Nv4bYcaeZcg+Pm/Fy1jpMla6MSvdmP163mqXsUfP21cM2pPnrW5jVrcxq9uYfXfevjtvZRuzso3Zdwxa2TL2HoNWmjErzZjVZSyabC3fIZJfWLsHrdmFfd1b7jrIwUc5+Ghxqky22o8mp5okx4SsDPodlU2eHO1uwnjmiY53n/ZogutscZ3Cb675QgYyThV/QcgUjqfEVP10csj7vPCrrCOctzna27tC9qOyH5X9aDHzS+wVvhJa35P5qMxHi1k3eW3GGnRiA2Qns1GZjcpsNDrY3VbTN6bvOvque++TuXtn3SVN29gd0u6Qfvdp/NniL35p2sa0XUfb+O+e0Nd53178FbD4pE7bde6epu269z6tRyUyj6PDkpX+mhoetlsatFsatFsaFNNzYnqOWrEdU78dU+HXtQE6bbUzGuTA2xz4DQd+4zlyiufIwr+OLOx6+u16+sX1nN1Nv91Nv91Nv91Nv91Mv91Mv3ies5Ppt4sZFNNzdhT9dhT9dhT9dhP90STR/N6dt7tj3h23u9sOd1vlbquiQ327iW69YlwvxvWOzI3/hv0/HDrZzu50dX0OHRaGXhrupOHOd1161md13j/v9QU7rRVe3+vaOu/b8Tf33nRMt+M3h/V/5+I+VOumWjfVuinVTalucXeN/ybVTZFuinRTo5sa3dTopkY3Nbqp0U2Jbkp0U6GbCt1U6KZCd7S/PN+U45tyfFOO2+TYIse1clwrx7V2qoWqWyuftXaVGbvKjFzetLMsVOBauayVy1o7yYw81spjrTzelMObclgrh7VyWFv8rygPTf5rdGi0IPp6eCC6FJfh2vBI9L1wT/R9/Dvm4Cb0hAXRFqQx4pgd4cfRTuzC23gn/LjkiNBUciSOwgdwNI7BsTgOH8TxOAEn4iScjFNwKj6ED+M0nI4z8BGcibNwNs7BuTgPH8XHMBMfx/m4ABfiE/gkLsIsfAo10bSSpeHFkpfCH0texitYhuVYEZaUrMRraMCqsGTCw+GeCY/gV2j0fjXegFwn/BUh/HjiHuGBiVPCgol22RPtsifaZU+chn2xH7rDPROzjhnAULin9EicgivCA6VX4ip8G7PDI6XXge6l80NTaVNYUuqJZ9KMsGTS+3FE+OOkI3ECTvT+jP+i7kzAoyrPvn+fJfNMzpxJQhIChH136aLWTyutprV0sSpKFbWgiILlhYKCLAohIFpXlEUUEBBEEKOoUNBWFq1K1WqVdYBhAGVPGMIJS1gT5nl/5zD4gkBRX6/vu77k+s0585xnO8+5n/993yNmoKOeoDpBZz1ajYcZsJH3m2Az8MzUDv2CSkIl16p4f0CPDpt6WdgCGzIgBESKYSLFcCY4EAEXopAF2ZADtSAX8uAy/U64DdzO+Z84PsDxZY6l+u/h/XpZJn1l5hEf3ya5eonkAeontaEA6kBrOAfOhfPgfLgaroFroR1cB9dDe/gD3AA3wR+hm56M5U7GcidjuUOlv35eBsBAuA/uh8G6FGsuxZpLseZSrLnUfkIvsUfAk/AUjIRRMBrGwNMwFp6BZ2EcTKXdCzBNl/LUJ2es0Usy1sMG+BI2Ur6dYxlUcH0X7KbsqF4SCoGCTHCgLtSDltAKWIcQ64B1lIYu5ngJx59x/C3cBp3hdugCvfRkLGcyljMZy5mM5QzFcoaGuN8Q94sFlYbv8ddGxuhl8jSMhWfgWRgHM+FlKIVX4FX4FP4Nn8HnsASWwjJYDitgJcRgFcRhi56LJsxFE+aiCZ/IPqiC/XAADsJhPRudmI1OzEYnZqMTs+1yvczeAUnYCRVAdmJ7UAm7YQ/sBTIWuwr8dinQejb7ba5CCxR7X7HXFXtdsc9VO/2JupFjB+hInU7QWc9Wf+Z9fxgA98H9MAQegUeB/aZYI8UaKdZIsUbsp9nqRY4zOM7muBBYB8U6KNZBsQ7stbnstbnstbnstbnstU/Ya5+onVABlbStopz1YN/NNn4kttSSDAiBgjBkggMRcCEKWdBGCuRn0E0XY+PF2HgxNj4AG++JjffExnti4z2x8Z4yiB4G697YeW/svDd23hs77y0PSbb8BR6GR+BReAwehydgBDwJ86WRLIAtejBPdDBPdDBP9BmeaClPtJQnWsoTLeWJlor/LZOHdQlPtYSnWsJTLeGplhgT9SpjEkyGKTAVXoBp8CJMhxnwEsyEl6EUXoFXYRa8Bq/DGzAb5sBfYS7Mgzf1KvMCyTYvlALzYo5F8DtdbF6l+5lXQ3ve99DDzZ66l/ln6KV7EbNdbXXS/YnbrrZu59hff2oN0MutZZJhLZd8ayVR7yqy8tXiWFt0qbWVWGSbnGNt51jm/20gjjsl1+4vtewBMBDug/thEAyGYhgCJTAUhsFU3Ru96I1e9LZXSLa9EmKwClbDGojDWkjAOlgPG4D1xNpLsPYStKY4o5ZehdUPRmN6Z+wUB30pRl+K0ZfeGdVSK2QBthXKhTxoDufq3qHzOF4IP5ECNKV36FLOe+li9KMY/ShGP4rRjwHoxwD0oyf60TOELYUGA7YUek6vCk0M/g/6VaohNILG0AQuhHa6lJ02mJ02mJ1WovpKtroXHoDhMAbGUz6V4zRpxG4qUbM430j9TbAZsDl2zjPsnGfYOaXsnFK1SzKVB5XUr+I69scOKlEHJTucr1eFa0MB1IG6UA8KoT40AOYaZq5h5hpmruGm0AyaQwtoCV3pqxvcBSW8HwrD9KpMQ69ybtH9nI5Qons5w4B947BvHPaNw75x2DcO+8Z5CkbCKBgN3K/zNIyFZ+BZGAfjYQI8BxNhEkyG52EKsD7OCzANXoTpMEOyI8UwBEpgKAwD1jbC2kYeBPZ3hP0dYX9H2N8R5hlhnhHmGWGeEeYZYZ4R5hlhnhHmGWGeEeYYYY4R5hhhjhHmGGGOEeYYYY7u+ZKdlQkORNAH01rKTtmCGvln/t8eqWPeh5q5qJmLmrmomYua+d9d5aJFLmrmBr9RyIJcnSACSBABJIgAEkQACSKABBFAggggQQSQIAJIEAEkUL48lC+PSCBJJJAkEkgSCSSJBJJEAkkigSSRQJJIIEkkkCQSSKKS3VHJ7qhkd/kv7UkP6Al/hl7QG+6Ge6AP9IV7oZ/ugaL2QVH7oKh9UNQ+KGof1LQtatoWNW2LmrZFTduipg5q6qCmDmrqoKYOauqgpg5q6qCmDmrq4HfX43fX43fX43fX43fX43fX43fXi/95Rym8Aq/CfKmH8tbD/3r4Xw//6+F/Pfyvh//18L8e/tfD/3r4Xw//6+F/Pfyvh1r3Ra37otZ9pYxcthx2QBJ2QgXsAg8qYTfsgb16PMo+E2WfibLPRNlnouwzUfVBqPogVH0Qqj4IVR9ETB8npo8T08eJ6ePE9HFi+jgxfZyYPk5MHyemjxPTx4np48T0cWL6ODF9nJg+TkwfJ6aPE9PHienjxPRxYvo4MX2cmD5OTB8npo8T08eJ6ePE9HFi+jgxfZyYPk5MHyemjxPTx4np48T0cWL6ODF9nJg+blwvBUZ7+APcADfCRB3DE8XwRDE8UQxPFMMTxfBEMTxRDE8UwxPF8EQxPFEMTxTDE8XwRDE8UQxPFMMTxfBEMTxRDE8UwxPF8EQxPFEMTxTDE8XIJeaRSywil1hELrGIXGIRucQicol55BLzyCXmkUvMI5eYZ3wmjvE5LIGl4uDFXLyYixdzzTb+/6PK8Vccf6eH4c3a4c3aBd6sk64wu0EPvNsJXs3srSvwbJfj2Xri2S7Hs/UkFx9l9dOvWwv1B9a7kmW9j/dbSj6/nDx9pdTByyXxcpa1hvz+mKfLwNO1CP7GZJLynXie/uLi5Vy8nIuXc/FyLl7Oxcu5eDkXL+fi5Vy8nIuXc4mkk0TSSSLpJJF0kkg6SSSdJJJOEkkniaSTRNJJIukkkXSSSDppj9eePQGeg4kwCSbD8zAFpuq2eM62eM625F3zyLvmkXfNw4s6eFEHL+rgRR28qIMXdfCiDl7UwYs6eFEHL+rgRR3iTI840yPO9IgzPeJMjzjTI870iDM94kyPONMjzvSIMz3iTM/eryvsA3AQDsFhOALVUAPsCTzzIDzzIDxzdzxzDM/cl/wvTv4XJ/+Lk//Fyf/i5H9xsoQEWUKCLCFJlpDAg7fN2Ko9MoUEmUICT94dT949gzllMCc8els8ukvWkMhI8V5rLyRggAmWuHh6l4wiQUaRIKNIkFEk8Pwunt8ls0iQWSRCDajbEJpT1pL3rQCtJctIEBm0JTJwQxdwHRskOsgj60gQIbQlQnDJPBJkHgkyjwSZR4LMI0HmkSBy6E7k0J3IoTuRQ/cQOhpCR0PoaKgf9IcBugfRRA+iiT5EE32IItqSz8aJJGJEErHQlOAvMhWE5sCbwV9lKgh9yHGZnkeUEQvxLMl746GDUkDEESPiiBFxxIg4YuTC88iF55ELLyIXXkQEEiMfXkQ+PE/9TBxy4nnkBR55gUde4JEXeOQF64lSZpIXeOQFHtFKX6KVvupWXaFug856EPmBp3pxzp5Sd8M90Af60ue9wH2RO6wnd/DIHTxyB48IxyHCccghPHIITz1B/RHBXxX0iHoc8gmPfMIjn/DIJzyioEFEQQ5RUD3yCo9IaBCRkENu4ZFbeOQWHrmFR27hkVt4REh9iZD6EiH1JULqq7bS9zbYDmi9QuuJmsYTNY0nappJ1DSTaGkQ0VJfoqWZREuDiJYccv04uX6cXD9Orh8n14+T68fJ9ePk+nFy/Ti5fpxcP06uHyfXj5Prx8n14+T6cXL9OLl+nKgrRtQVI+qKEXXFiLpiRF0xoq4YUVeMqCtG1BUj6ooRdcWIumJEXTGirhhRV4yoK0bUFQtfxJx+ApfpeeE2cDt9d+V9N7gL/kRZd47/BT2gJ9yjk0RoMSK0GBFaLPwAbUZR/jJ1S/Wi8Cucvwr7dTxTpIAILpbJvWXm6XmZtcVxbtBbnBvhJrhFtyOya+fcyvn9usIZBMVwPNIbzvnD8Ki4RHwuEZ9LxOcS8blEfC4Rn0vE5xLxuUR8LhGfS8TnEvG5RHwuEZ9LxOcS8blEfC4Rn0vE5xLxuUR8LhGfS8TnEvG5RHwuEZ9LxOcS8blEfO7/w4jPPSniqy0j9c+NznKt0UVuMO6Q+4075ddGV/m50U1uNn8nt5g95Carg77SukX/0lqgZ1rv6mutzfoTYsN8C4WztusxVrn+2Noh9a0k+dZOfUAay8jUYpmlV8g/9Qp6vyL912Avoffz6f18ev+F0UMfwLduYxSyObKyDroNo1zOKAOsRXqh9Q68m6qw3tNv4ePWWB/oD63FeiSj/4WRD1nbdBmjt2H0UYxuMfoURl8sYWuJnmEtY05k8tYK3dVaqedbMVqt1uvwihuIU2fpj5jbR9T8I75zCbXHU7vYWpFKUXsata/Cj75Fi/toMTH4244/ZrYlePOGeO+rzGvx5D10D/NuscxXiZMX6zvNj/UE8wv5P+Z+PHK+ZFs/1i9Zi8TFS/+YO/grI31MPmpZK8g1V+k38dIZ9J7ijmJ46uK0p7bSOanFnZVZO7irJOU79S7jZrH1fMmAECgIQyY4EAEXopAF2Xqh5EAbvU5+Bg/pOfIXeBgegUfhMXgcnoAR8CSMZA3n6+WyQC83TL3OsMCGDAiBgjBkggMRiEIO1IJcyIN8qA0FUAfqQj1oBI2hCTSFZtAcWkBLaAWt4Xq9wWgPf4Ab4EYogaEwDB6A4fAgPAR/gYfhEXgUHoPReq0xBp6GsfAMPAvjYLxea16g55gXQxG012+bj+uE+YROYOUdeCoV2FkNNjaHJ1GBjV2HjdVYB1Ll1kF2xCGtrMOpg9aR1DqrWoesmlSZdVQXWSnKta5nZ6TK7ZC+0lZa2eHUQTsztc52dMiOpMpsVxfZUcqzqNdfz7cHwEC4D+6HQTAYimEIlMBQGAYv6nX2dJgBL8FMeBlK4RV4FWbBa/A6vAGzYQ78FebCPHgT3oK39QZ7PiyAhbAI3oF34R/wHrwPH8Bi+Ces0HPslRCDVbAa1kAc1kIC1sF62KDnZFTr+SELsN9Qhl4YyuWYB83hPLgQfqLXhS7l+KTeEBoHE3jPfYZe4pz7CXE/Ie4nxP2EZlM2B+bCPPg7zKd8ASyERcDcQ8w99Cnn/4bPOP8clsBSWA1r9NpQgmtlsBP2wF7YB1WwHw7qDSoLsiEHakFdvVbVg0KoDw3gYr1OXQp99Rx1LzwAw2EMTIVpermaxfGgnhNurTeEz9frwj/ieAHHdnAd53/Ua8Ndud4N7oLHKZ9A+XMwESbBLKjWazNFb8isxZH9lcm+yiyEBnqd01UnnJ7QC+6GPtAf2O8O+91hvzvsd4f97rDfnadgJIyC0cB8nadhLDwDz8I4GA8T4DmYCJNgMjwPU4B7dF6AafAiTIcZek7k9zoRuRqugWuhHVwH10N7KNZvR4ZACQyFYfAADIcH4SH4CzwMj8Cj8Bg8Dk/ACHgSnoKRMApGw9MwFp6BZ2EcjIcJ8Jx+2z1fz8nK1G9nORDRb4uNr5iD8ietVfIjdLlGnpXBepIUwxAogaFwWCfInxPkzwny5wT5c4L82SN/9sifPfJnj/zZI3/2yJ898meP/Nkjf/bInz3yZ4/82SN/9sifPfJnj/zZI3/2yJ898meP/Nkjf/bInz3yZ4/82SN/9sifPfJnj/zZI3/2yJ898meP/Nkjf/bInz3yZ4/82SN/9sifPfJnz/8rXMZHzPNjXUHOWkHOWkHOWkHOWkEeOoE8dAJ550ryzpXknSvNGbo8+PeRx/7V0SbzoN6EN4vjxSZZS6Ux/nIjHuxJcrhJ5HCTyOEmkcNVkMNVkMP5+VOC/ClB/pQgZ/LImTxyJo+cySNn8siZPHKkSeRBk8hTJpGTTCKHmEQO4ZEjVJAbeOQBFeQBFeo8nVDnB3+Ps4LY34/lE8TZCWLrBLFwghg4QfzrEf96xL8e8a9H/OsR/3rEvx7xr0f86xH/esS/HvGvR/zrEf96xL8e8a9H/OsR/3rEqxXEqxXEqx4xakV4AH0/wPnL/l9N0x7xpke8WZGZz366RU8gxpxATLmSmHKlW6LL3aEwTJdH8/WmaG0ogMbQBIZTPl1vEhOv8hp+nTjOWiCXWQvlNusfcrH1ntRlff9ufUAktVhaW0ukHWvdjrw+g4jhCnL7XCsmF7HuXxI5NCLO2UzpFjmPeKEd8UIrq1x+Q78fpD/LPp+R3tezqD82GHMO13oSVSyULMo+4d1S/+9Snvq3dI0eUnT6v6fLfC5kd/ycUa/BH17FHI6VXIi3PEjplXjLhXjLZPA3ineKwchbpAHvrgg+U6xD3ZbMwf8ugu3yQ2r8iHdLpYg7zOdaI+7V/6tvt+jPrf7Shvl/YF9OvGZS8i/e/Zva+CZiwkrebeBdL4ny7gjv/iWtxZYiyYAQKAhDJjgQAReikMWIHaS21ZEYrzP04p4WEge+R5z5vl5u95ciewAMhPvgfhgEg6EYhkAJDIVhUkQuX0TOXkTOXkSOXkSOXkROXkT+XUTuXUS+XRR8/0WU6LaKkTZwF9utf/Ak/W8zeV//jeh2J/fenzVZwLzeoRZ3y71HJddYJs2N5XIBK9OZdfiV1ZFanaST1Tn4G3OdrF76ff+vElkD9WZrnFxijZdLGcfjSbckknnDvkwustvIBaxWJ2lEi0aMczFPs780YaRd/vjBSNH095p8bN1K69uo34XjHRz7Y2HL9Fpi5Ari48OB/ayWMK0sCfnfhELtAmoWUDOTmh41KqVAtqCixFCyjbjpXkbyn+lAvZK4u4Knno3iLg/6i/EEV9GKPv2IOCNX15DD15DD15Aj15Aj15Aj15Aj15D71jBmB13u/x9P9HgeO0UFva3SVVLnpDFvRbO6QG/urT+R+FK9h9lVch8eFlebsffT6kPGjTDuobOOG2Hczf53s9BbLuNm0ON+eqygxyp6zKS3Pem7qGGfdaDU/3uBtxLJd4F7udJf6tEykxmHaHmAljW0jDKXlL9qtKxmV2yR38pW2AaHsewjUA01cBR16EDmcou+wLoVtbhNbre6cLyDY29yn3uZz0A93RqCXYyTn2IPP2fFlzFim+DZrNDPB6PF9Gr2XD5ZzpG0jVxk07edAi2tM3Llt6ojdILO0lqNhxmwkfebYDMwT1VJWRXHA8zN//uPlczsMPd8mJmdx30fZmbncd+F3LevGGHu1+Fey6w1khNY3SJafECLrbQopMVWWhTS4qfUzmHO2wPLW6GrmfchWm4NWsWC7yXoyHidsOTOHG/nOABV3CzNULxKNMZBGeuhjLXQu0XBN+r4zy9BLYuSSp5DB85uCfaG/9fwCqx+WNV9+LvtzLucEXdoL7C3jbTbSjuH3sP0bHIlIfWkm94jd8GfoB9PvwPPsyPz6gwDsEy/9hasZDsrXcacdpBfJullJ37ycqmTkaP3ZFTALr0n1At6w91wDwyAgfSblf5OoDg9J+g5YfXjrgag+Zt5jluwoq3soOBu0eFy1miH/izIxeswv2rmV838qtN373+m/AW9fEEvJr2cxxxz6OUgvaToxf9L82F62OR/HxHzq2Z+1cyvmvlVM79q5lfN/Krlh9JNrpG74E8wWNpKMQyBEhgqbRkxmxF/gGZlsMLt0awMVrk9mvUyKz2XlX4HO/0YO70KO73GelWP4Z7+jYdodWw2+C1/NuVEE5dJG2y0jX25jttTpa39AkyTthk5ck3GRo4VHHfBbmkbOhcugV5yTag33A33gD+/MLM6kLYbM203ZvCs/BXcocuCTyPeYN4z07UK0rUKmLdHzYuCTyB26JVYRq/UYnLBXeR+G8n1dpHbbbTPSW3D1nqlPEorKam0z9FX0Guv1BfWAda5mtY1aMNRvcTO0AfJCw/ZEV1FzSXU/E3Q9n2uLqdkOSVO0NazjjBeNatyVK8ix0zZmRKibYpaq8glU9QsQpd6pbYzSoostYqZVViHOVYzag2WeaxlDaOmyE6rmHGFHeboMIsI5cd6quEO9mN1vchrD4pBL5X0kqIXTQ/lwdghMWhdSesUrTUty9NzONdfp9Ro5rCZ1s1pvY7WB6wj7Fh/9jXY8VEsLkWcoPVR5rKZ3prT2zp6O2Bn6lhwVxGesys5ZMpJej7KnF73vag26fEQ89hgpcSk1SHG3mBHOT9HN/VrpJZSo4zx/JVKUKOMPv1VStDHblb3a8+Lp59+TrQ+y/MJ6gbPhbpneR7c4//yOaCn33L9UZnved25xzOsd3DltOssWXa+ZNq1mV9dcexCeqtPmwbEDA05b8S1xlxrxrUWvG/JtVZca40/sO0CRqjP1SYcW/JMXDufd+QQdh3GL2SE+ozk99WI8saUN6W8BeUtKacfnoJf2x+5frqGP5LfVy7zMrm6zS6gpA7UlUbML5ea2+izEfMzmZ9Jq212E643hWaUt6BOS8pacd6ae8+ilw3M1b9D067HXAslI92L33oD8/fv0LSbc60F1461NrnffKiN7RUw57r0W8i91OfpN2Cshv59cb0x15twvRnXW1DWkuutuN6a++MueDa16beA0jpQV69mDilWZ7PdgGfZkHtuRJ3G1GnC9abQjDrNqdOCOq2o0xrP5j8nN1jXupLPPPwVO8Q88plHhHm4wdo2432LYAUPMYd85hDxn4pYwb0Xptf52Oz91bOC+z7WojI9a1Oyv6tNsGs91u9rdsFu/7FEv61t0OoCUWeyD662lLzvy0bo7Qfc9Xe0E1qfI7X+t7ZCL5f5d/T92AtP4tPgOX4nmwl8Q/Tb2k2g6udYB1I7UNIuKE4DVO1a60iqElX7tVWTSqI+3VC1JqhaGzsjtQNF7YIaNUDVrrUzU5Wo2q/tSCqJMnVD1Zqgam3s/NQBVuSHrMi5rMi5dl3e19M/YEWymNWFrEorVqWl3YjyxtRrQp2m0Iz3zanXgnotqdeKeq2xmkwyN5ecq8jyv9dnseQR7eYT6bYgqvgpscKHRHvZwXcLLTA6y8+MLvIb4w4ZYdzJsSuZewc92bqJXORmvYDIY3LwTXXn/odaHwa1/O9AWhOUHn8356t3Jpn8u8Z7ek5w5n+73WYxHRRWxL2y1vVyjjSR7+lHL9Bb9Ha5QJdzvu60NVJ6kp7Nb6V+gnfX6060+ZCz8vT1cp3kdVP63YFT2vtXk7qK3/+5pk4zzj545qzzLYZ3Tir5ghEK/FHO+INvpN5a4l4WkLW+lZxZ9JaT53j8bk4z5md6o/b05/SwmbstO9scv8FPmF7HpXvfqiv0h3pb+t3eU0bfCRv0l5oMSv9eMlm786TpCddTZxtM7+fZVdHD/8yc9cemjl19Sb8kLnz1DL/Wehds0wn6+IK3GeyEVnIFZ42Dq//US/Rq7AfbIbI6/fiv6hf1FI6PQZH+kR6g+3N2wjoev3vOKk5pndIf6TIs6CP9b+bBc/BX7+RWX9X97CxLIUQSIlnB2ch0iUffnx+3zROtIl1SxZ3vZe3X6X0ocjZFF/MUvhpd7wye0M7jtU9pX6F3sMe84yvu567Bcf2Jdc4273S9xEnv+p707l/frA9+Lgzqpy1Nr+H5hfWas4x88IS9faH89Cy1X9Ol/o7WH33jOZ3cfrtvHb7NnnJl1TdozZ3pR4Kzv319P+s7v0F7bES/GejWF/5z+7Y/+pVATV9hXU/9CX+jHir1gkA1v6FdnKaHvd/cqk7TOq2wesV3aj0neF3jK8f3/vOTbzD+9mO+TFdjR/u+9Qjuf7zaGv4QjHLc42069pu+3vg0bc7ltzG/5540y5np49Jjv/+h/YWnbZ9eXaxkP+q0/0wTRj936T0o2MZgT/lWfSgoHxtcbqTf0+/qmO/Rz9C+5oTzEVIP/b9ZrvN3SLpsA75h4ala/FWb6hPOR+N5suUq6cL5G+myLaze8jN71ePjBxb9HO0zUZ9700rul8/Vs8XSfz9j+69bYQbRU3fKn0pf/5f+mPX/NP3uVP0+csL5E7SuJ9eKHwkVpcve0fPp4fUzjr/19OUpnpivj7q9bqe76evStaee0v5BVOwl/bpepmMnFJtymzwkT3I2Ukb5/6pZXsNy35C/Ex0ulHflInmP30tksayWS2WtbJOrpcww5BajC7FpP7O9+Qfpb3YyO8lAs5t5l9xn9jR7yyAzbsalxFxnbpGhZrlZLo+aSXOnPGZWmrvlCfOAeVCeNKvNahlpaktklGValoyxlBWRsVZjq7FMsG61bpPnrC7WHTLJ/pv9N3neXmFrmZKRm5Ern4XeCr0ln4feCb0rS0LrQutlWUiHtKxQv1K/lZXq96qdxNX1qr1sUDeqG+VLdZO6WTaqjup22ay6qm5SrnqoHpJUf1b3y041WA2Vw+oBNVxS6hE1whA1So0xQmqsmmBkqolqopGtJqvJRo6aoqYatdR0NcPIU7PUQqO2Wqw+MVqp5Wqv8UNVpbRxXdgKZxidwuGwY3QOu+Es445wrXCe0S1cO1zH6B4uDDcweoYbhZsYvcPNwy2NPuErwkVGv3DX8F3GgPCj4ceM+8MjwiOMweE3wm8Yxc5gZ7AxxBniDDNKIsWR0cbwyNLIXmO8m+PWNRa6r7mvGf90t7i7jQ/dfe4hY6V7xK0x1rqpqBjro2bUNL6M2tGQsTEajkaNLdGcaIGxI1o3WtfYHS2MNjD2RBtFWxhV0VbRVkZ1dFJ0klETfT46zTganR592TSzMrMipsqqnVXHdLIOZR0x/U991gQWYwQWY2Ix48goxstEbHqSzKDkJX6VzJRX8VKzsKdQYE8h7GkRu+4drMoJrMrBqj6h/FOJSURW8WtiZauJqtfKeqKrDbKZPbYFm2sqZbKHHb+X32ayTw5KcznEbws5LEelpaSwyFqBRTYMLNIKLNINLNLFIntJjtkbu3QDu8zFLjdIgfmF+YXkmV+am6SOudncLHXNLdhrg8Be6wf2Wjew19qBvRYG9ppnalOT2xH+k92ZlskrP1Ib21Wc8/ClnpWJHecHdlwfO75VWlm3Yc2tseYunN+BTbcObLohNr1BDPsLext57na7TEJ2ue2RKVfaVdLI3m8fINs+aNdIY/so1t8ysP6mgfU3DKy/YWD9DQPrb4j1/0ryVVvVViLq1+rXYqvfsB8y2A+/p+RqdTUl16hrRKlr1bUSVu3YJ83ZJ9fTtj27JTPYLRF2y00SVTezZ7LYM52kqbpV3SbZqrPqLC3V7eyiWsEuqhXsIoNd9Gda9VJ9qNNX3UtJP9VPTNVfDWCUgWogPd/HTouw04ppNUQNobxElVB/KHsvGuw9g733KHUeU48z7hNqBFdHqVGUjFajaTVGjaHOWDWOkvFqPDOZoCZQwv4Ux9+f9DNFTaHVVDWV8ulqOv3MUDOoOUvNouQ19QZtZ6vZrMMc9SYr85aazzwXqAWsyUK1kFktVh8y24/UJ/S5XGGZapXCJtUalaC3depLaaI2qi2syVZVzlg7VFKaqZ2qgpXcpTxpoSpVJSPuVnuZc5WqouZ+tZ+rB9QByg+qg8zkkDpM/0fUEXquVtX0XKNqJE8dVUcZPaVStNVK+9+AF86Qhr6a8Iqa8Iqa8Iqa8Iqa8Iqa8Iqa8Iqa8IqaiIGaPMrrY+HHxPQ1RWxfU8TwNUVcNGUIryXOMMnxlUUslGW1uJE1kbhEI2sjeyXHVxmxfJWReqjMFslzt7pbJd/d5m6TqLvd3S4FbplbxtVyt1zqujvcHdLATbq7OPdcj/qVbiV1dru7qbPP3cd5lbtfCt0D7gHqHHQPUeeIe4Sr1W6NRNyUq6Vu1E+t83z94tWO2rxmREOSi4qFpU40M+pI7WgkGqGmG41KA3Qtj5L8aIEU+uomBahbIa/1ow2o0yjaWPKjTaJN6KdptBnnzaPNqd8i2oJztI9ytI+S56NTGGVq9AVaTYtOo+fp0Rn0+VL0Zantq6FYvhpKjq+GkoNi/TWthqP5tQI1zEANJ3A+CR20Ah0MoYKvcf6GvM3rfMHaUMP3OP8ADbTkQ3TQQgdXoZir0VdL4vyGAx20Ah2sHehgQaCDTqCDdQIdrBvoYL1ABwsDHXSN7GPf13zsG5uPfV/zsW9pPvY9zf43NaOS7cUMVDITlezGq6+SkUAlMwOVzAo0Md+sMCukVqCDuYEO5plHzaOSHShgjmVbtuSifWHOHcuRWlZHq6M0sDoF/9bA176GgfY1tjpbnSm/Pfj3B74ONgx0sLF1p9XV/w7ztA6WiYUCVkkY7asRJ1C9wkD1CtQv1C/Yn79Uv2T3XqmuFCvQuLD6LRpno3FXc+6rmxWoWyhQt7rqOnUdJb66WeoGdQOvN6oO1PQ1zg7UrSBQNydQt0LUrYu46k51J69dVVfq36Xu4rW76s6rr3ThQOmctNL1V/0pGYDShQKNC6tBahBtB6vB1D+udMM4P6ZxD6qHOPeVLhwonRUonaOeVE/S6ik1khJf9cKB6rlp1XtaPU25r33hQPsKA9WzAtWz1fOonpVWvRfUC5xPU9NQtBfVi9T3ddAKdLDwBB20Ah0Mo4MLOD+mfYvU+5wvVst49bUvjPYlOPdVr3agegWB6jmB6tUJVK9uoHr1AtUrDFTPVfvUPlr52lcQaF/dQPsK09pXg8ZZgca5YSNsiHVMrZz7nUGS6RQ7xbyWOCUScYahTRFnuDOckoedhyUz0Ckz8nTkOTEDxcl3d6E1Oe4ed6/kBvqSEyhLPspykPND7mHJRlNS7HNfU2pFragl2aiJkqxAR3IDHclHQXI59xUkL1onWoc6vnbkRxtGG1LeOK0dTenB147cQDtyAu2oFWhHLtrxPH1OjU6l1fTodOrPQDVyA9Uwxbxot//J66Xbf3WJ/F5uOVOc///Hjy7XO3zS7zaeLu/yP+cJPuv7tn1v9T/hCjLv94L3646PGbwuS2efFX7+GeSiCb1Zl538ic7Zxz3+CZ3u8+1n+P3+6KvJPP3jGXPvU1qUk2l//N0/l/mqn4qvv9N7gtd0ObliFSu7WXvw1Sd7J2Si+Se0TlArLv7nHnU4S3/CeDy7/r/043w1mxPHdeWPQdnO0326oJOnfjan9+pNei1XTvmvEN/15/in5Ce/8/dP2qpP+LyAuVtfnVec6SnrL0/9VPP7+jn9f8E5a6sZelpwrAk+Df+Xj//5kH7lv5m7GjiZyv3/nOfMeebM7DOzWG+787Kzs7Mzs2tta62ltSu0JIQrqSuV63YlSZIkSZKEJCSkTUISJVeS5FL9JcmVkOR6T5QkSajk/L/Pb2a3FeX11j37eb7zzO88bzNzzu/5fs9zzm+Rez9epuzIUmfw99aHZfZz6mc3HaO7fnmvroJZWyuUeIyuB6lr5dsptxujqeih4t/v2f6+dNV615nLnfuGI61Cu9YR6zjSj+pal/XzSeV+b13qf2z7g8/5s9is0guo3O407e1iURyD/gto9fe3KCPfqvwp+dTTbvANZ72GeOFzxa/aO2lUFc+9s6w/31pqzYuvD1S1nrWWkvUzNbtXnL3Piz9sgm/cQfxhL3ET8mZqTrJ24HVOvNQBWm9bhfQu/vaefOWaPFkyK7s2uxxzwfvWR0ilsLa01lsfkH1DjEXQivZfz32kp4z8y5Pe0Rxq/bOCpYc13brdGqGu8lt9yq0NYVukzrtTVx2ZWnM9dS10n/UWPsvmi3emlh0Pah6DByvjhe+z+PpsxTHAL5evjag1ljO0/O+LNcbz3fAtueh1rFpvPmVvX2v5SWVjr1sxu32mjpDz6O9jddQT36LvSeUwv+2If2tA61ZrDf3eR5l+mjnMxXJPafMAzoOv46tLOjxH2arT0djeC5/fflmHPnm9soylKO5F8/Zu/B04hXtuJ+55mrMdZ/NF9l2n237lz9afsv/4ry1x+52nt7NzWUc/583qdo4VYvdYDLceptdvyAO8qhJys6yFsRztK+NntN6JX+qN8xjdfGsRPOZr8XfLrdlM3R/0usojwXPCiy2Hlyhjwd/A+34Q9xOx9TP3KW2+Z71mLYu3WVW9i9tP8g6Wde6jpXo4S61Py9+VaZedKlemK2NMnDza++r4iN0jEj9/DpFHvsFqR++WMbWa1xvpHuTGWJMw190Tb6XCvS34Bt60BpzHaP9m3W9Ns25H7h2c1dOsW8g/PIbZaBq+52VWqdUdc+s3ag2QPtlia641NdZzfNZIsd75VZt7rY1QlbEzt155Ls47rR9i6ewZ80ltH6bzvfyuoJNnKZqny5UvMd8ddN9DxTsuck6+Y+WP2k5exaU7mL4+80joE51y/9UfsZ2sZNW3imP4uzP5T/p1LprSPZetIv/A2aBU1id4/Y2V7vKS+y58vNYz1kBrqDWR8h/ieH9O3SkTn4difPF7awHS0gvrh1rKjd3JckFtfGbtwUxI8yN+0z04Dss5d+xXtw6Ccxw8HQM8577Og3NXqP1B7FfFWJQf/Hf83fb4+RMf9Z9zPp9us7pZ/7CWWAsZp3f3W/3grbvEGIH1unUM70ZZd1qXWunwo/nWPdatF9BXjD8GLmi8cZ8U07Tl9xs+d/Lei7lZMy5CG+ro3Rjz6uC3p/z6tH+Xte6XWfjP3TCa/+Cco2ueOIaVUixXKjGmi73vIf3Gvap/9Ibxjq545oJfLf4zx/PbG862voo7xe50te4CO9qAsy+2bxnhf6w3rOutEcg9bm2J2c6zr/cufLzn2OPhivd5/e9u5Rz30IXfXXm6e90v5hZjh+Dfn2PWuwhXLM50j/Lv1j3LI8p6ha7tf3X+PVXYki9KK2e1gQtdMHO1xl6MkZyhj7inA7u94OvyF+lXOlMvn4HZ/pfPlIu3gfUcvmjfTJULGMfFON//wPWI8zkawXt2xWrGn+wouy6yhtYZ1vxu5V7xsvPOvd8/ejufZyBOaeM3V0N+pw5drVdXimJKOHZFp3wt2Pl7+piu7Saz25k4936p/nk85WXtpbnjl2fJyq7Jna22S2BXnHuvf+pW/XwrnvvKE1N3Nah16XJlb71J+DX88xlXI/7XNvD+73/7mYkK5Y7998dydtvZecjzndVP+6zUGfuiOwh+eXaQVizKjyznaSuVlVXXqrzsepxzf8J2MnePeQ2opzP4WVqJ+ROu91nfXsS2drL4FeXTPnGUSU85qRX0D0+z90xtq+eodpbVLMvRFf6dcUtZnw2pr1+Nq8K7R35ps2ws6nmtU0alnsqqo1Zpzke1W6XWTGtx+XNg8ZxiBPFrmh+Wj6POKeOdee79nVT/PO4UstbRqsSq8vd0DxD4pjjrlb6zeHrvN/o+7bPJZ6izh65aqZmcfAG9W45zL+YZnL/HL2lGSWSNzu55zdPUP5/7H9ar5y0pHYm9J4xfNf997xD/LN6T7zfC8fWt9RGlUlYDnPTL+GrSjtg5Tcdaj3Mf6Rk+R2yFrYJat7pY91gvWFMobkD5PT1WK2v+Oba8/I9hzGqMv92PdeJ0q8qxFcVf2b498yrO+W50j0zcM1uHwCcOgR9tsjb/4oms/bCpNeMGVkd6/yqOgI3WDda76r21zBpvrVBXzGnfEye1vbXMfk4jamvdbj1otYy/oxyOwFsoP9OabvXBcVAKtrYYM68qsdB6zVoQn7XV1fnqLJfWnPtbPckWux9xCnj1M+r3UFESyu8COulakPVD2dP85zTep6wXodUmx9+tob5Lyc+voe9Arb7Osw5bb1OB2FP78TsM4kdxvXPv9c/a/itPY5/ay84yjxVbd/6ztvNZp8Iv/TWrcNWhPELC2cw9SUzdv3M15b0sH9ozQHU/B+v4nGYTD6trfYwzVP1ttbZZl+J8uYVJKzavx3Uqzs6YpqoRfz8/vlLBWfkT02R/6Xc+B91bYQ3APBe/Amk1sW5CamV1Y0lWbA4ui6FxP1Izq6F1jRV/ssFaaW2huyXUGbsPc9LOuH6txaI0c9aiUr9/deP043rOmg58sfz9YqXlTrqzokM8cz1rzxqwPIoTk0F7Kn5254l1VsKJozRTLrFus15Vc5g1yHpI5dDqyJO6jd0Ddtt5jLendQc+/x30xkSuJ/nNh2im/gi/5d4TsSfpX6eoIGUbfbPWXfE2zkLjnbbvL89c5pQ6++mOAMUT6Giio3k53ttot/xdvqNqJbIijJ6z9ahRG+8L2WUsizXBXy5rhWO7DuvIroW1E+uGkt3ZEHalxrVq7GbNr9Vm/bXW2lVsuNZW68BGap20G9gY7VbtVjZe66n1Yk9qd2sj2SRtlDaRzdUma5PZYq1UK2VvalO0KWyJ9qI2m/1Le1v7kC3jubwOW8PzeQFbywt5IVvPL+OXsQ38cl7CPuZX8lbsE96H38U28/78XraFj+FPsG18Bp/BdvEX+Fz2GV/IX2df8Tf4G+xrvoQvZQf4cv4u+5a/z99n3/F/8zXsMF/LP2JH+Hq+nh3jG/lG9oMudRf7Ua+kV2HH9ap6VWbp1fUUjelpelAz9JAe0ux6RM/UTL2Onqcl6AV6gebSC/WGmlsv1htplfTGemOtil6il2hJeif9eq2qfqN+k1ZdPSun1bT1tT2ipdhG2l7Tcmyv25ZqnWz/tn2odTWchlP7hyENqXUzKhmVtVuMqkaydqux3vhUu8PYYuzU+hmfGZ9pA409xh7tfuML40ttkPGVcVAbbBwyDmnDjO+Nn7RHjJ+FoY0WduHWJopKopL2rKgiqmlTRU3h12aINFFXmyPqiXraUlFfXKEtE23FNdpacYMYpn0iRohHuSYeF49zmxgrxnFDPCme5HYxUZRyU0wV07lbPC+e51XEHPEqTxILxRLuFcvEOzxdrBDv8Yh4X2zimWKz2MwvFdvEdl4o9oqveJH4VhznTezMzvlVdrs9wNvZw/Z83sN+qb2Y36uej+ODTG5y/oApTDsfbCaYCXyImWhW4g+ZVc2q/GGzppnMh5k+08eHm2lmkI8ww2aYP2pGzSw+yswxL+GPm3XMOnysmW/m83HmpWYhf8IsMov5k2ZjswmfaLYwW/KnzNZma15qtjHb8mfMq81r+LPmX82/8mlmN/MWPt28w7yTP2/2NfvyWeYAcwB/0bzfvJ/PNgebQ/gcc4Q5gs81R5mj+Cvm4+YYPs8cZ47j880J5tP8VfMFcxZ/w5xjzuFvmq+aS/kS8y1zPV9pbjQ/4VvMT83/8G3mVnMv32l+aX7H95vfm9/zo+Yx8xg/ZloOjf/gsDls/LjD7nDynx3SUUPXHMkOv+5yBBwBPckRdET1qo5ajhzd48hz5OmpjnqOenrAUd/RUE9zFDua6mFHiaNEz3Y0d7TQaztaOlrpuY6rHG31PMe1juv0eo5ejj56fWfAGdKLnFc7O+lNnF2cXfQrnY84X9JbOt9yrtR7Oz92btHvdW5zfq4/6PwhIUUfkdAh4e/6HPXUnv5mwsKEpfr/SbtM1FfLWrKZ/rG8XnbXD8rbZG/9hOwj+9pssp/sb7PLAXKAzSkHyodtCXK4HG2rJsfIMTavHCfH23xygpxqC8hpcpqtlpwh59iy5StygS1fvi7ftBXKf8l/2S6Ty+QyW2P5tlxpayJXy3W2K+UGucHWTm6Um2x/kZvldlsHuVPusnVyPeB6wNbZ9aDrYdsNruGux2xdXWNdT9i6u550TbDd5nrK9ZTtdjd3m7Zebul22+52V3FXtfV3e9w+233uo+6jtkGJLFGzPcC4tgtezw3Fl8gqMY1Vxp/OqmAetrGamLsNzOoZsIfxZ2cRzIImy4aXdMAfNmQS/lBF4m5EMcqVx3STx0yEx+yIWtfirzL85g1o8Ub2d9aY3Qwf2gQ+tA+Yw134a8r6sv6sGrsXf9XZADYIPT8AD1sTHlayZM2luVkKPSHs0SrB59aGz43AEtWiLFfL1LJgr6XVQj4bvjiZfHEd+OK2wHbwyM3gkTvDfgP8ch755Tzyy3XhlwfCfr/2CMvXhmvD0eYIeGoPPPXjrEAboz3J6msT4LXrkNeuQ167DnntXHjtF5GfDd+dC9/9LuaDFdoK1lB7T/uAFWmr4c2LyZtzePN8YD34dEE+vRL5dE4+vRL59Krk0y8nn34J+fQG5NO98OkvslQ+m89mPj6Hv8zS+Fx4+SB5+SB5+QC8/BLgv+Dr/eTrQ+TrffD1/waugccPwOOvBX4Ev+8nv+8nv58Ovy9Zhu6C9w+T94+S94/A+9dkWXqynsxq6Sl6CitRMwHymAlYJmaCCDCqZ6IW5gOWreYD1CrUC4EN9YbYW6wXAxvpjVAGcwMQcwMs6lnrK+hZ6xb0fPUV9Hx1C3qmujnmiQdYI9tg2yNMw2wxhiXaxtomsEttE22TWJLtKdsUVmh71vYcq2GbZnuZJdvm2l5jKZhRXmd5tkW2pSxfzSusSM0rTKp5BVjJqMSaGJWNyqyOml1YHmaXDUw3PjY+ZgFjo7GRJRqfGJ8wm7HJ+JQZmHW2wLLV2ArLNmMbsxvbje3MNHYYO1g1Y6exkyWoOYm51JyEkl8YX7DKxpfGl6wKZqavmGbsN75GjweMb1iScdA4yGqouQo9fm98z2oaR4wjrNg4ahzF2I4ZxzCeH4wfkP/R+BH5n4yfWCPjZ+NntHxCcJYkdGFjjYQhDKZhhrMzTBbCZC7hEE6WKBJEAtOFFJLVFC7hYsXCLdwog1lQ/d9dkYS6VUU11K0pklE+RXhYFeEVPrTsF37UTRNpwKAIooV0kY7yIRFC+QwRRflMkclqiCyRBXstUYvZRLbIZm5RW+Sg/UvEJaibK3LRWh1RB2XyRB7q1hV1mVQzLvqqL+rD3kAUomRD0RAtFInGzBBNRDOUbC6aM7u4QlyBMbcVf8Hnai+uQfs3iC7o/W+iK3r5u+iGdm4Rt7HGoqe4gzURvUVf9Hi36MeainsEvIe4Vwxg1cV94j6MdqAYhM/ygBiMdh4UD6KFIWIIWnhIPMQSxFAxFL08LB5GmWFiGHoBA2AexQBYLhjAWJYvxolxrK7iASwZPGAi9k4Sk1iKeErAD4inxdOsSJSKUnzbU8VU4HNiGssT08V0lAdXQAtzxBzgSwJHqZgr5qLuK2Ieayb+Kf6JlueLV7F3oViIuq+L12FfJBaj5JtiCUouE29h79viHVYAhrEC9vfEeywHPON9lF8lVsHygfgAJVeLD1FyrViL8Xwk1qHMerEeI9wgPsaYN4qNrLb4RHzC6otNYhPqgqOg1jaxDS1vF9tRa6/Yi9a+EPtQ/ivxFcp/K75HmSPiCL6No+IoxnZMHGfJisewuuAxLuTd9sos317FnsQ89qr2GqzAXtPuZfXtPnuA1QHLibAie9Seya60Z9lrsYb2bHs2LLXtl7Bie649Fy3UsddByTx7HsrUtdfF3nw7tCO40aWsnr3QXoi+GtobonyRvQh7i+3F6EvFFNAUZ2J5ijMBwZmA4ExAcCYgOBMQnAkIzgQEZ2IpijMxj+JMQHAmVltxJuTBmViR4kwsGZypMcsxm5hNUAvMCRYwJ5QBcwKCObECxZxYfTAnKAHzFvMWVgz+dAdLNHubd6IMWBTqgkXBDhaFkoPNwWjnQfNB5IeYQ2AHo8J4wKhQ/nHzcZZvjjHHoBZ4FasLXjUBlokmjjpzkvk08i+YL6CvWeYsdqViWrCAaTGnYlpAMC0gmBYQTAv4pfktu8w8ZB5CL9+Z36EdsC6Wq1gX8pZpqf+O4mCsmUNzaCxZMTDmAQOzA02Hyeo5sLFch9PhRF463MBEB+ZfRyVHJVbgqOyoAkuSI4kVOao6qrK6jmqOaqzYUd1RA/ZkRzLLd6Q4Ulhth8fhQd7r8KIXn8OHvX6HHxZwO+TB7TAScDsguB0Q3A4IbgcEtwOC2wHB7YDgdkBwOyC4HRDcjjkVt2OXgdtdzSo5Ozg7MOG8xnkN8h2dHZG/1nkt8tc5O7GqivnB8ohzBuPO550vIQ/+hzz4H8qA/6HMDwka4wk8IYVdrlggaxCL3aBYIOOKBQLBAoHXy+uZT3aWnVlA3iBvYJXljfJGlipvkjexdNlFdmFB+Tf5N6bLrvIfyHeT3VD+FnkLynSX3VHmNnkb8j3l7Swke8leKHOH7I0yfWQf7L1L9mV+MMt7YO8v+8MOfgkcKAcC75eDmFc+IAezNPmgHIKSD8mHUHKofBg9DpePwjJKjkbL4KDoZZwcB3xCjkeZCXIixjxJTkI7T8nJyD8tn0b5UlmK/DPyGbQ5RU7B3mflsywip8qpLFMxVxYFc53Basnn5fOsRM6ULyI/W85GmTlyDva+Il8BzpP/ZNlyvpyPva/KBdj7ulzEsuQbcjEsb8o3YQHfBYLvAt+W77AM+X9yOcq8K1ewsHxPvoeSK+VK9LJafgjLWrkObYINo/2NciPwE7kJZTbL/2DvFrkF7WyV25DfLrezfLDknWhtl9zFIoorMz+48hDmdT3kGsqCrodd+JbAm4ezbNcIF74r1yjXKJbqesz1GCxjXeNYLdcTridYieLTsIBPs2zFp1lVxacZV3waCD4NBJ9mVRWfZnlgdo2JTzcnPs2JScd4cxljVvzYTfzYzf6KPzcx4xbEjFsSM65CzLg1MePqxIxrEDOuScw4uUL8HoPi95gUv8eg+D0Gxe9xUvweg+L3GBS/x0XxewyK32NQ/B6D4vckUvweg+L3JFL8HoPi91xJ8XtaUfyeJIrfcxXF72lD8XvaUvyedhS/JwVMPQG82aW5iKMns3paipYCDq2YegMw9baskLj41do12l9hV1y8odZN6waGfbd2N7CfNgC8eSAYeX0w8uGsGFx8BPKPao+ivGLk9cHIJ7LG4OKlrAlY+ALga9prrKm2UFuGvYqFX0ss/HJi4SXEwpuBhecynVi4XoF/6+DflxP/vhL8uxWxcBVhyEYRhipThKHKFGGoGkUYqkwc/S/E0S/lI/hI1ohP4k+xDnGmrnh5Lf4Kf4Vl8kXg5enEyDOIkUf4B/wD8G/FxdP4Or4O9o/Bv9MoapGPf8q3gpFv59uBKoJRNkV1y+K7+eew7OV7gSq2m58iG4X41/wA8iq+UZh/yw8hr6IcRflP/DjyKtZRKj/BLeaniEdBXdM58iruUVg3dAN5Ff0oSNGPQnqCngBLIth/DvH+POL9+cT72+se3Qu7Yv85ejrY/yV6GOw/h9h/rp6lZyGfrWcD6+h1WV0ogfrIN9AbsNr6pdADOaQH6uhF0AM5+mX6ZWhf6YEcUgLXkBLoSErgGlICHUkDNAf7n8Dc4P1TWBVi/DWJ8XuI8TewLQTjbwjGv5wV2961rWZNifeXVIjJZFBMpkSKyZREMZnakRJoSUqgCcVnakV6oBB6YD0TpAHsxqfQAII0gJ00gJvYv53Yf01jt7EbLH+PsRcWxfsFMf4axPhbEuOvQoy/JjH+ZOOwcRioOH1z4vR24vRViNM3J07PhQCntxObtxObTybW3pz4up2YehVi6snEzpsTL7cTL69JvLw5uDh0r8gBIxfExasQF28eZ+H5Ih/lC0QByisu3pxYeIxz24ln24lbtyBu3ZK4dRXi1q2JW1cnbl2DuHVN4tbJxJ6TxSgxCpzyMfEY2KRiz4XEmIvEBDEBdsWY6xFjbiKmiCngkYorF4hp4MpFxJU9xJWLxUwxGzx+Dliyh1jy1cSPi8UCsQC1FEsuIJZ8NVjyItR9A1zZQ1y5AXHlYvF/YjlaeFe8i/KKKxcQS/YQS25ALLmYWHKJWAeWXEQsuQmx5AJiycXEkhsTS25GLLme2Cq2Yq/ixzFmXE/sFwdhUfy4AfHjQuLHV4sT4gQYqmLGRcSMi8GMayCvOHFj4sRN7Gn2DNaUmHEJMeNriRlfTjy4CfHga4kHlxAP9tjr2+sDFQNuRgy4xH6Z/TK0qSKKJVIsMYNiiSVSFLFEiiJmUBQxJ0URa0NRxAyKImbY29vbo3cVS8ygWGKJFEWsFUURS6IoYu0oilgKRRFLoShiBkURMyiKmEFRxBIpilhShShiiRRFzElRxBIpilgKRREzKIpYIkURMypEETMoilgiRREzKIpYEkURS6EoYgZFEUukKGIpFaKIGRRFLJGiiLWjKGIGxQ8zKsQPMyh+mIvihyVS/DCD4oe1qxA/zKD4YYkUP8yg+GGJFD/MoPhhBsUPS6T4YQbFD7uS4oe1ovhhSRQ/7CqKH9aG4oe1pfhh7Sh+WArFDzMoflgrih/WhuKHtasQP8yg+GEpFD/MgIZJYoVQLBmsCemTpmbEjEAbRM0ouH4tsxZrYGabtaE3cswc2HPN3LhuKTDzzLqsGamXArPAbABUGqbEbGg2RDtKwzQ1m5tXAFuYrdBaa/MqlGljtmH1zLZQMsVmO7M9FMK15rXYq/RMY/Mm8yaMp6vZFbVikRiVwimBwumBvpTCcZt3mn3Qzl3mXah1t3k3u9y8x7wHlvvNB/AplM4pJG3jociNBaRwiszR5mig0jnNSOcUmU+a8BKkcwpI4RSbz5rPwjLdnI7eldopIbVzrfmiORu1lOYpNl82X0aZV8x5wFehfBLMbeZnwM+heRJI81xBmqepedg8jJaV5ik0fzJ/wqdTmieBNM/VpHmakOYpIrVTQGqnkNROgcMFhVMEhVOZNSaFU0IK53JSOM2gcKpDBdVw1ETJZCicBqRtPKRnmkLPRNBLFvRMAvRMPrDAUQgshoZJIA2TAA3TFqjUSwKplwRSL1dAvXSIKxalVa6DDulEiqWzszMsf3f+nTVy9nD2APZ09gT2cvYC9nb2BvZ19gWqWHSVKRZdZYpFV41i0VWjWHSVKRZdZVI+OmmbvyR4EoLs0oSWCX9hjRJuThjAOlCkOhupHRsUTi2oCKVhapGGyZT/gIZJk7fKHmDqSrekkWKpBcVyB/K95Z1QDv1kP1iUVkmX98n7YLlfPgCVovRJBumTWqRPMqFPRsLyKFRKJqmUiHxcPo7ySp/Ukk/KCdg7EfokAn3yFFpT+iSD9ElMmaSTMsmRz8nngNPldKBSJvmkTNrLF6FM6kCZvAT7y3IuyyVlUoeUSV1SJvlQJq/CskC+xmrLhXIhSr4h34Bd6ZNL5BLokxy5VC7F3uVQJrmkSfJJk7SXq+QH2LtaroFdKZO6cr1cj5JKk+TLT+Vm2P8DTVIXmmQrWtsGZeInZZIrd8gd6FfpkzzSJ5fIzyQ4HkUHzKZ4pFlyn9wPi4oUGJQH5EHkVbzAMMULDFK8wGyKFxikeIGpFI/UL3+WPwNV7MBsaUkwQIogGAIxBwOkOIKpFJvUT9EEfRSb1E8xBcMUUzCbYpNmudyuRNhVfMGwK8mVBIuKMhilKIOprpquFOxVsQazKdZgmGINRinWYMgVdAWxV0UcDFPEwSBFHAy5erh6sDRSYhlQYg+SEsPx4HrE9QgU2nCorwxSX3VJd7WH7noS+QmuSSyX1Fdd12TXZORV5MIwRS70UeTCbIpcGKXIhWGKXGiDNpJsMjj+ULAtzmpoB7VvGdO+144wrv2o/cRsmsU1JrjBBXNA7EuWwCvxyszFq/HqLJGncA8Yf5CnsyQe5ZnQAM/wZ1gNvYV+Jbhdc+MKlmL0Me5iXuNt423md+OPpboD7qtYwN3O3Zm1cd/kfphd7x7rXsaGuFe697N/ug+4j0BpcQaNQXFR3FBbDlaZdWAJUIJdoahuZo+yzuwxNpoNhbJbz4ZBne2ERvtMc7JPNAl1ZWmJWjVN09Tqh6kUlVZD66Tdonm1W7VhWpY2XBuvtdAmac9AZ72mfahdr7+sv6z1A6e+W7vHNtg2RLvXNtz2qDbQNtY2VhsMfv2U9iD49XRtKJj1PG0EmPUb2ijbMtsybQyY9XvaWFqpHQ9mvV6bCGa9Q3vKtsf2pVZq+8b2jTYV/Pqo9pzi19oMI8lI0l4Amz6hzQK3DWkbREREtMPgqjna9+CehdpP6tqvZonLRQm3iebiKtDftqIzd4u/iZu5V3QTfXgA3HMQry1GiNG8vhgjSnmxeFbM5C3VNVXeXswVH/CrxRqxht8JTreJ9xFbxBZ+n9ghdvCB4Gv7+P2KqfEHxXfiMB8GpnaCDwfFdvGx4GXV+LP2GvZ0Ph1crB6fZ29i78nfst9lH8f325+0P6lLsIxS3QXWMFdPUhGX9Rr21+2LdK99sf1t3a+Ygh4GR9ik59s32/foDcALjurNMIfP1zuY3znS9J3un9w/2Sqx7Yx59iDtRzqEdAzpBGNeW/mr5nXitRJSdSQvUhApipSDlI9UiNQYqTlSa6T2SNch3Yh0M1IPpN6Me/tRYt6BlLh3CNJw5EcjjUeajDQVaSbSS0jzkRYhLUVaHh/Dqt94XRtvS+U3xutsQdpF+5j3C6QD8fGuir/iM3oPI/3ImI/F7PFX7hOUNJ9EqoJ8zXJbLPmRQrE8+uW+rLg9N54K4qkIqSlSC6Q2SB3iZTtReebrgtQt9j35epZ/57Gyfagc8/VHGoQ0FGlkbOy+MfH+JsQ+q68UaRrSrPj+ufH9C+JpMWxvIa3A51mNtK78s9Bn9m1C2oa0G2kf0kGkI0jHGcQ6khl/df/yWlbeXxUpJfaqyqt66n35/gBSGCkbKQ+pAVKjX17Vb+YvQWp51q/c367Cb4XP5u+I1Dn2e5/T69JfveL49neN9UPHUtxO/VZM3ZF6/fJKx9vS+PG2C+PrC/sApMHx40+1M+yXV/8opHG2yp4UT8AT9mR78ggbEDYClnhaAtt5OgI7e7oCu3t6Aft6BgBVrcGeYZ5RnnGeSZ4pnhme2Z55noWeJZ53CFeW59d4NgDV3s2eHZ49nv2eQ55jwFg+hie8Nq/TW8lbndALDFI+SPmoNweY7y0ENvY2B7b2tvc6qdZ1wBthudnbw9vb2887EDjEOxw42jseqOyTvVO9M70veed7FwGXepd7V3nXejd6t3h3eb8gPEB4GPijD2etT/gksIqvJtDvCwGzfLnYi1q+Al+Rr6mvha+Nr4Ovk6+Lrxuwp6+Prz/hIN9Q30jfGN8EXylwmm8WUFnmxu0xXOBb7HvLt8K32rfOt8m3rRxxtAKVfV8cD/qO+I77ud8kdAOrUj7FHwCG/dnAPH8DYCN/STm29Lfzd/R39nf1d/f38vf1D/AP9g/zD1Ct+UfFLeP8k8pRWab4Z/hn++f5F/qXEL5Tnlf2lf41/g3+zf4d/j1Ald8PPIT8Mf+JVFuqM7USYfXyvDc1CIym5gDzUwuBjVObA1untqf8dak2qntj6s2pPVJ7p/ZLHZg6JHV46uhyHA+cnDo1dSbyL6XOT12UujR1uRpD6irCtWX51I2pW4C7Ur9IPZB6OPXHMgywgADKQJVAzYA/ECLMIswFFgSKgE0DLYBtAh2AnQJdgN0CPYGqVp9A/8CgwNDAyMCYwIRAaWBaYFZgbmABcHHgLUKVXxFYDVR71wU2Bbb5+gd2B/YBDwa2BY7E8XgaTzPT3GlVCVOAAcoHKB9OywbmpTUANkorAbZMa5dmUq2OwM6wdE3rntYrrW/aAODgtGHAUWnjgMo+KW1K2oy02Wnz0hYCl6S9k7YybU3ahrTNaTvS9hDuJzwEPJZ2Im1z0BZ0AisFqwO9wSAwGszBXtQK5gcLg42DzYOtg+2D1wVvDN4M7BHsHexHODA4JDg8ODo4PjgZODU4E6gsL8XtMZwfXBRcGlweXOVrkbY/uLYMgxuDW4CwB3fF8YvggeDh4I/pjFCU5dNlehVgzXQ/MJSeBcxNLwAWpTcFtkhvk94hvVN6F8+49G7pPdP7pPdPH5Q+VLWWPjJuGZM+AVhKqCzT0melz01fkL44/S3CFeV5ZV+dvi59U/q29N3p+4AqfzD9SPrxEA+ZIXeoaiglbYDCUKA8Hw5lA/NCDYCNQiXAlqF2wI6hzsCuoe5AVbdXqG9oQGhwaFhoVGhcaFJoyq9wRmh2aFywfWheaGFoSeid0MrQmtAGws3l+R2hPcD9oUOhY6ETGbYyzHBmVAJWz/BmBDOiGTmE+cBCyjfOaA5sndEeeF3GjcCbM3oAe2f0A6paAzOGZAzPGJ0xPmNyxtSMmRkvZczPWJSxFLiccBXh2oyNQLV3S8aujC8yDgAPE6r8j2EWFmEZrhKuGfaHQ4RZv8rnhguAReGmwBbhNsAO4U5AVatLuFu4Z7hPuH94UHhoeGR4DHBCuBQ4LTwLODe8ALg4/BZ6WUG4OrwuvCm8Lbw7vC98MHyE8LjCCAdui5jhfRF3pCowJRIAhiPZyh7eHcmLNIg0gqUk0jLSLtIx0jnSNdI90gvYNzIAODgyLLRQYWRUZFxkUmRKZEZkNsrPiywEzogsIZyNdmL2GL4TWRlZE9kQ2RwWkR2RPcD9hIcix4CwR05EbVGnJxzPV4pWj3qjwWiUMKcc86OFwMbR5sDW0fbA66I3Am+O9gD2jvaLDowOiQ6Pjo5siI6PTg4vjk6NTkZ+ZnRy9KXo/PC+6KLoUuByQlgiedFV0bXRjdEt0V2/QmX/Inogehgt/5jJMkWmzKySWTPTnxkCqnwWMBf5gswi9bkymxK2yGwTy2d2yOwE7JLZDdgzsw+wf+Yg4NDMkcAxmROAqBs5kVmaOS1zVubczAWZizPfylzxK1yduQ64KXNb5u7MfZkHM49kHs/IV5jFyzDLzHIDq2alZAWywlnZwDzCBlmNgCVZLbPaKU6S1TGrc5biKuAGWd2zemX19TqzBmQNBg7LGhWbwbPGqXkwa1LWlKwZvuNZs7PmYcbETPT/7H19WFXXlfc55557oUYtXC43hCBBREDu9/f3Zwl+Po5xjLXGMYQaxhJjGWOsoQ4x1lhqrRXHWEsMOtYaQpAaqxQJWEMNEksJsYYoNZQhjmHQEmsooYzBd6/fvlrT9H2S/9/3Mfvnyjprr7322vvsvda6Nzd5DXnNea10K+W1sxuK3TV5nXnn83rSe/L68titR+9L3rW8G3mj0zNp3+aN62TdhOwUXYJOyzBNl8n3mC6X1ldn1Nl1tJoJunBuGvlBV6Cbp1tIPtEtYYiZ6pbrVjAs0ZXOGKEbR7dOt0G3id0+7OTXVei263ZNjddV6fYzPKSr4+ez7iidcrpG3UndaXZaDujOZg7TOaPr0nXrLtGZo+tnyE4S3YBuSDec1a4b0wtZ7bTzc6x6lX6iXq1P0afrs/R5erPeqffro/pZ+vn6Rfc36JfqC++/pi/Wr9KvYTLrmUy5frN+q36Hfrd+r/6AvkZfrz+mb9Kf0rfpO9JKH1ihP/dAqf6Cvld/WT+ov64feaBOf/OBRoNkiDdMntJm0BhSp1w3sFjFkG3QT99usBrchqAh3zDHsIDHG4bFhmWGIsNKA4stKaIwrDWUGTYathi2GXbSKhj23L7ZDdWGg8Bahkf06w0NhmZDq6Hd0Gk4b+gx9BmuGK4ZbhhGDeNG2TjBmGDUGtOMmTymTetnr9clHkfxKMVoNNrv38njRqPXGGZYYJzHoji2N4wL063GJcaFxuXGFcYSY6lxnXGDcZOxwrjduIsk0/Ybq9LqjPuNh4x1PHK7f6Xx6P3ZxkbjSTYWYlTjaePZtAlT0o1daZeM3cZLbPSgsX/KTeOAcYjhsHEsvcwkmFTpZQ+ETRMfkE1qUwrDdFOWvj7tqCkvrc5kNjlNflPUNMvQQB4wzTctMi3leztzg6nQVDzlpmmVaU16j2m9qdy02bTVtMO0m0eYpr2mA6YaU73pmKmJ3gvTKVObqYNF6SxWN53jaLpg6uURuOnyXTgIvE6jmEaAN82SOT5tgnmyWZNWak41Z7AomkXU5myz3myN0W5gkN4vc37MkyweNs8BLiCrzIvNy8xF5sWcBq40rzavnXLKXGbeyOJhFhWbt5i3mXfyGNi85y6sTt/J4r0y80FzLcMjhBS1mhs4mpvNrTxSNbebO83n04+Ye8x9DBmfca6Yr/GoNa/zb2i+QW+9eRQ4ztEiWyawWJRFpJYEi9aSxiJPFpdaMi25FuMDjRa7xftAo/mKJcz25LClgMWZbF0s8zhaFlqWWJZPH7OsYDcUO5mzVZYSSym7N8cs6xi9wbLJUpHdZNlON4Jll6XKst9yKKfaUmc5amm0nLSctpy1dFm6LZcs/ZYByxA/2/npPWOiZdgyZhWsKnYaD1onWtX8JLSmWNOtWdY8q9nqtPpz5lij1lnW+dZFPAbIvm5dym4B3DLWwhmzbt/R1mLrKusa63pruXWzFbetdYd1d1YDnVrWvbnzrAese6012VnW+py11mM5RdYm6ymrk9/LOX3WtmyVtcN6jmIJ64XpmdZe62W6062DTPN1K7uLrTdt7BbOXWGLp/vLNjk3zaaxpWYP2jJs2dmDM3bY9LdvCpvV5rYFbfm2OdkqiiWMdbYFtsWGBpqdbZmtyLaSn7TZhbbVtrVMT5lt44wRunNtW2zbcnpsO+mesu2xVdsO2mptR2wNtmZbq63d1kl+s52Hnh5bn+2K7Zrthm00vZrOcNt4LNphqCuI4e2oZsAuE3KOfQIwgWywa4Fp9kx7bvYau9Fuz95s9yIaYZGJrsAethdwOmeckPVid4F9Hp269nn2hfYlPK6wL48hm4Uu177CXqLL5TQhkyy1r8vptG+wb2IRBYsr7BX27fZdPIrQFfwN7Qk5ffaq3Cr7fju7/e119qP8xme3D0N7o/2k/TS/5e1n7V327txu+yU7u/eJzzgD9iF+y9uH78IxuqccAqE9AbTKMdGhZnc3u8EdKY50Rxa7qdk97shzmB3OGZcdfkeU4SzHfHY7ZzsWsbuY+dyxFFjIPeModqyakeJY41g/o8lR7tg8Y8Sx1bFjeqZjt2Ov44CjxlHvOOZocpxytDk6HOcYXnD0Zm53XHYMZtQ4rjtGpqx33HRKznhHk3Oyo82pcaY6M5zZTn1GjdPqdDuDznznHOcC52LnsqmrM0ucRZnrnCudq51rp3Y6y6b2ODc6tzi3OXc69zirnQedtc4jmQPOhsxhZ7Oz1dnu7HSed/Y4+5xXnNdi2cE5541pvc5R57hLdk2YdtOV4NK60lyZrlyXMWMkq9llvx2Hu7yusKvANc+1kNFLXMtdK1wlrlLXOtcG1yZXhWu7a5eryrXfdchV5zrqanSddJ12nXV18Qx0ap+rm+VcyHR4TuG65Op3DfAszzWUlcFw2DXGci5217uFaVlulVvIGndPdKvdKe50d5Y7z212VUxdS5JTq93OqbVuvzvqjuVZGenu+bfzWZ5juhchr+xjuQvL+NxLb48+zewuZIhcyV3sZnlTLMeZM3VLlsa9xhU2NU094l7P9Je7N7u3une4d0/bTB5w73UfcNfwWGXqYne9+1jmsLvJfSqr3d3m7nCfc19w97ov83zQPei+7h5x3/RInniKczyTPRpPKsupWWbtyQBme/QeK8uaWQZtXkDocSObLgcdpFE8+Rw9czwsO/YszsqfutqzzFPEcl6W/3pWelZ71sboMuBGipc8W2KeZNmrZ1sMmVWenZ49nmrPTk4DD3pqPUcyT3oaPM0se2U5rKfV0+7p5Bmr5/xd2DNth6dv2hrPFc81hjcIKcfUGTl6Rj3jPK/0yt4J3oRpx7xab9q0Y8RnnExvLs8xvca70E5RnNcLDHP0FnjnscyR5Y/ehd4l3uUsW2RZpHeFt8RbmtXgXefdwHCTtyKr3bvdu8tVQOvirQLun1rtPeRZ6a3zHp3W6230nsza6T3tPcsku7zdGSneS95+7wDlDvw+orNrelW2yjvkHfaO+QSfyjdxer9PbazzpfjS6e7wZfnyfGZCRjt9fl/UN8s3n+GiO7jUV+gr9q3yrfGt95WzXpt5Tufb7Nvq2+Hb7dvrO+Cr8dX7jvmafKd8bb4UOj8Jc8Z9Hb5zlkY6LX0XgL05bh/L73yDvuu+Ed9Nv+SPzznon5xj9Wv8qf4Mf7Zf77cC3XRO+oM8tyL05/vn+Bf4F/M8y7/MX+Rf6V/tX+ts95f5N/q3+Lf5d/r3+Kv9BxnW+o/4G+jM9DcDW/3t/k7/eYY92Wv8ff4rrhX+a/4brhX8TvGP+scDcmBCICGgDaQFMgO5AWPAHvAGwoECUxOdopaxwLzAwoyawJLA8sCKQEmgNLAusCGwKVAxoz6wfUZTYFegakZNYH/g0LRj/IYiDNTladhtyOjAUVsPj9xM9YHGwMnA6cDZQNf0Q4HuwKVAf2AgMBQYDox5B3xLg4KvOKgKTvTtCKqDKcH0YFYwL2gOOoP+YDQ4Kzg/c3twkS89uPRubcHCYHFwVXBNcH2wPLg5uDW4I7g7uDd4IFgTrA8eCzYFTwXbgh3Bc8ELwd7g5eBg8HpwJHgzJIXiHW2hySENw9RQRnBpDLND+umZIWvIHQqG8kNz/CtDC0KLQ8tCRaGVodWhtaGy0MbQltC20M7QnlB16GCoNnQk1EDrG2oOtc4YDLWHOkPnQz3BWaG+zO2hK6FroRt87UKjofGwHJ4QTtDXh7XhtHBmODdsZGgPe8PhcEF4XnhheEl4uTUrNyG8IjctXBIuZbguvCG8KVwR3h7eFa4K72d4yH8lXBc+Gm60LA+fDJ+esj58NtwV7g5fCveHB8JD4eGp8eGxiBBRRSZG1JGUSHokK5IXMed2mZoizojfdywSjcyKzA8PRRZNjY8sjRRGivkokVWRNZH1kfLIZkNDZGtkR2T39P5g4fShyN7IgUhNTmukPqczcizSFDkVaYt0RM5FLkR6I5cjg6H8yOXcs5Hrud2RkcjNqJSnicbnZUQnRzXR1GhGNDuqj1qj7mgwmh+dE13gWxVdbGkkjC7jWX+0KLoyujq6NloW3UjRS3QLRSnRbVRFie7kbxzFGFPqY5WKz7wdpOFvlYHonmh19KBvPd3v0VrKwaNHaDdGG3h1iM6HnPFosy+d6UckFm2NtmcX+qLRzuzCWPUGdZXo+el10Z7A6Whf9ArP+qPXojeio7TWulxBHH9E/hrDpcqnGN4DegJoC2gL0cJmxe8ZbZNnMbQr1+JpEZ7+BPQ2hlbla6BngeYaLKAXoK+JoRF8u7waeqivFaMsk22EykdI8tYrbERBWcZQcestcA4z1MhRQuXTDI+i1z6y5FPQn7bAqk3gPwHaBtoG2o5xbTEsA/4bZJjOT/9L1jHs40+JZk8fgZ3wAEafr7yHUOUjm2+9DP4MYAVDM2QsZDnDA7C5DDTHFGAl+LxvPfzjgQ+/BS+txFPwFRfAiYeMAKteAedJjF4HC+eC/1XQIej5Dp6+Dz3vw/6vYu7s6advk88/fVtZDY4SfZ3oW0z2gzaDtspe8EtAO6EZfKANT6146pLJGy7lE7DTC0mibYobkOGrsA3ammEb5oUdYlPugzyhSa6BZA08g9nJbuBCSK7AWA0Yi62R9BBZoniRUHroVgmh6irjfJ9Q1oG+SMj4DeA0gK4FXQu6AnQF6CHQQ0THpVBfQumh8Qij7cpCQVQOEirsGMsA+iyhZADneWUp0+AhlJ7nHFgyGzgRljyvepVkVN8gmjRL60iD/Dj0rEOvIsj/GPIhjPIanobwNIR5bQCegMykGNaCUwu6AnQF6CHQNK97aXTFaxg9hHn9BzRfUK5hI9YQShcwymnYsB6aj8Azx6HhAuw/Dg3VsL+c/C/vwyqUo285+i5A3/3EVy7H0/30VJSIFrFqosQ5JCkug/x3gHPBkbBeLxAymuZVSshomtcaQkaTVQWEjGa2iYeAEmybDduyMfpsjPUC6KmEwjA48KT0OhB7W34AMlbMxQo9AnbaXPAF8AX4H3aypz9ldAWhJMCrxeRV1RNYu2LIv6D8JtP8BqH0AufAS6/HEDPFWIdob8tnsMMPQfIQZAYIldMxYhPwEPVinAbQtaBrQVeArgA9BHoIdD6jZxBKh8bbmW2nlExG9WvYeQpjJYLuw65IjHHYiaQ4o9TCHjdxYM89sCGRbBbfI2sVD9NpIL4Hr74H/+wHfhOr+QtIfozdnkAofgzJjyEDefFjkpE1GL0Sa/FL+LwSllRi3GeADRi9Eu91AzxQife6AR6oxHvdAA9UYvc+Aw9U0hstPwNsAed38PmDGOvnGOtBGkvxY6Lj7leC5hwaMW6KitZ6D2zeE+PXgr+E9dVAjxZ6NHx22Dk3gWdgucxnCmtl7Gd4W1EHn/ShVx/0vwPJPryzdfTGiWPybxldSCiOQXKM/htXqYpQUQkMEYpjyo+JQ8jod0G/C7oFdAv6ZqJXJug56DuHaPikS36T7ZYcQqkL/peIVpSDgzdXWiifZ5zjhNJCzoENp2CVGfT3QHuV75Gk8nlG50G/Fdp6oS0NkjchWQBOAWb3EWRmEoofcQ4kJwPnYqbvAM9gjnMxxzOY41zM8QzmOBdz/ANsmEk2iB/hPbVhrGKZ8eUMQom/rcXQPwR7iqkvuxcy6fwhDbIOsyjGLPy0FnImoeRHXz/6voe+8/G0Sl5PND0VRrB2FYTCCOfAfsxFmg3Ef7csjNDaSVsIGc3mJf0zIaNbQLegL1nlIWR8Zpv4U0JhBLZNwm45gdEnwXtzMPoVjH6RczDiStjwV8j/GjJ/xdO/4p1twewugt8Cfgt6XUSvFpx+WkKxBV5VYOccxNop4JPZ8IMNaOAzpXnJBsxxNqx9GKuQilV4GL0eJkk5H/gcej2MXs+h18PkDUa/C7oFdAt6ZUI+E/QU0FMgk8bo/yCUHh4foXscdr6D3fUBrP0BpzHHfnijRM4mmttDp5/4AdZ3L+Y+DPwAXqqB5X8iFGugoQaSHliOvS3ugORhjFWCsQ5D8jAkg5A5DJk6md3Fiu8SinUYfSa8NwNrMZNz4Bkd9M+EZ3TwzEx4RgfPzIRndPDMTLwLQ/DMTLzvQ4SMJi99HV5ah9FvYawUrPgtnHJ5RKvy4ZM8zsF/XZ+vPEc0jcXo7zG6he8xzKsV8nXgtHIOZvoU8Ajm24o39wje3OPwzCx45jjkj0OyCJLH8f7Owvt7Vf42nVeE4lVIXlV2EAe4gVAcBl5VvgTOS6BLQZeCfhT0o6DfBP0m6GvQc41o7Od7aRTVBIx4Lzw/T/kbRu+j3EGah9FHKa5WFBCKo5wDS/4FNvQBB2P4HEkqTcTHzlcpf804HxBKKuqrnK48w+hUZSvjf6R8g2joHIcNFZj1OOdglJ8Cu6F/HHPsxhzHMcduzHEcc+zGHMdhQzdsGMeKFynPslFOE4opsf3PsgxFG6HYP55HiFHaMEo/tLVBWz+0tUFbv7KJ3iNCZj95aT95SVTgvp6qPM04v0CcORWn31XqK24nFK7GOKT/3wmldGAA+B1aQQErKGUQClhByUPI6HcYrSd7BKyacFV+jDQD+2DhdzBWH81F+AvoAxj3L5wTk5+MpzRiASy5gllswCyuwFfvkKTilyQpvhOzmcmIzxMKV+OCrO8zwGO0jgorrZdyCGvHo8pU0CcJmZfIq+9jRG8MXwLnJXqKHXKG1kWeC/k09D3PaWhLg4ZeQvl+aEijvox+CXQp6FLQj4J+FPSboHH/0nrJOVi1NLmOYmBCpp/lnooy7P+XMW4Z3v13ueXkN8W75BnFRezJx8G/zGlYchk+3AGsxNNOPEVEJ1bC8nvwdANmmqb8LfYM7cOnsCc3Egr8nbpXvkU7gVD8OufQb4Io8Msg4rPQ8G+QScUaXQTuxSgXYU8W9z88fJF7GO/LRfgnFe/LRfgnFTv8IvyTijNhLyGjyVdTCcW3ob8RO+dtaL5EtPINQukS59C4yjeo2sDoUtD0bjajbzn6NmMuXeCcAKcLb1wXLD8B/3TBzhPo+4K8jGkbIRRfiOU1JKmB5L4YPkcy9FZKZ8mHih4lRZvW8fkCZbVVhHGYe1y6QPkgcSaBcwKcSRRXs8wR+RfxxStACZKHOBJHHoD8IeXrbHYtWLVKPK3E0wZ6qvwIa/ox8Vn024DolzR/DBmZZNh5S0+vqgJ443BigDMOTjdx2Nn1EmicBsQX3yYU0FdK4wj5XpKXO+WN2KvETwX/In7dRiA+8+pL8CrdDl14egKjjGHcMVU1ouJ5jD4DTgs4c8H5JWLsf+IRGvHFHkIWfVUhxgASh8UwTF6ZKtMZNRP8meDrwP+a/Ae6B6G/FTqPIG5vxVhHSEY6iryJZ+uXsa+ywQmCkw1OBrKPe5QaosGxIK8XcN5aYhWJXDbifaqHGP0sNByAhg9R35jKabzj7yMfGUZu8gynoWEnve8sk6W7byf23n8j+2smFP8bMpPQqxK9UsejAtUNaNytNK78CnL/Ccp/Zfgn0IugJwl50z3gJBFHdiNv2kyoquI0+K/zPJo0s7uSRr8Xb9YpvMX1mFcb5lIPe/To2wj9+nG6s96FhTth4bu8doReT6KXFzbXwCc6cGp4Bko1OrkBWAg74TdFKbAZknEcSV6FDC6+hVCF/EX1Q3o34wVC1Xdw16O2oPwJ1u4EZldIb67M7+hP6RxQwfI41B9UT0KPnp6qfkuoPEsyUgVyxgHk/oPIfGuQbx7nlQ3QDl43QJYNSbEDvQ7zTPPWixjrKLPwZVQwGrnNcj3ZLD9PNPxwATNqhj9LUK/4FeoVKvKbzGsyD6nOY4dTbghkJwnRj8dqNUQ/BZmBWHWC08RPRM5+D/jTwb8H2MCz+Bh9HnuP+/+XjPMjzG4n7GmEPTuxjnGxHPwEk/8Ed8RDyKlfRBUL9SL5DPLrj1E3kHk9UDmAnTZANFVupefB+Rk4zxOHZffEWUsofgwOP2lxc4k7+L769AZDg+oC459VbSEaJ8A6jPs4bFjHOeMSMIPhvcAQcBL6VqLvaVh4HBaWQ8M+aCiHhnJUFX6EGkg5r86RBnZik54CyFiBAkfUCSugTSAZRTFWdiWqHMWkX/UE6VeUQv4FjPgGRnyBc6A5Ef7sA3860dJ8nGbvgf8wfPseOLfiZtH9rhqhcz6ujui4pfA8aU7gqwCdlePVQKIfxH3xc9R5HiQ9ih+TfNz9sO3HsEQDDVrYoIEfbKiI3oTMLuzwYUg6KE6TJxBKDrxxaoq0WQxPZ7JJmYo7gnGkFMRdEm40RMXKazj91Ihhhml3ie/E4kOKADOgMxWxIk5gdiPcTxmQsp1ofm4jjnofsVA29uc+ouUPwNkHmX08woH+ryMvqCWUPYgrVoB/jG5/xUzEAMdg2zk6VeJmId44Bz1dsGcdnQ/KXJwV7+JsOY8Tw4eIKB6Rw70U86gmKCcxDk4qSYP4f5RQ0iAa6eD5RZwbEYIbt20E9+yjuLk6cIvRjPK5DXRuxM2Cnfsp/mG5VRNyK448E2lC/sIR0Tui0DmEAvIySYdIrBcyvej1OGQ+Qgz2OGQux6I14rRixGXwTOt4mFYENr8Pm+OQbX1CKB6CJ5GDsBWkeCkN9HlkB12IBk9gduswr6exRk+j10uEitmkR9mHGBgVZsVsRMuI+RWz4bdRmc1dcZSQ5YZ0SlRCA+4vcQrivQPAKZCPYsX3wMKrdHqIN7FvVTgfUvFGxOO9Hgc2qj5hnN8QsvzrUeRiFMG6+W4kPnvjPkGMlIEoLogVDEJDFeIoqhV4CBVW3E2TaL0YTXtmiGJIBT83UuGfk8Rhb00HRnkOWQBlfwfhw8ugf4j3vRKcTnAqeYSjykHMT/l+pepHRNOnaSyS/yeBsrxPGf0YJB/DTFNxDqhg+duI1hoRrb0Ney7BwjcQ5Z5Dr2bYU44RmxEzVyBm7gL/BCTfw159BfI4x8RFKh3j/xp4ieJ8prMKva6hF+JSnO0bcLY7VRTLbVQ9y7x3He+Lm6oWcgJVbCQ33v1PUM24gBrOJzEOaXhRnk6RpEzeXi5vYvIL4c/1sM0HPZOh5zmZ7sESTmN3/QDaTkFzGqdjlViqngXlzYzzptxNJ7b8PaJ5JQryBpIXxrGTizEiVkqeQhVCAVVB8U9Ei7za8GfQl1HDOctp2HAfcZSdxFHch9Fn8coeKo0tiAGeI0ukt2iOSiPm+BYk78PskjEj9BVHYNtszGWEYjOFF3Q3+Ac5Dck61IXqYP8S6KmAniXQXAAbdLDqI1jbCA256IVIRvwQnGfA6ZDp3H5SprO6A3FOJlWZ4s6grpUJTi3R8fPBqcVNUYJRRoEJ4HRSXKF8Aufq93AOw5OqJ+ElfA6oWqNkN1ecCjFbOqx9DHWtZVSXU+agOsdvh1JeicXTs7zmiWgtHzXtx3kd7NZepgc7JO4MzUU1mVtLsVD8fIrTlOOoE1qwKzzYFbfGf8g0rIzVzKkG6EalNB+18Q9QG9wLegd8q+F1WmjwYzVnkwaxX25jkq8Sim3gjKEuV4iq+MOokKeiRtcKm4/wzxqUVGOcijNwDNHUQmU2e3qF73+cioeV91IsCpnD4OzF5wsJJCMu5593IJqSMGI5RpyIc4DnpOng94KviUU7dG68wxFPDXi6GT73w9pMcPyQ96N2qkHt1M8r/NSX5XSIxHgOCHwFs9Nidi2InRTkMeUBVEQVpFl5kDQrFNA8G2PZMNZszkGvl3kNGbb9AH77BJX8GiXqyeDUYMQ2RGselZM4qiugd8Fv1LcEkocheRjWesdXCZRv0txvoT58H/LKW4ig8qiXKh8WZqDXFehpgZ4rqMp24ZRuBb8O/EbszOmwuQO9jhPKGrxxh9Hru8A8qi0z/aM48+dgJxA9pvoaolmG4iBuyQZEU4NY35dQR31Qvp9ocH4Hzn+C87tbSfRJDe7HVERER3Cb/wEaPoX8p4im1uGmngDOaxjl65B5DSfYg3g6BZLpnIZkBm7ht4AZqPX103ctpAUy1SgSCaUFkOyk6p8CNRyxE/f4AH0Thp08RUTHzroinP9FREMmA3FFe6zaWcPoMLR9F3qewn2dhkjyKfCrwDGAUwXOT8GpRhSaoqSqSzXiEAtpUMWjgoRMX2EBn39+nYooaAaefoIYcgZkMuj0U/6CUMErBm+hVlki06ckLyJO3o5M/0XY/zH6roa1j8OeP8Ke1bDwj3i6jT8leaGbRzjAmfBeDaGATwckF9HsHKZorQjRWgc8tg8+nIOoewWqf6exFqvB+T44H6LGewR38Xkgvs8gDuKOlsGRY/HzBNbrR8CFZBu7Ix7DPctGlB9BJc0He/Lgn+t4mhdbZeLw1enE2b6Z1/roOy0sEliLu5Vkvg3+/9yyMRo6FU/C2njo2QGrnLDqLDz/L/yTAtxlW5Gx1iBj3Qr5QZlkTsj3UoUWa7EAucmHlJtI0zAi6tvStNg+oSgrgt2VwrMSeHImPPkOOC3oZVI04915EruCburf0xukWgpvbMQc8Wap1oJzBjKIllVl4HxyaybTs44yFHm/fJhozEiLXCmIWR9AXvAuySi/Bpl38eb66KlyvXI90ZApwB57BG8oPvOVhsBZhHUZ4lETaiOokzC6EGdUIWZBIypJmwhvKJ6it1Jqpr5KERpQWVXYEZMn4E3/ClbnBJ5+JbbuJPNzQkkHTiZkeiCTyStI8iN4ux8hGladgYwF+/YMOL+Sn4DPnyCafy4w7qB3nGwT+Of17bDzVeyWdtj2VawIsjklsjkJ2ZzklVfRp3LyfUTzOhvsrKZdIS2ib6zJGxUfEQ35RYo/Mc6zCrpZdskPMnqQvn8l7cIoQdpvqp/hLA1C2zF5BaMfI2R7DJ8mSC8STSiex+y2YnbnY7HTMniYOB/GONznNJd94PPs1YG3bBL2p1WWMQuG0geEyhOchlVWigqU3yBkJxWbi4jzU/G/wDhClZbTGPFl2DAHY70Mzhp4rB+cNfxdwzk/IFNVsJBQrEevZMigHqg4iTM5F/xhaMiF5T+B5f8Dy38CznzIHIXM08j0/4wT72l+W+G9zsB7vRYxWC48GcXNEuQ09JSA8yg4JcjyPsSeXwVrn4G2S+A4wfkWPsXoRB3glVjUTfb3065QdBCK/XSqi5voe3HS7wnFTbFP7r7CZL7P5XELZOCX0+9DtYp/XtmHVVsG257ErB/DrFFdlIrAmQNOETjz+CeVOGNTgJXARXjffwAPvA1OM/CF2Cebuxndg3nNpXOM3bxpuJHp9HsNModxnt9Cr9fh7TRY/jpO+IkCu+OE1fid2DjxuvgXcUy8JSVM9kymmn+2dJD+fwLSEek1qYV+o1R6W3pH+r10Xrog/VH6L/rlUekj+lVRBYvCFEqFSjGRfhuUfg1UkUu/+a/wK4KKsCKienXif+L/VbQq1tbE2vo7dLZQKBSzZ2sYr1zYLGwVdgi7hb3CAaFGqBeOCU3CKaFN6BDOCReEXuGyMChcF0aEm6IkxouTRY2YKmaI2aJetAojovvO91Jj366lb0dKC3DCDfNaO/8eE//2E2qi+F4Yiw6Ik6b6JfPTRNCo8Ss246kbffEtIZ4jiqcQyeJzeylfdY8Q+54Fu9lIphOcN0DfkC9gl9HTW+g7yKMqjqisz+CxA32Lk38OyT8BY/chcWpBv4k9jmoWO7H+VYh92slWUs04zBOMFr/C9q+wQZCFRMZNEdKYd3MEvWASvIJfCAr5woPCXOHrwjeEpcJyYYWwUnhKWCs8I5QJzwrfY36vFH6C3wg+JLzKfH9CeF1oEX4jnBbOCt3M+xeF94UPhA+FG8LHwqjwV2GcrYFClNmVoBLjxAniJPGrYgJbj3TxAbYmU8VpYq64gP5/R+Jy8VGxUCwSi8VviavEb4tPi+vEfxfLxWfFjeJz4iZxi1gh/kD8obhN3CFWicfFBvFXYqPYJJ4S3xDbxDPiW+JvxQ7Vq/HZ8Tn0O+3xxnhLvDXeHu+ND8ZH6PcL4wvjH4v/Jn2vmf2zgTlCJU4U1WIKsyVLzBPNolP0M4yKs8T54iK0pcyiYvZslbhGXM9s2SxuZaPvFveKB8QasV48hvHbxA7xnHhB7EW7LA6yd2VEvClJUrw0WdJ85k+qlCFlS3rJeuePWwpK+dKcu/4skBZLy6Qixl35mT+rWQtKa6UyaSP7+/afLdI2aSdD+rNHqmYaDzK5WkYdkRqkZqlVamc6V0qd7M3skfrY5JdKLPuTllBUpsiTv0U7WP4Zw1NES0PynwX6BhpDxQ35kEAVOSYpXCIUV6LXLEJlLaGsAhrlDbjpvoU48y3Kr6HhJj1VLUKvhUA7osFRYLxMMVWP4rt0Tiro+wkLiZY2ygkMVxEqShW90MYkhXZCMZP3AuccoXyNkM2C8IDiRzQL6MnHLdzG9eDpEkLlJmgYBfYCtwKPKuiTrFxCRR6h1KxYhluGzvlRcNTKpbCW6ucTiSOcI1q4RMjkiW4neaUfejKg8yT6mhVURc9W7KFTRnEAdtbR51DoexToBV6O2UD0EvStVpTRjQB+MIZ1FGnHNBwgL8GqBqLFPlgyUdAKkiRIRkESxMlbJu8QhP//+3H/z/x+HLthEtYKQkIZaxtZ28LathhvJ2t7WKtm7SDx5MSEDQmbEiq+oJHM9oRdCVUJ+xMOJdQlHP27RrzGhJMJp1k7m9CF1p1wKaH/CxrJDCQMJQwnjCUKf2v4d1XixEQ1aymJ6YlZiXmJ5i9oJONM9CdGE2clzmdtUeJStMLE4sRVrK1JXA+6PHFz4tbEHYm7E/cmHkisSay/q9G/H0tsSjyV2JbY8QXtXOKFxN7Ey4mDidfRRhJvqiV1vHpyrDGa5qbW/K3h31PVGeps1lJjTa+2qt1fopFcUJ2vnqNeoF78d22ZuuiO3rvbSvVq9dq7Wpl645dqW9Tb1DvVe9TV6oP/sNWqj6A1qJvRWtXtX6p1qs+re9R9n2tX1NfQbqhH1eNJ8pdpSROSEpK0SWlomUm5aMYkO5o3KYy/C5LmJS1MWpK0PGlFUklS6efauqQNSZuSKr6wbU/aBR1VSfvRDiXVJR1NavxMO5l0+nPtbFLXZ1p30qUv3fqTBpKGkoY/18Y0gkalmfi5ptak3N0w7y/RNOmaLE2exqxxJq7/h42e+TVRzSzNfNCLNEu/VCvUFGtWadZ8rpGO9ayVazZrtmp2fKm2W7NXc0BTc6fVa47dafS8ibVTmjbQHZpzmguaXs1lzSDG+vt2XTOCv28mS1/UkuOTJydrklPv7p+ckZz9maZPtv59Q193cjA5P3lO8oLkxfh7WXLRP7Tn/9KSVyavTl6bXPa5tjF5S/K25J2fa3uSqz/TDibX3jnb7zqL75yVsTMu+Uhyw+0zKLk5ufXuc+TOHrl7XW+vyW0ftSd33rH5fHLP3TbRWZLcx84T9u4nX+FnQPK12PvL3qvkG0kVdG/Qfk8eZW1cK9/ez9oJ7G82Dj3XJmi12jRtpjZXa9Ta1aN0v2i92jDxaW7aAu087ULtEjpftcu1K+ic1JZoS7XrtBvoDtBu0lbgbGdzpv2u3a7ddft81lZp92sPaeto3tqj2kbyhfak9jSdnaQT7ay2S9utvaTt1w78H/a+B7qq6sr7vvvn5f2975K8l/eHlI8yDKXI0BgoUspCSlNKESlSpDFkkEZMI0bESDGNFBEjQ5HSgIh8NCBmKGJEREwRATGlSClShmYspUgpZRhKMU0pIsNgeO/b+7fPC48kVFyzZq1vrZmctffd2Xfffc7ZZ599zoWzb3Jbcy/kXo5qUXc0EM2Oxti+sCnZkm0Y7UHrpFrPor1p/VF2jvbLLYrmRwezDtwbFh0ZHR0dx+tO+zqbOUZKJ/Sm1xS1FnCbeG2MTowWc9uiU6Nl6XGGPI0dxp7WZV7zuG/Rimgl86JVtIavUsDr9bYOcFjWZV6vsB7zGpxei90KyH/Qt45r7FSB6NxudQxYY9PrqoJoTbdzDOk1EpBeGzPWymvWyPQ6qSC6iNZBXgt57aP1MFqbXcqAZ3idKxdoj1kE0RXROlzroxuim6KN4FP8iG6PNkX3Rg9Em6NHosejp+DHNId5/cC8pXnE8yl6NnouejHaxrEopsc8mBfpeZCOi+RbrIfjXMym2KTmCI8Xxy08r2Jgp7nVcV6p+JJuP3RQ3IyFYwke81jPWJ/251me5lusf6wgNiSGuBMrjI2JjY9N4hiOuER9iJXESmPlsRl47uNikGpXbJaK42l+VYaMajP62jEep/vDcTgN14t114mnsWp1nUfjUHgVOsXJzFjJ8TEdIzPiIctCD8vQPbZBbEFkeGxxbFlsZWwNA+9teLx5TxNbF2sAj2JWbHNsa2xnbHd6/xLbFzsYezd2FHGM9h2xE7HT2E9QTIu1xM7HLsWS6T1B3Iz7OJ5h/ed9A8W6uBPP5TU6nhfvFe8bHxAfFB8aHxEfFR8bnxAvik+JT4tPj8+Mz47Pic/HfkzFS34WezO1b8KeR+1RoEvp4HvxhfElHC+5Xe37uvQ+LHk1BgPSexi192BdvB+LL4+v4v1OfG18ffp5luf+4HeyF/ZZ1Lf4xvgW8HjfmIb0PjETOu4F03u/TFB27bSvSwPvxdLQcU+X3qN1sTeLbxP42L0Z770y91+052rfd2XssbiteJZk0jbpNLdo/sV3xfd0nFfx/fFD6T1W/HD8WPxk/AzHorRcvDV+gf06fjmhsT+1xzGW4TlH/sfXhDsRSGQnYqB7JHon+iXyGTLnW2JwYhjHiMTIxGj2z8S4xMRO+xiCRHFiKgP8kQB7GYpbibJEBa6Viar0HOQ5kZibqEksStS2zz+aV4kViTqeb4n6xIbEpkRjYnuiideeNHB/+R2L7cR9TuxNHEg0J46wbo4fieMJxOC0fOJs4lziYqKtu97d093uHuZYlPGN5iHdh3cv5PWPAXGS9gTdx+A7zSUcj7uXdi9nP+W1sPsMfK0Z32lme6W/1czvCfxFZrYTf6eZ5bvv7r4P32o+2v0E7wE5/qdjc/tXmxlIH68z7Nv8dTi2u/p2cx77WV6vvL5sRx7HvAF5g3BvaN4I1pE3Km8sx/K8CXlFeVMyvtnMX2zm7zWrLzWzfflrzYhj1H/+ZjOu+/MOsT+0f7u5Ne8Cf7E57T+8B+f9B3+/mb/ezN9uBl/FXP6KM3+/mfXzPMn8jnO7r6bfA9JrFNGfKvtUBb71XPmpKubxP67yGRlNM88xdodB/wF0EF+V8IO+BfxXwHlPc5nPu9cxTvL/cz6fVaG53N2Z4+4OTjHuFoMuBF0oNEuaLeC0gNMCTgqcFHOMM0wbZ4Tmu8bL4LzMHCvAtBUQGs+24dk2aGtjjjUCMiOYo5tM66bQkF8G+WXg/AB3fyA07vbF3b6o/R9R7z8KjZaUCgZnJu7ORL1T8NQUpt2/gR1+gxb2Q0v6CY22ZYGTBc5Y0GOFxt2vg/N16PkL9PwF+ntBfy9IlkIGbTCLwC8SWmwFfBptO412noZmaLBEQy/0dBGeXcScrB5MZ/UQGnc/g7ufgYa3oO0toaH/AjgXoK0EmkvQBljbhLWNdyDzDvj3gn8v6EdAPwKZeZCZB3o86PGQmQ+Z+aCrQFeBXg16NdMueJFLvAi+Z8L39OEY0+HQ+Qvo/AX4J8A/ARr20WEf/Rzoc5D/NeR/Dfu7YX839C+F/qWgy0CXgW4A3QB6O+jt0PM29LwN/qvgvwr+n8H/M2iMtYGxNu4CfRfk4ZMmfNK4Av4VtAf9cku/DoB/APQToJ8AfR/o+yD/Och/DjoHQecgyMB/zMWCcXc66Om4+xE0fATLPATLPAT+HvD3iDZ4yJfx1JcxFocxFoch2QTJJvDPgn8W/H8G/59FnjXoedCfBw7qdUm96LUuvZ6GXkxDvfWosR70ENBDQA8DPQzysIwbltH3Q89+1P5p1P5p1PVX1PVXyGyCzCbQ6KOOPuo7Qe/Es/A6A15nbYO3bwMfnmyIJz8H+jnQnwX9WdCITgaik7Uczy4HvRf0XrR/Ldq/FnQz6GY8ewFzbR5jl8TJBmBEKisCDRHxAfBvx7O3Qw9ioIkYaMqIS8RYjWfn4tm5aMnfg/576IHFDFjMsiFpwxqYmzrmpt4HdB/ECi/ihheaT6GWU9DzEvS8BP6t4N8KndBjyRwfCf5I0DZo1OV5iev14FkP+uhBH90GRtaAnq9Cz1fRhtfRhtdBh0GHId9d4jlsuB86n4G2ZyCJOJ+FOG++i9rfhebe0NwbvUAENhCBDYydgbEzi7He/Qb6VSyVmIm6XoPka5DMh+Z8tAfzxY35on8JNvwSNDdCvhHyWBFMWREw3y2Z7+WQKUfLsSplYVVyI267e8j8Qht+CQ2/BAfaDGjTv48av49a3ofM+9DwNDQ8DRoro1tWRviPDv8xKqGnUmIC+vhpzN9N8My/ol7EClNiRSvkW1HXv4L/r6DXgV4HGaw+BlYf4wPQH0B/AeotQHtAu0FbaJuFtpkDoWcgnp2MZyeDhicY8ASjFnQtaPTRQB+NlaBXwpIHYcmD8LQ74Rt3oi7sXizsXizY04I93f+C9vwLnsWIZGFE3HjWjWdN1GVKXYixBmKs8QXQX5DIDxv+CJwfoRasX5bsnT4PDZ8H/UXQXwR9B+g7oOEQnj0Ei/0RFvsj6P8E/Z+QXwD5BWjhPWjhPeB/A/xvoF74qgVftQaDHgw9S6BnCWjMUx3zVMeo6Rg1czb0zAYNC5iwgIF2GtJOjL6B0TcQUQ2JqDtA78Cz9+PZ+0FjXpuY10YcMnG0/0G0/0HQmK1uzNYsyGRBxoQXmfAiqxp9qYY8doxu7BhNRHsT0d7EWmlirTSwfhlYv6wQng1BJhsy2aCxRptYow3ENAMxzUDbDLRNx65Jl10T9gwG9gwW6rJQlzkLemaBfhH0i6A3gN4AeUQnS3ah4BvgG/BAAx5o/RwyPwf/OPjH0V/EUjdiqYE9gIE9gH4ebTuPuhCHTcRhCzKW7BMwLqaMy5ug34QeH/T4oL8O+usgg9hlSuzaBXoX5CdAfgLoBOgEaNjWgG0N7BUN7BXdC6FzIdoJW+liK8wyE7PMfA/0e6CxUpuyG0EMNBEDXdjLubCXcz8GnY+hrkdR16PQfxn6L4OPnYOBnYM5B3rmgD4C+gjkEW10iTbweQM+L6d0tAvaZT6lE2wg/ODHnNIZq92uff2aszr3adO1ihs+sfOOdkA7eM25nTPan7T3rzm9Y7af2OnZflbn7k5ndB7vdDbnjfaTOQfMReZT5rPmSnOb+Yb5trnXPGP+yfzQvMjvftpp6uVprYXqvET1mS4f1ZbrynP1ItzXNcA1SIrWAhjqGuEapcpY1wRXkWuKa5prumsmtWSOa75roWuJazm1Ya1rvWuja4trm2uXKjMBe1z7XYdUOew65jrpOuNqdV1wXdY13a0H9GyiYnoPvbfej6h8fbA+TB+pj24vmj5On6gX61P1MlUq9Eq9iuTmop3ULsjRHdRK9VAv39N/q3EWAp95WcNf/jN6cqa4sRLna3Tm6H8Cfwnz5UwNH6/F+WLmlzC2mhmbA8A5bx7EiTXWMxP83jhfc4ZpdyVkyoBHQ38rtF3AOZcidealt8ZnWI5zq8B5Up2LGaCp0zTahzhxM+bqeRntMk7QhHGaZiNwGZ+yca1jbfohOYMjfEiuAK1DQyvwbOANxhKMv4Y2LOFTPzi9MpHP1+h7cfJlEOhBxuusAfIpnHnJUadvCGt/YBmrABouMTYm4NlCnK8ZyhxXjlnHdsBTuTgv0xcya9T5mo3ts69am8ezT7+JcAHNvmyaeZ+hWVeAWcdzLj3Tpmv30+xaSjNrPc2qVzGreE6lZ9KftLM0exyaN+MxY6ZixszEjEnPk9dd22CDCtJ/9XRj5/ONjdeccex8ylG/5qRjT5x2ZNzfVUB4iGu4q5CL5kouS/HprvGpg/wuArqIR0A/xLTrK6CLcbcQ9Jugj0ByDmgP6KG4+zM8dRn8/wt+b/B/DP5g0P1w1w3626D/STQw7fotJM/ibpXQuJstbQPnZJLPM/WHTDY05AOX4u5hwbibYFqddmzTdYzkP/zveSf3/5TzTjSXPP3Mbp5+nUq+Z7BnmGdkexnNf8saZWKnUuyZyn+5GqXCU0mlijgdy1xPjWcRlVoqK1DqgOv5706rssnT2EXZjucbPU2q7FXlgKeZyhGC412UU56znnPt5SJkpbRJ8eqdisdre8PeRHvp6e2jSv9OpcA7JF2Xd7i30Fvouegd0qmM8Y73TvJOQn0lKKXecsIz+AlVZnWhvb+3Gs/3T1vWO0+VBd7FVJYRjO+irPQ0e9ekCz21rr00SOlsKe9m71Zq0872stu7D+VghiXS5V3vUfKFdOF2nfCe7lBaCM57L6EkvUmfKXyfz+cQzm33lTJPky/P16uL0tc3wDfIN9Q3AmWUb6wqE3xF9PsUKtN8UzL0tBffdO88/gvdqhT5ZqeLsn6Jdwz7t28OPHeqb75vIfuYbwlbwrec/cO3iqi16O1p33rfRrRoI7SLJvIU3xaM0RDfNt8upnx72Pq+/bB0i+8QzZ1h3oM0b8b5DnvafMfIyuW+k6ThjK+VfLnWd4G8vdF32bvOr5EnH/e7/QFvkuptJU/Z6y33Z/tj/h7eNf7e/n7+fGox+/9x/2D0spZGbLNnr3+Yv4enzD/SP5p08ZxFjyApc4VHd6+n0j/O18s7y9PPP5H4zSQ3kmZds7+YqGG+tf6pnnH+Mn+Fv9Jf5Z/rr8FcrpTiX+Tn2VrrX+Gvo1Lv30CztV5mrH+TvxG1UU3+7dQazEv/XtJc5z/gb/Yf8R/30xz0n1Xzj2dgm/+c/wD5Wjn8bR/dvegb4E3627z7AnrAE7B9YwNhGl0aLV9rIBHoGehDljvt60VtOuvdGugfKPAmA0OoDPdeCiTggezBGCuWo0Iew1YKFBKMoZ739BwPjCf+7MCkQElgeKA0QHUHZgRmBaoD8wILaFw2BhazvweWBVYG1gTWBRrg42Uy5oHN5GvTqNat/gOBnVR2B/b5crnQvYOBxYF3yVcH+EbQnaPU+hPsp4SnBE4HWgLnA5f8NYGkd17Q9M0M+vivzHPfgk4wN7CY+jnTN5v7F8zzhoO9gn3JKn2CAzwjyUsT1OKTnuPBQcGhFGfagiMoTvT3XwyOCo4NTvAmgkWBhuCU4DSe175WtlZwenBmcHbAE5wTnE8eSpGDPNKGD7RRrCoQCdK4MLiEdHG0gwdDElEGHtzqLQwu95wNrvLqwbV0Zx3JJag9i4PriQoHtgY3evv45gQWB7cEtwV3BfdwFExHsuB+7zKOdIFlvi2+LcFDwcMU52ZIrAseC57k2rim4BmySCtHM8KLg63BC8HLtma77YCnObBVIhdiV4Nvv50dPOYba8e4JXYPGifyHfq9t92P/UeKr5Xa3d/O55hkDw4Mt4f5hnrK7JHkV6epltPBURQt6uzRvlx7nD2R7hTbU8kzZthltjtYFCyyK3wDPHW+Ed7Fnka70ltqV9lzg1vsGhpFjuz9aU1IeqvtRd7Fdq29IlBo19HsaQ72tet9ReSXJTRiJ+wamsHlFLOmeJrtDfYmu9G7z95uN9l77QOeJm+D3WwfsclS9in7rH3OW25fJK3ldltI904izSXBhfZUb3mwKOQJ2aFwKBHqGepDbRxCuhso1peH+ocKQkM8zaHh3v6hQppLZd7ToTH0zGkan2RovHdfcFRoEo1RKfnIKF+rPcxbEigIlYRKQ5PIDutC5aEZoVmB/qHq0LzQgtDi0LLQylC1bwBd1wTGh9aFGkh6M7W2X2hraKdvdmh3aF/oYOhde693mY/eupITUvT+afbhfaPZJ7ma3gluxR5yi8ZZf0dBz0vu4LcE5hghvKl8KfkCv4WAHg6cpLdwehuDHoex62aW0c8xTe/yLLMS2n6Pu+t4N2s1Q96Fu/Vci6Ez7f4UOBsh74H8m3zXdQF0bRI5A5CZkHyVd8JMW/IWtQS4H3CNcLgl5lxom41+LQc9FP0qBWcDODvRr/fx1NPoUTVq7IW+rEFf9kGyAvxytGQRavfJOxzrtApwdzfwKrR8HegxkD+K9kwHZ5vUi2dzwd8DDkbEdRg2Ga1qjEP/C5zDJH1He05DMoYW/jBJb7HaLsZGT8h0T/G/o8znerUP0c4Z0HZU9Z05M6HnGGROMzaGgz4G/lq8d2xCLXNRyykZBeDBkK9mvtEGzkT0MT/Zhpy6NrYb8CLGrrPAJ8DJg8xp0NngbwPnfXDGAQ8Ffzdj48uwwCCM1160rQq1l6HeE/AcEz3qK/6TurP9HW0LWpXNtCeXcVaR+Crbyh3DU6eZtkZBJgBOsXgvP2vmiQb2N9cC6CxKcl5NBdq5AbQv+U32sSRnquQAj8NTe2HDr4AuZUnXBTyVD/oiJPdCQy3oxeAfRt8PgN8HnA9wdyk4R6FtKTi3QvIvjOkdH/4AC4xGy8eiF39AG07wuLvhjfpy7q/ZwpjsswN92YH5/gJayPJJaBigxnQHNNTjfwh5/oYxIl/D3aHAp+A5zdB5SFlM7MBtLkQvTsBKueAHgYsgWaFqbIM3tsGrz8NDRJIt1oNpih7nEQdYZgpwLTjfhGQCdSUgeRBP7YXMKuVjfPcSvGgeY1dSxbo4+JizGP1hMsclyrEvyRu6estupbdonrmEs/LgUYghxhk8Ow0Ycc/cDPuf43qNDcnfYS6cx1xgX5qoYtF5+LnYmVt+CH0Rr1sEy5yFzCvgV6AXo0HfBv469O4w6I3gj0q+i1GuBz0Tlj/P/0aOGsepyFPA/9KGUWvE6P8SfPRIfwvP7sRYz5ARZxmaNcizQu/k3zTWiA+wDbUVLENRaAd0smSuxGQVt+Po6Q70lHU2wlZhpt29YNXZqKUObauDhglq7rOeEnhgb+CpaEOLiuGMi6D/gMTG5EqMbAHWghVoSQHkNawarLOGZLlV0zBTpvEIpu4gehLG+ixkZkpsRzsXi/X0dzCXd8BLuV9NslZC8jHwJ6KPyxHDJ4DTC6uD2HkDsAd3e6K/I9HT48BLgNuguRCjPwK4F0Yqnc+Wzflswd3Bt7X/zWf7n/PvO7TGOUWay5lCV/JXZ7rZzZniTLshmE4wk2D2dWCOgvkKFt4gLCFY3gWsUrCWYP0NwkaCLQq2KdilYI+67ic4RHCY4FgXcJLgzA1AK8EFgssC3cii3dzXAvrWAboFOkD2J4AYQY8uoHcXehn6dYD8G4TBBMMIRl4HRisYp2DiDUIxwdQuoExBBUHlDUIVwVwFNQoWKahV1xUEdQT1BBu6gE0EjTcA25WOJgV7CQ50gOYu4EgHOP4J4BTB2S7gHMHFLqCtA9TdGGTrBB41P7oAvpdtE4QVnbhB6EnQpwvwKOhPUHCDMIRgeAYUZkBaZoy6jieYRFCSUVcmlKpr+Q3ADIJZHZ6v7gDzugB+dgHBYoJl6rryOu25HqwhWNcFNBBs7gK2doCdGbE7M96mY6WKY9m7nfb4kr3PuTZ+pH0kc1zT9k7b6GBGm9+9tk3t8SQzBqTnr5pbvGakfT776LU+zfXw/ewTBKcJWiRG8PqSfV743KfsSwRJia85poM4meMjcGQNyMlVsZ37S/6ek+e0x+ecXgR9pb85A8QOOYMcxEvWyZAzlGAEwSiCsQQTCIoI0vZV9uRnsU6m17BtGXZmPdNEB9/LIbmcmapdHcepwxi1rynpcUrK2pgzW7VtTsbzZ6Qv+H22rHno23zFm5kBc7qAjuvyqi5gfcb6mrnGpuFwBnRcX9Pr5X9lnYw5166FvZ2ra2DGetceswhyFqorj/lyxaf4kcN2pD1GDvUpZ6Piz5P1A/N2p8ynHNpT5GyTWJSzS82L9DxIx0Vd9CDOFWbMkaTELTyvYmCnudVxXqXjS3puJVX796gx35/xfLnMtxza1+QclnbnkK1zTqoYPk/1gXwjp1U993Hxp2Mc70om3eau4nEaSjLgenV9XDxd3AE6xsnMWNngXI2RmfHQo55dp2IT24BidA7t4XIuC/Dehseb9zRhTfEoZoXJR8PsW2r/EiYfDMdUHKN9R5h9cIPEszD5Ybjf1T1BOF/FsyNq30BxLjxY1ugw7bHCVGd4NAHXyXVRHWGug/ZD4QoVP9PxkuPkYOfqvqnmahyFLqUDbaxU8XJDF3G4Qwxu38OoOMy6eD8WrnKw3wnPzXi+UfUnX+yFfRb1LVyjeMMyYHQX0HEvWNYFKLt22teloT4DNnSA9B7tv7I3O+Vcu/8651zdd2XuscrUs2czbNJhbvH8Cy/qPK/CtVf3WGHap4brJBal5cL14tfhDeJP7XFslcwr9j9caQ8bblQ07VPDTQKZ8y28V2JE+IDyz2an8z6GIHxEwWgBzD2KW+Hj6nrq6hzEnKB+h89lzD+aV+GLMt/CZJ8IxcOIR9aeNKDPJ8VO3OcI7S0jYaWb4kckofqp5CMUfyIUfyK0X4wUSCyKUAyOUHsiLD9G1j8G9Jf2BBHaA0Z4D8j1l4if8loYob1fhOwQmSH2itDeLkL95veEyDyxU2SByEeojxHau0VWOtgDcvxPx+YI9TeyTgHzwuLbkQaxe4TsENkqfhbZKXbkcYzsVvf2KR0HJZZHaN8Uob1PhNtO+5wIzdsI7W8itK+JJMW+uaaKY9T/XJ+6OuIPubS/yaU9TS7tZXL7ZvhPT9kP5NK+Jpf2NLlDFV/F3Fza0+SOEv08T3Jpb5NLe5vcoqu+2v4eoNYopnOniEzuNOEhE20PYR+wZi4EzX/tAVlpmoaTn5ITJJlokoMmeWfINVNZZsgsk5wyySOT3DHJGpNMMckRk7wwlRGGfArJ/5LML8n5UtlekuEluV3I8ZFMLsnhkuwtyduSLC3JzJJsLMnDktwrlXWFTCvJsZLsKsmrUhlVkoEiWVRyplcypyRnCnkrkiclGVKSGyVZUSofSjKhcG5Wsp8k70llPEmuk2Q5Ib9JMpskp0llM0kek5yOhq0ka0nylVSmkuQo4WSv5CWpjCTJQkL+kWQeSc6RZBtJhpHkFklWkeQTSSaRZA9J3pBkDEmukMoSkvwgnO+VnCDJBpI8IMkAUrk/kvUjp9NhMcnxUdk9ktcjGT3iIZLFg/wdlbmDnB3Jx1E5OJJ9I5l6kmuDLBvJr7FwQlvl1CCbRvJoJINGcmcka0byZVSmDJ7y4K7kxUhGjOTCqCwY5L9InotkuEhui2S1qHwWyWTByX/JT5HMFMlJkWwUyUORDBTJPZGsE8k3kRwTyS6RvBLJKFG5JDJrYAHJHJHcEMkKUfkgyARROSA4t6+rXA/UKxmaOHet8jsks0NyOiSbA3kcksEhuRsqawNtk0wNydGQ7AzJy1AZGZKLgfwLybxQOReSbSH5C8iwULkVyKqQfArJpJAcCpU9gbwJlTEhuRKSWSn5Eahd5URINoR4mpy0l9wHjKDkO6hMB4yaZDdIXoNkNEgug8pikFw/zA7JWVDZCpJLKBkK0CZZCZKPIJkIKgdBsg+QXyAZByrXANaT/ALJLJCcAskmkDwCySCQ3AGVNYB8AckUkBwBlR2AvACVESC5AJIFgGgmJ//lzL867S/n/CUCwN/kVL+c55eT/HKGX07vq3P7OLEvZ/XllL4W0Nbz/0YYSU3X4q5zrr9qmutD10VNd112faSZrpROC4Vu6W7No/v1gObTHb2bFtAjeq5m6wm9u+bovfS/07L1vvpntbC+Wl+t5Rqjja9pUavSeliL2z3tm7Xu9kC7UPsH+x67XLvVrrAf0r5iz7K/q91mz7Uf0+6wa+wntW/YS+0d2p32m/YubZ69z35fm2+32hepff//tuwVWld7EPQm6EeQTzCYYFjGdSTBaIJxBBMJigmmEpQRVBBUElQRzCWoIVhEUEuwgqCOoJ5gg4JNBI0E2wmaCPYSHCBoJjhCcJzglKrz7HWu59T1opJv0zRLF77lIbBV286qK/XBChMkCHoKv/3ah6C/tJVPSaT7bA0hGE5QSDBG9FjjpT5rEkEJQanilxPMIJgleq1qgnkECwgWEywjWEmwhmAdQYO6bs64puW3EuxU1zXquZ0Z93cT7CM4SPAuwVGCE1evbBfrNEHLJ7imbXGe4JLY8pNcYZPMK/mJlRT9GCfFR30ZwGcj3L6rV4zlcaWXp4ZDkKvGm/juvKtXdy+CvtorxkxjtjHHmG8sNJYAlhurjLXGemOjscXYZuwy9hj7jUPGYeOYcdI4Y7QaF4zLxmVTM91mwMw2Y2YPs7fZz8w3B5vDzJGA0eY4/D6RSrE5laDMrDArzSpzrrHNrDEOmYvMWnMFoM6sNzeYm8xGc7vZZO41D5jN5hH6/bh5yjxrnjMvmm2Wbnks2wpbCaun1cfqbxVYQ6zhVqE1xhpvTbJKrFKr3JphzcL94Va1Nc9aYC22llkrrTXWOqsBsNnaau3sEnZb+6yDxnLrXVWOUumKPkHltNVinSf6kipJt8ng9lFxqOS689y93H3dAwCD3EM1V3IyvsZczN9STvpB+0CrrzSDHkjRwZUcxN/+J34p+M+mv+GcLLBeBT0atDx7M+jxePZzhAeAP4i/gU16+NkC6C8xBzK2JuN7FNVEh/kr78mw9R3CWyDzHNd7BfSVN9GG+eDfD1q+KT0Q9CBprcLVwA9BhnRe+YN5E+ETqkc34e5ktEq+R/0F9Os+tLycaeMIaA/uanjqRXAewLO3gRMCfSuefQTaQmjJrcAWZAZDpoxwPuh80AXmUPCngx4MDeADD8TdAty9xfwiY+t+tGQoJJkeyBlAJCN2WAxtO6FtNOjnIMn4cxSbWUawfIt7AmSmQf9W6GfLTOa/E5Us5r8dl8RfqU36QN8M+mbQA/mvUSUH8d+mI/5M8BtA3821899sIfpt0K2gW5jOiuHZ7ewP4A/iv95Ael5CLz6EJ3D7S/jr35rGfzcvGea/UJoM819MTW5xV7A/ZD3O/sD0lTeZTs53/5D9Iesc63efYpz1F9Dvsf6sM6A/Ai0ydwAPhOS3gKexh3DbrpyQNrufhXw9aHnqLNp8Afze4DuMs0agdwOA/4L+1uBuI3AW+LdAciTqagF/P3QWgCOeIJzLuDsZ8otQ435Y6TLwY6j9S5CED2exZD7ofNAF7n3gXwJ9E/QIvw9aMgn0Z0HfBT2/YezJAg2f93hwdzI434e2N9hDoOEWaLgZ9M2gB/LfMSP5X4HOBY7gqa+gzQVocylGeTV6+iHuom3u9eDcDfw28AXcjbLfZr0CejN07gItfv4a8NPgN4JuBv0BPPkdtHYhdo80m7QmF0Ue7SZrlPVV66d2D7vA/oo9yv6aPca+zR5r326Pt++wJ9jfsCfad9qT7G/aRfZddrE92S6x77an2t+yS+377On2/Xal/bBdbT9qz7G/Z8+3n7B32m/ZLf+Nmm/iI4YKAgTZCmIKemTQDLTLc/VTNMvlK3qwgmEKaNV20Y7PRSs5nwdzFSvZqUqeeWUZv1eoa6WCqow656rfa6i1x6ic1M5ordoFZNQyvuDSrvnqO4p2rP3r79muYcTHF+BJVr7/Ll+Ad7sq6FrJ45qiyKsZqV+Afpn9Brgg9QLozwJz3MlXd18Erod8NWjBMeCl4Muzm0BvgraNwL8D53egj0CG+QPxV7GMKynQmIH8d6CSN1/5E0tewazmvz9FHI7LA6+8ye0RTvIx4J7AeAoabr6yB5J49grmz5XVoE9B589AHwbdiruITVd+C84foYdiirZI48PII1y2axuVJir7XIf1ZcZxo8V0WyOMFqPFGk37kdHWNHqzqKYy311otLgnUCl2F1sjrBH8FF+tSpGlu8X0/HF+VgpxWQeXafQem35+QrsWGilthHGnUWTcZUw27jYqjWedic49zjSn3KlwHnBmOA86M53ZziNOlfNdp9r5njPXedyZ7zzh1DhPOv/kLHS+7yxynnJ+4Cxxap1lztPOM84KZ7WzxnnOWeu86DQ4LzkbnZedTc4rzmbnNafRed15w9nu7HB2Om86u5y3nCZnt5bnTEsdTB10pqcOpQ459wPPTG1JbXEeSb2Xes+pSr2Wes35XmpVapXzGPjzgOenNqc2O08AL4FMLfQ8jbvPgV4L/AJ0bgL/FeDNwK9B/zbQ26FnB/BO4DeBdwHvZv2aS1rBV60vFd0ph4b1jLX/Y9yZmpqa6tyTOpA64NyLmsuA7wN+AHgG8EPAlcCzgb8LXA38OHAN8JPAS4GXAz8DvAJ4NepaA/w8OPXALwI3AL8EvAW4EfgN4LeAmxhrtzilqe+lvkdtr0vVOdO4d9SDn6Z+Sj1gXK711HpSP5ienmpNtdI4MX4AnBnAD6qeMV0J/DA4s1QvmfOI6ivT1cCPgjNH9Zs5NcBPAteiJUtBL1M2YPoZ4BXAP0LL64BXo/1rgJ/Ds2uBn4dkPfB69OUFtP9FcBqAXwLeiFpeBn5VWY75ryn7Mf0T0FuVLZnzFnATY0037qRVLGA8mzpC0cg0bucWkG98MfVFozK1PrXemagNoDKI7vTQetCdn6d+bhQB38WY7vfR+tAokBSNwsXURRoFxuXg3Af6AeAZwA+mLqQukOWZrgR+GJxZwLPBqdJ8mo8sz3Q18KO4Owf4cXBqgJ8EXgL5WtS4FJxlkFwO+hngFcDPQWYt8PPg1AOvB+dF0A3ALwFvhJ6XgV8F3gJ+I/BPwNkK/AY4bwE3Ae/mVmkushnNSv53ztTrqdc1g36fnppOvz2Xeo6sN5QKjULqZ6mf0W95VOgJ7dNU+MnbU7drPem6PbWdrE6eQlZnXJlqSbWQfFgLk9W5/jLg+4AfAJ6hLM24UlmX8XeBq5UtGdcAPwm8VFmO8TPAK4CfB64HfhG4AfglZRXGjcoSjN8CbmJM/atUvtKbCvfrROoERSbpr+4eyyuMe43Hp0W0HO2/88eg0uEn9VHqo0+sx0+Fn/331L9ruVpuVyK4dyM/AZxzlh8La63G851HuF0XxezUv6X+DfSvUr+6XrtTT6WeSrcn9TIVmsGpN1JvcL95Trff+3Xq17j+PvX79od5leiqHyepkD9fw/ta6ms31Df+obiBuK30X6OrQCvoKNupLR3bRT4PPRyxMtu0P7W/nf4F7eZUXalTqVPpflyviZm27nTvl6lfXu/eNT882zs+yz9/Tv25/XdqS+po6ug1MslUsp3+j9R/4FpPu8tbqLDtaLw5cqTeSiG6cPTQ7qZCKwPPKsizv6TtmqDSVT/+Vv9pz/Fx3cOugq88lh3v0a7kmt/ZXynq/S29qRdpH019AP1jKmqcPk43ftJ+kpZhX7iTSsefrny6w7NaoVZ4ja4PUh9oXipdteUnqZ90xW//yZzLaV0deO33OAbeyI/JZ+Q18S/l+3/rp+NcxU9Xz12nXV3qVPMDuvOp/A2ZLu+9k3rnhupRc4N1cfzENT0neBX9uB9dC9IbwmQK9FOMuzXTmep8W3M79zn3aTa9JVRqIec7zhwtl94NntJ60LvACq2/s9Kp1wY765wfa1+i94DN2pdp99+k3ebsphX8LtI4jN85aI9UbBST9smk3SbtU4i+m+qwqY5v0VpW6pRqBr2P3KNl0TvJNKr7XqdM8zjfphbkoAU51IIKWq/pXYXuPug8qHnpjWUm7VweopblUMu+Q3i2M5v4jziPUFuraCek89uMZjmPUrv91O65WrbzmDOPND/uPE566A1Hc/gdR+vmLHAWkAZ616Fa6G2Hev4U9TNM/fwB4SW0T9KdHzo/pNbW0m7JdJY6S0nPMmcZ1fi08zS1ZLmznDQ84zxDd1eQdbqRdfgd4kdOHfWO3paod/S+RHefJ6t5YLUcstpLxKG3J9KziSzoIwu+Ru1vdBqp5T9xtlLLX3dep5Zvc7bRU284b5D8dmcXtZzeq6gWtrVOZThs7YOt/bB1ALb2w9aBTrZ2Z9g6i94Ey6kOtnWWM925n1rAFu8Gi2fB4h5Y3AuLZzkPO7OIwxbPgsWDGRbPgsU9sLgDi3th8SxY3IbFs+itciHpZ1tbsHU32LrbdWydBVt7YGsv2XoFcTra151h3yxnPe1Ms50XnBeoLxucDaSZbZ0FW3tga6/zqvMq0VucLcRnuwdh9yzY3QO7O7C7F3bPgt1t2D1L2T39paRBtBd1UWsmEA5ZXrLkQ+SVVfQuvYT6Ukt94Pfm5fzmjG8c9dFCBP1pDe+pDdGGExRqY7Tx2iStRCvVyrUZ6a9B6fdyppo+HjRy0fTPM0f7O9Dj+F8wXMifloxqHTnTkvcmudEuyZD+HGNqbS+KiQu0Jmq74XzZuU3TnHHOHdTDu527tSBxHctrUQQnf5kKf7mXRuPbznSyboXzAPnng85D5E0POw8jInyXLPSo86gWoZ4+RtHhcWe+FqcRrtG605z6f+x9D5wUxbVu9b+Z3WV2p6dnprd7VURCEBF5iIiIhCASJEgQV1wREQlRVAREQgghSAjhGuQSJECQiwQJEEKQRxB5PLIirIgEUZHL5RIuQa7yDBIfGlRC0LAz76uveobZZYFFcOPymP6dU6frf1edOnW6q+bUJLz1S0lxqT3HXiSuQJ+8hJYqgrBZK/QckPdaNZD+Rg5Iv176JH2qPlOfo8/XF+vL9JX6Gn2dvlHfom/Td+p79H36Af1D/bD+GZQ2ecKmY3hGQ6OJ0dxoZbQ1OhidjW5GT6M3xsgAY5AxxBiRDR9tjDMmGpONacYsY66xwFhiLDdWGeVGhbHJeN3Ybuwy9hrvGu8bh4wjxjFTN/PMIjNhlpiNzKZmC7O12c7saCw3u5jdzV5mmdnPHGg+aA4zR5pjzPHm4+YUc7rxrjnbnGcuQv1wmUvNFfoyc7W51tyAmJvNreYOc7f5NkL2mwfNj0/mZss5aqYs0yqwbMu1LrYaW82sllYbo5XV3upkdbV6yHytUquP1d+6T59qDbaGW6Ossfo2a4I1yZpqzbTmWPOtxdaybPtVb8dq7ZlxrZXWGmO0tS7TvtZGa4s+wdqWaUdrp7XH2mcdsD5E7Q5bn2XDM+0buCERCoUiISfb3tXaPeSFGoaaGA0zbqbc6u0u2yXUPNQq1DbUIdQ51C3b7idp71DPUO9Q39CAbLsHbsY/6w4KDUHOIzL9YuwNyZqXZ0elGmVPEdscWb8gzf/Kaxyn4k1i/q9XW0pMe2Dil8SN6XMZ6aeJpZ6hpf+N+fN/29p0+j9Bf/6HWDtCPJz+fyHm//jFr4kvZUzaV0irGvJ/8II2D9L/Rdyf+StrChMY+g/i8fR5i/hO+mwjvoP4r8T3Mwf+Yz71bca8nf78r7DgP+aprQT/Oxeq/kn6K6tmtFigTSKmvQfB/9Br6v/WI+hDuwuCz5imXYQULUBUPiPxMf67WvDf1YJ2C9J/Ih7A/A3m8xhD2Vbih/RhWs2nTzHpn5KuZNpDLOVT+r9IfB1DVxBfS8z/Sac7MyZ9KmnxQnuUofyfd5o9EthvYztru+hPiwvKhpy2jvFp6UHZIdD4T2KarZBfjCXNfxiLfyGmPQmd/z7X9hHfTf+3KdWVXTrmqf0vYlqM0NW/k/mfbO1HxKpu32FaZdFB9eCNpFcyvrIH0JD+/Oe3wfoY5CKNfBJYyFDcS77VGhGz1zRyiNhLzLI0ZQ1iFH34j3OtkDTbP81n1G6hzyvEzC1Nftbeoc8O4ruIySc8B1lL03JG6ruM+S36/4G4OzEtiKQbMJQ5a7RoIshR4mt8ipvp/xIx7UOI9fQnn2gz6PNzYqmfk7dES4BDOfBdOZ/aTewr7Jb2tXZb+zq7nX293d7+mn27fXeV+bVnML8WBHm0Qqh8r5C5jDxlLngO5HJzlXTtziCd1Em6n1XqblkdZ5QYS58edaIlyFougUaUe6b1psDqo3Sl3cdN4LRNVU+4lmE823lTcB3SSphKxa9ACPIDz5ZjpFRoLcQmrbWyCSle19ohpry2a93FLq2X1iuwLCnzLsvmXaT1IySQ167MjCCeJVaj+7fELxDTQoz4gJicJjgXpH+Sw42/IR5LTCsIgexV/K/GzlDi+cRK2lNSicuZm5LA9xK/TO5Vcpv8L54npkxLK1rNKeuzXC371+OzfC/oY4kHVOGctkG4Dh27iQ1JCF65Hb12t32PaGRPsadAJz0xbWu48ttZu8+Vug20VY9X+8+VvjnitwpG2qhgTPYIxmQBx2SDGlIlELMEkkilyg2XeFHOk7XDk3XM5l67muXmceqSFp6Dkhae0MO55cwJQruxl3ryzeJ0JdS2FbsHfdcrGM3nJlf5xbuEV2nAkecmX8Wn7c6qNxW3tgd0OutcZD5nk0vboJ06ADqfg3xkTmeTTzsR4prFxWjhi/G2+/lzOpueWnhOemrhOempheeop6rn83l7auE566mFNcwbtc1hTo3zxpmmrj5vnGn6+Yg/Lpg3vg86Fug7UtPRqOlY1HTyqek0oKZTRE0nSk0nQU0nSU3Ho6ZTQk3nIn7rapjVdxZS33lWXGP/T2g916O8qN3UvtxuZje3r7T/h3213ca+we5of93ubPez75HnlbOuRqBtGHhvm4tWqut6nro1z+QZKtBTE3DNC2an+vkUPcmtvQNu/X4tUtd2XhpCTm6Dd56ybPucTa1rW+6wQJq0xbtCnzotuS2lRodat+SJo7c3e6O16HtO6n1i/mWBdGkj+n1BJbTjE3QMpO+ZtULV2bIs4B/5Xfnc1rVqOX2y/CJPBPgiSzr7tllYR22zsM7aZmHOjDAXc0L9nxHmAerzjLABfS5Pr5gPKKnHzyHnnzboiX/O/NMWUNfzz/BA/20HGHWO5pDali1nrtYYvV/szCX784uauY7LuhJIuy+uDJX/feeIN6rL0weCkvqSFyQnDBCDznmvVC2rnwhzh017gFwDPtc9VLW0smBc141ekOmtL7KkvjnjdgD/X/LFlfVFt97COmu9hXXYerIs9RWSK1+B9paJc4eQKw0dMQqWaCHQxfZXc/JvgRJaoYzW9jUspwNLuhFl3ZGVsZnZtb/dX5aJUnXOtAZn2jBn2gacaQs509qcaWOcaV3OtMWcaUs4017MmfYSzrGNuDbRnGsT18oVRHneWA0QClwzcA2AnhOem846SR63maPMseYEwCRQU82Z5hxzPmAxqGXmSnONuQ6wEdQWc5u509wD2AfqgPmhedj8zDxsCStkRSzH8qyGgCagmlutrLZWB0BnUN2snsC9AX0BA6xB1hBrBGA0Yo6Dz0RrMmAaY86y5loLAEtALa+WzrFWWeWACpawyXrd2g7YBWqv9a71vnXIOmIesI6FdKtVKC9UBEjIPEMloUahpoAWoFpXzTPUzhod6gjoEuoe6hUqC/ULDQQ8CGpYaGRoTGh8aIw1AtTjoSmh6aHZgHmhRdb7oaWhFaHVgLWhDaHNoa2hHaHdgLdB7Q8dDH0cOgpIhQ6GTZTSJFwAsPl8Tti1ygF8hvDF4cbhZoCWoNqE21sTw50AXcPtwz2sVuHScJ9wqTmH6Wp9V7XW4f7h+8KDAcNBjULpY8MTAJNUH4WnhmcCVC6bwvPDiwHLVHuGV4bXWEfC61R7hjeGtwC2yZjhneE94X2AAzKX0KLwh+HDgM9krc2VeSIvBIicyC95Tp6X1zDPM/flNclrXpV7gjOi2qrToaryUnAqVF+rSd4gWWueCzUkb7SsS3AS1ER5DpS1K2+uNSBvAWAJQJ7/NCuvnGc8vW6N4+lOewE8ywnc1TbvCOCY5LOq6arxWbW7fD28TJ7udCIPBuc9JeRJT+DWKhypznji2U7yFKcqd6GSPJFfBugn+fOUHDmFJz4NzB+meNBclj8SMEbyYHCa0+OhtfnT82efyIP58wCLaubB/KXhxqHV5EF5J89wWivv8jdI/szfHG6ZvzV/B8N2yzOaMmH5S/MPhlYzrD1PafoYPAIukOc0hTsBuhYUgJPfLbALXOtIwcWyJUSVFUydK/gm96UYan+CWsfkjovgnAq170Xt4vg0eO+U/sou+3jS3BehbWUo10M1rqQbDzGUJypovxfZtcjgfDyeraF9k/4sV/6HUQSrqBpPezBYt2DvhFoz5eqqfiVDuU9Gn8VQ7u4QD5Cmj9p1EKyNch+LxjMidO5jUafqaVfQpxfbIZ+0Wm/l6q06kcPknhb9Ocb/d2Jawde5R0LtC1LrvGrnicGzBNV+Bq1c4hTrpvbpGdyro3OXS5onq4hf0Yf7iMwS0qvpr9q/E/2VbX76aDyNRHyPPqpctaeIK8sad6eo9WWdbWteTZqrxmr/iVp31rk3xuC+Go0nkKidIdrf6c8dEbraSbiNWK01f8RQ7vzR2dpq5VrtJlLr15raN8Ie1P43MXf+qHVtdWqHwdKDvUncw2N8Qp8n6ZOzAq6z3UzuDDHU7o4VDGVPmdylo3MXSrArRp1go/aHcN1c38KYbHODO7I0deKBOs2A+0nUmTY6+91ivxs8y0Xn/h+THG5wN4s6XcRk2+p/JubZAuoUEYP7doTaeUVty+Sqvc7W03lyizqPxVS7fbirx1BPylGTJj9gBG2Hv+L530panVGZVvtY2jJU7czhnh+MIPio/VRq95e2iXHUHoMhktbJCcHpDQvor/bGXClDTe7j0rm3DaNM5sYRraXow11hascURpk8iaJ3EFOe1/FcQH8IrPZfPcLcuMMt2OvF3QhqP5upRgFlgtpHpFFupNUoe4Y1V3ul1M63pdIn/bw4BB9KAHUSjq54j7teEfohuRTY/ApD1Q4fwfjkFp07oAzFIWqvhRFwtSxxb8DPsrU5mgzuQVJnB5lMFaLc0zk6zOkBl8rW+FNAyzpwz1XoesbkDj2TUiI4W4k77sxejM99WZA/srU5CtTuOIPyjSdyGNB1J3B1SklHAbdu9uQY0Mk72DeK3C9Eo0RmR9QP6qgWuqxFUPpMlDk6WKmrm/JP/U6UW7dZcMfgcr+UtZN9VhLULBMi+7Wshv1iP6hVvrmpM+u37T9nei+Hq+Bf2Kpa7dty50yiSozaP7tcQ5Bvu+7nTF+9dleftnZXn2Xtapte7qiVO361oPQxdbp6fbwfe7AucrS6qIH8pqVqk4lTmy+iZ5s+s8syIyV/WEfySbOv4f9lx3AEaGJJnZavizD4JNMyV9il4Jbm9h32HaKF3Rc8cxXb6mpyTutsbU3oh2O5qhlorl/y+sq+HY27xfWgrooTxtQzThhbjzhh3D9plGdmLNXDy+tFD2fqnOnnFfWinzO1zoz7cXXd29RAqsqeuq/D1TkyZXwwu4wJajG2jvm+B3loBSVF7qxRN/X4vDwka22JldDOxuGS+u+yelPvkFgFrXA8r4vhu7ze1FzXQuTVd8mvss6P1VGdv3w7Nw0tTyviiNkvNM6y//+2htTmS8FBkkOayDbR5H/Z95+nrXJuduUYYn+2rc5X/jk3LWWKA+KA1lRKec0M3oovtNXJuOp4S+lotwttdSq+el+8rzWTczDmNR134y+01inmu6ZaiwucdUazoSlHY7bVLkiu2rSZpUal1jIYl9qFUVkrTsttswuyrLa8dlAclJaS5XdpLQ+5HxQTLrTb6bV8vMF61Fp1US7m1WGLnZs92oZYLdbyq8E4xN8o5tejJ1B9cHxtZDufQ+6pHid24anqknu/6L308pkyz6efd09n8gvQDn4DmosUu8W68+r5jJynk/T59nzqH687uaY5D/cTxB5RcV49oYH+253Tg/vOmx6sKkVNcuru7Eg8X5/TCjh2T8Czunj3vOHY6j2a+5xybJ6vT6r+n7hL7BWNhNylZuBuv9hwXj6rHtgXkHrnIrH0S6W11fQfo/pU34WU9/PF4qxeLC12fRlrnMsTmZaunzVfSB5Zm6PBbxCb683IrYnj5TOszWrs9f1plIa+LqsXbBRb6vXzGDlPI+n6/jxKA6/ImeWlXcH6/ETnjzRYeF5Jg4XnmTRYeJ5Jg4XnnTRQPbQOvXK8h17nv0nq1/PUpK2Z5LyN2ZF04bm+7M81gdZ3j4+srWLHefFkOq2cyH96GHD7BLZOHjsHJeZqXRdGcX16LiuYRzZlv5KdL9x+Po/jucEuak0sqMMnOlO7RwbafVHwTUjuWf4y1vR4+85hy5azvrNBja1H31Crt/vY7HNo9fYpTO52z7xRafXoK2/13sh9LxxXb5+j+huhfIeqn09ioD825PRI/XsTrCq1THLYhuxIqe/PYwWcltG2tHr4Zlu9h6pqj+Pr/ROdqDdK/ao+P5O05NYC+U7j+CniSTNXnXDWTKfgpJw6OXNO2goCaIF7KsiN00vrpvXUemt9tQHaIG2INkIbrY3TJmqTtWnaLG2utkBboi3XVmnlvK/QNmmva9u1Xdpe7V3tfe2QdkQ7put6nl6kJ/QSvZHeVG+ht9bb6R31Lnp3vZdepvfTB+oP6sO0vfpIfYw+Xn9cn1IFGunT9dn6PH2RvlRfoa/W1+obEHezvlXfoe/W39b36wf1j/WjrF+mjpl6AvSUYWoTjQLDNlxZR+Nio7HRzGiJ+zasL8Bob3RivYO6G12NHhKQtlTPM/qw7o8b/Y37jMGsO+ttDJf1NkYZY2XdJUiaMMGYJJ/FmGrMFIF9KWVZylDWcXgSmqEsMH1Mmqc2aco61FeIBxCr+LTEY/AULGXtSVMWpHoQpxmnF+PwX8D6V0n/hKG0cGPwjCllFUmn/RtN5a9OyqKlJYOWqPROpP9V4jRzU+ewaa0YSitEOnNTFnq090izRO1V0v+HcXiil6HOleK5Z7o63YsWbpRtGP1WxqG9JZ3/ZDfiEpu0EKOsZBnK/o2yE8NaGeqMrxWMOZE+fAozRn9aRTJpn0ZZ9zHeJla2o2iXyKRVJGM7aZ6LpR8iTYtN+jUMpS2cwBYRLUsp213KepamzqObwTi0cqTTbpbxM/rTTpJ2E33uIU0bQsqWksH21GnxyFBno9GKkkH7SQYtSCmbTybtgem0iGPQco+ynqVLy0PKVoacp5UljnHi+LlVOiWLitEoG+NHwJbdzf6m3d2+xb63WryG2XjjgU27i/0Nu6vdMxtLnZ4pzxTqI2o+3SsTU566JG0Ctc8Bed+pGrSnqwdWFwSfTJ09xhPgUsp6WgQlmogn7ewUZiVpTXK0phM9C4X8T7oEI/h/uoJVdHXS5XyzMfjfdQkV4NdpYhZm1wVwl8BdfhJ3VeCWn8atCNxNJ3GzJyuq8+7S7OW0spulzkXkaE3RGlOKdp4EOSdFu3QGx5cgD+saMfnTtIIW9PCk3Wi/15QcAh7oDtqt8QS0m4KevznLKT0xI97Ls6SHELQAXCEtpQ4RIwgDxGjw4EQxmW03ka0nTy+T/vIEs9pABdKtOt4aKUqPSlq/S1FaVlLiVbakD0/Aq6TFgRTtaVVy7KQoTyppI62SdvLUKXmVg0jTllslrYKlnuc4krZ+lL0YZTPmx+LUp8NlrLucaaqlnyvVs+zBZsBdOAZOFfvkYXJEybYrDUDSskX7B/fSRt7gwH+4kCfGRHgiby9geSpvLzEQuHvu2byKP4NzNdUZbhNIcxZIqzPWKCFTPEExRdtsqebEtLJWSbmdogxPDRcisC3Qjq0kWM6E0zyxDmnQie10E9/GJojZVawCTKijb0SqHieTixr0yrN5tptrSP2TWqfudlapv3lWqbufVepbzir1vTWknljr1F3OKvU3zip117NK3ZOpL6YVgkRO6trwqAi0AKUJ/Iukqr3/VLVAffwtKMJx0E8sPoM0tYvnZGXScXdsQEuJIy2xTg3uhwf0zICeA5gPkNrlMuQk5ddISIfx4nExRUyHtJgHajZ3Ga7gv1s2ZOWbsmWjrJyMJ1Zn6tJGaZpn2wbzNa2EBme00ialmrlS1N9S1CdT1EgrqXunaDGxkqkqO9CHOn/qKuJexMq/4XEJWUlJW/mBUHOWnD/kOWfdWN/HxZnbp1AnnD7K3FzOLzrc7uckP6nRSS6Wul2Pc5JjCZ/VDM5463nWeUqOTTDfJhwbd9ryLAUNM4U0j1lE0DgyFDf8jr2bF+iMIeM2406jjzHUeNQYQ3/Nuhyu4f/OX+E/F4yk43byfirz5riMxZ6MTRPCud95WOjOUGe0yI8n451FMt4l3lvcFC+Ll4neiVcSO8QdiZ2JP4v7k72SpeJ7yd7Ju8To5APJB8S45EPJh8WPkj9O/lZM8Mq918Sz/vP+8+JFf7P/qljn7/Z384T7ZkLqfy1pjc8Q1X7pdrjmpucG9VIgzw0OJQoTLYWWvD55vdDddDHq7+3x9gjNv8u/C3iYLzUA3ZAnUQpjipkQ+TxT+gv9pQenB6d2BVdHXP1w7cD1dnB9iku6Gb8FuBCvcnfl7vQSXJPTk+m/GpeMMzw1PD0yPTI373TrdOts3rKck+SdqRPzvhvXzembs2XuUFd6ADX24/VvmW5ZUw/k3ufWOxVJRaqEod50K1IV2XrPzblsXE1wZe4XB5ekg55Oh9Ih5o2rSj3gnwknRwRtkp4fXHZwzc+5nsQl3Um4pFuSLpFtKuvPe7S3dFlfmZesQ257H8El21zWSaarRV+yz2rqS9neNeWNMmudN3CNeR9IHaiS98bUxrRIi1QbXN1w4T61KLhexCXdabikm+HBJZVL0o/gGpgemBqLS+Y9G5d8HsknuiiIXwMJICgBbEqAyygBGlMCtMZInyY6J6cnF4hSbwPG+3c40odypD8ipTbSY/aNXxu/VoTibeM3gO4Q/xrojvGvg+4U7wT6xviNoDujpDBK6gL8DZSnszyd5Vksz2J5BsqbDjwDpVooFfOi97K3SeR5f0ANTNRgswj5r6IeOushZdsUSMXb8D4KyQg81BgqtFi/WD/gh2KDgYfGpM8jseHAj8XGAY+PjQeWElGDRLxfWM4gZzDk4hBniDAhHYeB/oHzMxF2nnRmAM9yZgHPdmYDz3fmA7/h7BWFzn87h0QDyNFiPNVF8YuAL4k3ApbtasfvjA8B/ZP4VOCn4wuAn42vFEXx5+PloF+L7xWR+Cfxv0MSH40fE5FEOBERYcrBaOLORB/Qdye+LfITAxMPgv5+YhzwTxNPwmdaYhro6YmZwE8lUKvEs4lloiCxPLECeGViJfALifXAsn1jifcSKCXxaeJTxKxMVAKnE2kRTl6ZvFLkU+Ymkh2SHeDTMdkRuFOyE3DnJPos2SWJPkt2TXYF7p7sDvyt5LeAb0veJvRkafIO0H2T/YXDWSKUfBizhJ4cmhyKnIclhyH00eRI4IWYN/KSS5PPCju5LLlGRJK/T64T0eT65Mvw35h8FfSW5H+KZHJn8ojIc29wvy7CbmcXdXC7uKiD28PtAXyreyvwbe7twGXuncB3uXcB3+PeA3yvey/wXHctcpCzSLT48uL2Ill8a/FA4O8XTwR+uniuMIqfKf6dyCt+p/gd0aD4o+JPwGHl3ovCAbe9DPyK9wrwZm8z8BZvC/A2b5to4G33toPe4e0A3untBN7l7QKWc1Xce8t7S7jeu967It/b7+2H/1+8vwB/4H0gHN/2HRHze/o9Rdjv5fcCLvVLgXv7vUXEL/PLRL7fx0e/c86L+g/4D4B+yH8IoQ/7DyN0qD8UPnIujPpr/XWgX/JfApajwva3+K8h5lZ/K2K+6b8Jeru/HfR/+P+BODv9naD/5P8J/nv8vSLPf88/AP+/+h+JvBK/pAQ6g655cn7VemhrRYhf1M5svizHtQIX5DLvVwTXLlwZeYb7muJCb+sKXam1jEv6PlzSlXHLcEHmS7mYjSv9gzyrxN2Kq0e6B+cESct5QJbRUDTM1mEX9WgVF7KQc1Am3bHUsdy8ZT0hY/KoOQlqTmGM+NYiznFzNfSk2yArJe+3oYZ0LTm9HdI4lC0GZMsgyJMHnAchbR6inHkYeWmBnHnEeQRxhjvDQT/qjID/d52RoL/njAL9fZSnszyT5VksT2N5OsvTWJ608lLy+eQga5lHiaZTQhmUQRbLC3OEmywvnyPK4ogq4Igq4Igq4MgxOQZC5F3Lv9+/XxSQUy1/jD8GGq2uvw3e0vUjRk/wVuJMeevc/mRvA7+VfiuLN6Y3ZjF0GDXzKn0HGhBm5SA0qjhY6VYBVql+kP5BDk+KqvRZlxuMHJVDkFtuWowPeDXDJTL6VK3LZT2VZnjSck/9vPKb3Zk/b23KVTkcTB/M+j+VfqpauSc8bw09fobtrFpSdBAdsjmo+qh2ZrlBHEXjbQdjBW/jGA0vQbrKdyMbvkXwLcVYvT15O8ZUb4wmLVmWvBNjqg9iG4hdDh3nBe8FoXtrvbWgX8Ro0r113jqErvfWY2RVeBWgX0K+JvOVo/25sxjtDrWbAmeqM1U0gI4zDfLm587PQU93poOeAa3HdGY6M+HzC+g+uvOU8xRoqQHpzr85c0A/7TwNeq4zF/QvnV+CnufMQ6pnnGfgI7Uk0/mV8yvQC5wFoKV8CVFjkvLzKyKP+lEB9aMC6kcFlD751I8KKIMi1IMKqPsUQOuZLszEjMQM6I0zofuYiV8kfiEaJGYlZoF+KvEU/GdDGzITzyWeg7/UfYoSRxNHQX+a+Az+/0gcQ5zKREo0SIqkANaSGnpCTxqgzaQFOpTEzJcMJ/NAX5NsE8hdm/pRAfWjAupHBdSPCqgfFVA/KqB+VED9qCDZHzpRlHIzTg2oIDk2ORY5Kz3o70nUKvlp8lNwxmfJY6Ark5WgU0lZt3Qyjbdg4Qphupqriwau4aJubshF3dywGwad5+aBznfzQRe4DRA/4hbCp8gtgk/UtUHHXAd03I2DTrjFoK9324O+we0gDPdr7tdAd3Q7gv46tC3L7eR2gs+N0LkM9yb3JtBS8zLcb7hdQd/s3gy6m9sN9Dfdb4Lu7nZHqlvcW+AjtTPL/Zb7LdA93dtAl7qliHM7NDXL7e32hv8d7h2gy9wy+N8J3c1y+7h94H+X2xf03W4/+N/j9ofPAHcA8Lfdb8N/oPsd0Pe50NPdQe4g0A+4g0Gvd9cj/svuy8CvuK8Ab3I3wf9V9zXgN9w3gN903wTe5v47Qne4eNdw/+juAt7tvgUs57NCzmcxzmcxzmcx6oBR6oBR6oBR6oBR6oBh6oBR6oBR6oBR6oBRzn8R6oAx6oBR6oBR6oBR6oBRan8F1P4KqP0VcL6MUNdT82WEml2Bv96vwGiX+l0DanCm/0f/j3jr+W//bdDv+O+A/rO/H/Pre/57iHMA2pzl/8X/izD8j/1PQB/2D3N1QvCrbluhVoHkl0tNRKQ+Aj0EGofUNKRWAW1isNQnIIHGEb8hv85o8iQAW3gUgRpGeVPnOriPQY4MYh4PQZaMcX4IWQI5glG+1XkTo/xt5x2Mcr4hYpz3iQ+MfwcjfWL8ifhkjPW58Wfi8zHal2Gsr8Kb0H/iPego3n8uwhvPQIz2H+I9ZxreaX4n32IwjjclDiQOJj7AKMbYxXgshTSFJMXoehhja2fy/yb/Du5vL/ka7wd3SR7CO8Bz7ovudvTx5ejbp6Hv/6a4onhz8TuQtS+jb99Ab25HL+5E7+1G373lvY1e2+99gD7qhb7pDY28j9/P7+8PQO88BA18qP+o/13/e/I7HOu0M/FHvKfOZCuVsI15OhTgiQstFbRUXrxJ/KvVWksXrtYEuKFoWqW9Es5dF9rtFO1miKnC0+SOz5librbldBF3Qk4B3k0iTlRYTsxxRD7aMomZt9gpEYXOJc5lIuZ8xWkiXLRtU+E5VzlXC9+5xrlWNHSuc9qJy5wbnA7iK05H5+viq87NTjdxuXOL00Nc4fR0bhVXOqXOQHGVf9Q/Jjr6qRJL3CTlg5O40Fun5HJPaw7cRLQQWnCSyhPZdtMc/0LrnaL1qkvUyRdaK2itouyzfSPeFfX5cXKCtwG5bkS+m2qUrpMvSNczbMOaJO3kC5K2HvRcTVJ38gWp+zlaUq3M22IENX/1BXQQeP/BYKVkOEbACAfvtc4oZ7Qo5HdJG08zRDio6Tzu/gufdoVpgejMtSV5znqz5FXJlsmrk62LZxTPLP5F8Szvr95H3ife37y/e596//AqvZSv+bpv+WE/zy/wG/iFftS3/Zjv+HE/6Rf7nn+Rf7F/qX+Z39hv4n81ePdx+GVYcsK/fq7n+CJqpnO3qakN1j4WIfkpova/SqPyaGpManhlz8ouqQPpg+mR6YOVPVNj0i3T16QHpxanm6XL0+3S406WPrX3xJiVXSqXpBql3JReuRY5jUuXpMchd65igpbfyHucMuYOrrVmYg5mzCGV21L9UqWpQajvaq4Iz60ckpotv7CnO3NNYBJiy70AV5EXi+NevCR+SfzS+GVSI4g3jV8evyLeIt4y3io7WsqSd8rvZsmFyV8nf1P8UfHHxZ8UHy7+W/GR4mPFlcWp4rRXjrGx1nvRW+et9yq8l7hOKVfoNOQOnkQJ0CxQyiXwuTR+KfBl8cvg0yTeFPTl8ctBXxG/ArhFHDIEpbcEbhVvxdWuzDc8g9/wLPUND7VZiNBfJ38N/Jvkb4SOmh0RGuqU5he+l/jF7iLJRUKTfISwGcWzRAR89Fe8aX/kfSTC4Ce5CvU372+iAHz1d5EP3vpU6OCvfyBOpVcpLC/lpURI8prQwG0W3vvBccIEzxXgvb+B30AUgPcKRRz8FxWS++KiEByYhE+xXyxscKInYpIb4XOpf6lISJ4UUXBlE1HEcd+amlfvYMzIHVOFlJRSTg7GiBnqDEveJuUWV9J0YZ04yjGyp4vGHNlyf1YiM25qMWIz5XcLyv/Zacs3KFMEZYrNleNGZ1im+kJSkv1CMjW7PyU/mCEGOw8HJT8gNVb0W5VxXyWPJszjyeN7XDAffCch04W9Q95n3jEv7Ru+6YeyO6paShnDVNNk7rIcufIDTn4RXPxS9puM7v0VfWsE+3saBy30c/lFAi0kUz3CFSNNmEHNPGozrYMzQTNycLr895GneaC9B7zHkPuPvBnCK0mUFIurWM407+fM5XgNcnNUmrnGr98qv9OnObEWM05bi8e8H51BLWacNo2uHZI7yvWQvlhEMbfV4peezuvVgHpDYvpvDMJXZFc0s27N+ZyAJ9UQPiCHRv3Sq+SaJK7pkNRw4fNThpVXX2mB3yMnrz/XNiQVrIJwDXRjpiS422oovx1TDeC1MbtO80wQZ9fxmMfbQ4bJNJn0ak0lCLtN0WinjWo153grMvwJwFLW7Ils61Zfx7KJb5Cx1DptTtgKrhNlnm9jep+UDbE1sQohYhtiW0S+f43fXq5yixL4rhFa7Pex3ws9Vh4rR7wXYi8IM7Y2tlZYsRdjL4pQbF1snQjH1sfWi7xYBXLJRy4bkOrl2MtItTG2Ealeib2CVJtim0RB7A+xP4gGsc2xzSISezX2KlJtCUq9Ruh+G78NJPS1/rWQ1m39tpDK1/nXQX6389uJsH+9f70o8tujfnIn4CWfs34vxV5CPU5VywasZYS1LMytZey12GuYO2quaxHrGsmpa1TV1b/Bv4G7FSOQYYZoYwyT8wHekjpBw7rZuU/c4OleB3GX19G7W8z0j5bExcpgv+NWIYzOAUDWGz3pakbv4P446Ebf09K5fjX5V40/IEvL8k4E6IfGkJy0I6qlH11jXWpTz9PFO1ndhQGNypiYcz85x51WDWReswBzg3bt+SVt49y01dt4QT1q45raofNJylhyEv/TpVuepbVgJ7mc8z4jnkVMe32fVpD+HfF99OmX1eNaq5jarULuJwed/kjGBJ5FTUT6vEX8XpCnOl9jD/E6oekPWAmJUxGJ00048rtizD9o4G0K2lLm+0hTSIGrIAUaUQq0gRQIiVIvz2ss7vSugEQYQYnwOCXCIikzYsNiwyCnH409Kteo5S5guYlb/6O/1v8vfZeADC/aE8A+wIHArQpa0YenpXP9avKvGv9wDv3Z8ThyM35uvGioxjJrU5/TxTtZHUUUb5BRJ+feO+5GG1YFmVcUvRVtHrRdpv3+Ge2Y+wzV27FVPWrHmp53z0nKaFuz/2nTdcjQ+pFIp0jXSI9IaaRPpH/kvsjgyPDIKMDgyFjABN5PikyFOxMwBzA/sjiyDLAysgawOLIOsJH3WxBvcWQbYCdgT2Rf5EDkw8hhwB7AZ5EPC4WkC0ORA4WRQoe0V9hQuYAmiLsPbnOENy9sVdgWdIfCzgzvUNgtsq+wZ2Hvwr6FAwoHAXoChgBGkB4N/3GFE0lPLpxGdxZgLuL2hrsA4QsKlxQuB72qsJzhFYWbEPZ64fbCXbjfC3gd8C7gfdKH4H+k8Jiki/SiPLpFgATibodbUrirqKSoUVFT0C2KWjO8XVHHwu1FXYq6F/UqKivqB+gCGAh4kPQw+I8sGiPpwuZF4+n3OGAK4naHOx3h04tmF80DvahoKcMXFa1A2OqitYQNgM2ArcG9hB059Iai3UVv59xL2B+40v9g0ceAo0WpoqNRE1AA+mDUBrjRi0k3BjQrSkUbR1vyvg2gPaBTtCvve8D/42hptE+0FOn7A+4DDAaURocDRkXHkp4AaB/tD3cS76cCZgLmROfzfnF0EvJYFl1JWANYB9gY3EvYkkOviW6L7sy5l7AncKX/vuiB6IeAw4B90c+i+2wRPWwLOyTv7YjtRA/YHqAhoImMZzeHfytAW7uD3dnuBugJ6GD3BvQF3dcewPtB9hC4IwCjAeMAE+3J8J8GmGXPtRfYSwDLAasAc+1yQAVgE93X4bcdsCsbvsDeC3gX8D7vD9lH4B6L6bE8QBEgEdNxXwJoBGgq3VgL+LcGtMuG67GOgC6A7rzvFSsD3S82sNbwIObHkYAxsfGgHwctYXxsCvymA2YD5gEWAZbGVsRWA9YifCnirSaMx3vBCuj9K2JbATsAuwFvx/bXGvrFDtYIH8eOxlKAjx3TKZC0Y4N2pb9zceDfWNKB/0nycZo5LZ02gPaB28np6vQAlAZuJ6cP3D6478P76vH7O/c5gwHDA3cUYCxgAkCGTUK6qYCZdOc48+EuBiwDTHJWOmucdc5GwBa625ydcPcA9gHWOAecD53DzmfO4bgI3BAgAnBwj7C4F29YK2gSbx5vRWgLum28A+nO8W50ewJ6w6+tLDveV0J8gLMnPiA+iPSQ+Ai6owHj4oPgPzE+uVYwLT4rPhewALAEMC2+PL4qqEs5oAKwCvXZFJT7OmA7YBPK2BXfG38X8D7gEGBX/Ej8WEJP5AGKEjrohKThliQaJZoCWgRuLrSuwa8doCPpLvHmie6AXoAuibJEP7oDA7eM4VXjPMj7YQGMlG5iDGB84nHQU5w+ie6AXoApiemJfnRnB+50hleNM4/3wwIYKd3EIsDSxOOgVyT+H3XfAl7FVa695h7J3js7+5LMppRyEFNKU0REmiKlHMQYIydimqZIaZpipByKMSKlKU0ppSkiRYw0RkSKGC5GjCkipZGDFGkPPyKlyI/9ESPSSDEiBUpprJjsnPd7Z5KGSEv/x8t5fPK833rnW9+6X2bNWrMn22I7gN3A5the8s2xA7HDsaPAcd/tjZOX0Z0GzpO/GUvGzXi/eDjejzwjPqAPBvfwofHh8VHAGGA8MDSeS51gElAITAFKeF1GnWBWvKIP5vXwqvii+BJA3OVAbXxVfC1QG98Yb4S7Jd4c3wlsiT8f3wf3YPyleAsgbivQFj8DXIhfjJ/JUMIz7IwA3UiGC93A+Bncx0uBIrqzyRfwvo/7e8aQYGnGsGBpaBBxSFy5p8Nt530c9+uMEbAZDYzNmADkZRTALSKfmlFKd0bGbLhzgMqMBRnVwNKMmow6uKsjOzPqIzuDBRkNGU3gWzO2E7sy9mTsh3so40jGsYwTdE/BPZfRntHhAzxTB1IyjmSGgFhGTWZ/xAvbzEGZWZnZwEggx+eCccBEIN/nk33/YmAaMN23m5lZnjk3c37mQmAxsMznghXASmCNz9cDm4DNwDZgh2+3O3Nv5oHMw5lHM49nnvRxGjhAnM980+eiT7om0M8NZx53M0TvDnAHw+Zk5vlggTsUa6tSrLOasO5qwhqsieu1gmCTO9xz6SfrNrSbOwr6MXLtjke4Jq7T9ru5WEuVhkZifXUEOCbrLK6xstxJnks/WaehXd1C6KfItVsSGgc/tLNb5s5yK9x5bhWwCFgClBHL3VqfV9GdRawCX8vrjQi33G10l0t53S3QNbs73eeBfe5B9yW3xW0FF7Qh72eAC0jvYigrodwWwk4EEpGEmxgYaE0MxPoWa+HEkGARsDQxLDEiMTp4KDE6pCfGgk8I5ScmBIcl8kLFiYJwfaIoXeecLnP5VH8uljkWczznb8yZMj6k/0v/lv6bmJp5PlEabErMQB5mu8sv/xzf+wn+7/Psrt7Q5T/yvcETtxv1EyK7cpSm5dtfgSxRN0NT6fQDj5K3WN+G7Eo+INyW84xNdpv4Jn9LzU8o/5NyFuUzDDuS8QxhDC/Qvpq+T0sMjk7NKWoqKPHErx83b1Ga8Vjys+R4WjQKur4l3HqA8iuUpbSJ0DeNmnJqQuSfIqem801qLGrug/xCciI1BqWcGrSY8vXolmQu87leZNdXmJ8gNcyh1Ukbm77p9NWpSaHvK+QBSmmpls526p+mpphyOjV3kT9Mvlmk0UwNa888Tv03KOdSfom+CaZ7NTXLqLmK/PPk11B6lu9hPK+Rs72Sj1HzB/IVDDVGym68zjq5lfX8MmvyMdYJa96aQHkb67BdfJOd1EylvJn6DsYwjfwk4zlPzWdYzznU/IL2qCXdNL8M+eHOQuFsTVPqTTftkZSp6A/nfN+ZlOhjepYpua1NnhUp7aJnWXmUSyj30beL8g5q1pHfSXk3NTeSf4KySmTnceqfoaaGqeQy/n7UF1N+nfII9f1pOY+aH5JXkn+UfAblNxjzX6j/b2q+z1L/iKX+Iku0mPI8y3sLpYtSX/B976N8A5pR5n7I+q5Nwq3XRdroP9qvkqcpP0l9q9gkP0rfr1M+TvkIZIXUnlbf+WfafEpCdSJmPc36MLic+Wj6Dfb1orG/TU1EpLSdfoPVIfrkF2nzFOUGym9RDmWoH9GGXPoz5Hsh7zQx1rTm5FdZD7dS7qYsF33nWfrOk9mm02tB6WkR9oSI9RPKX1I+K7723bRny9rSi26R37pAcz1bbSnlnyk3MP799I0y/knUS09LkZGuR2Q+QYoB8nbylbT/EDlbxPgB5JzkKGlBEyNO/zl7Xa1VRI2U5efJ+ZTXUJ9NOZHyIOUgWm4UafxfxvAg9R+inv3TClK+j5I9ytLo+yXmYSrzEKNEKEM3PwZZ0TWDXGbFiuRPhEuNgf+AspC+56n/L6WZCRMzjHFzV5Vwaz7lRcmPuUPK65dL+mStjZlNOysabag3+jqlnofaGZTNlDplE6X0zHzzWyKlpXDvuEpiSC6jpomadMog9R+AfERqQ2tmKo+wHz5iPcH6f5B8GOWXKR+jHjWp1ZnZzM8s4dYNlHspsyh/QvlT2HzPXMN5TEZKVHqL9gjTilpDhSc3UF9Hnk++iPxpSrkDPmI+yXRrhdsJ8pvIvV69nvJapnUt05LR94LMw2ipp4Sba6lZSPlH6F/qZLrWX5higPI7LGM55cOMP41h1zAe+b/zLxi/oIZxWjL/nO2U/rPS/J3ILpmL7rakD99t/zvki8l0ynWcQyYwb3dxHk4X2dlFXkyZxhQHMifPiXSuZ7lcan5H/hClTcsm2pRS8yhlBjX76duf7etSPkTJvkTLs2KJu8CLIrumSb3JrKV/zx6OnGTK3RNyFfM8jnn+NHOYwjy3k/8HJeLUh5lYsZg7pT9rURNtYXzXa1+zHvIu05GZNtnO+XYJ79GO+Pp386mUt4p0ruba4xbeDV+n/g7KIvqyZmQ0aXfJXRJxfkpkh9TMOlPujw/LukVbZ0nrrGM/LxVL7QDzU2p9QnjyGfJX6buHvvdSM5i+95HvQmzpxgHG+Qfh1vWUX2e7y9z44a4QS9TB/vAA9T9krvLID9P3nHD7QWr+m2WZw9JdJDfI72MMkxmWddU5gj3tM9Q/S80c8lbyoYztG9S8LD3NPIY6t7sWSU8zvy/jzvie+HbtEL31I/ZneWf7rClf0N2QvF24zOfQ3M9R9kWZEwzOEnIvhi/nGVn5aHVSe8b3zZEixdJolRpQr1kyZiu65J2Y12x5I+Q1U2Kos6OUJcznLcznbsbZxF5azXQnUPNlygOUd4rkSDwr9x3ImZQPUB6h/BVb/5j0zOQ91PD+lbQYp07Nx3nXeJx8AOV+yg20OUdeTOnZf4NyFfuqzpiLJE6T/TD5Oa7TXueokW8qbzB/INJCe6ly9qV8s4b282g/jjV8P22uphxIzTbIr5ns1Ulv9f41yqOUv+bqdCZ9x1KTQ8lVq6z94MsS6dJvSzqbGZvMGGc7Zb26wdhJuYI5lC8xlouNlq//iZqbKMcw7DO0XMfYzrK3fI7z213CTWmFu/Q61oNorjN+znHh+T7C/PyO8gTlbErEoD1gtMsINWT9s6Lr/zD1EyK7uOa0OJatP7E+5Y4zx5sBZE6G5lnafIzzEteBdojtiBWgVmQ9x/HyXto3sh0xUvyzzflG1d90tpkSvyc+S6n4F+R3+vHGzIvqZvcu9y59WaIg8Rn9K4nPJir1dYn5iQf1ZxJHE3/Sf8zTzlIfM4DZvnsptNCcK/LeusvpL7Wv7MUX9LKp7mO39LJpvpv8XMnu7fKoQjVAXa/r1b3c+j6QuBqAJr/uuuvvf6Mee6NvPW79F6rHy5W39G3S2P42+iuF29XN9f+X+nzqvtSDqS+ltgCtQFvqmdQLQFvqxYBKPROwA4FABLADbkAFAqltgYGBIYFhgRHA6MDYwIRAXqAAKApMDZQCMwKzA3OASmABMCNQDSwFaoC6wGro6oGGHv/ZgSZgK7Cd17sCe+DuDxwKHAGOASd8LjgFnAPafd4ROBTUgRQgBMQ8u2D/4CAgK5gNjAzmwB2H64lAfnBysNjHNB/e9fTgzGA5MD04F5gPLAwuxvUyYEVwJbDGd9cHNwU3A9uCO4K7g3uDB4KHg0dT24LHA6ODJ4Ong+eBN303GTJD/YBwKCO4Eljju+tDA4KbgW2hwcHzocGhoZ4L++GhUcCY4OHQeCA3NClUCHcKUAKUhWZRXwF9RWheqAp8kSC0JDQe1wLa+37LQ7WhKthWIZxcE6KTuGm3Ctdreb0RcVRJuFAjsIW6ZmAnwj8Pdx9wEHgJcYm+BfoW2LeCtwFnEL4Z1wLa+34XkF4rbFsRTq4vAq2ik7jFLk3heq1cp9mIo1XCIQ+tyENrWiAtArhpA9OGwB0GjABGp42lfgL0E9Ly0grAi4CpaaXQ5xGevec3I2023IHAWF7PAQqok7jFrhJ8Aa+rEUcBwy0FaoC6tNVAfVpDWlPaVqAO2A7sIt8D/f60Q+RH0o7RPQGcgm093HPwP5fWHlwD3oH44B/Wwynwawdv993t5PsZB2zDobSmcIy2/WHblFaD8A3AVsYDPWwGeS79JB8IG86CPluuwyPDKXAlLl8XzgmPC09MawptQdw5QD4wWXi4ODwxPC08nXxmuJzuXGB+aAvC5IQXwn9heHF4GfiK8Er6rwmvh99i8MW+m08+jXGI7SZcb6bttvB6uCuhmxhehjiXMf0cuNN9dyXjLmbYHeC7eb0XaSxjXL4urS40HshNqwkVwp0ClABlaVupr0hrANpDVeCLUAcHwinQtxOevee3HOGrYFuFcHLtoYZurtiFMU7C2bzeiDiqJFw4q0fXDOyE/fNw9wEHgZcQl+hbEG8L7FvB24AzCN+Ma4Fn7/ldQPhW2LYinFxfBFqpk7hhh/RakR6u02zE0SrhunWovwjgoj2HwB0GjABGo21FPwH6CWiTAvAiYCrqP4JrgWfv+c1AWxbAtgDh5HoOUECdxC12O8B387oacRQwnK8Lng4fDR8HTgKnw+fDb4aPQpf03fPi39smeDptj1ynmz76hY+GzPQwkJE+ANeDgaHAcOHpo9LH0B3vu6Pof6lNLq8n+UB86YXpU4CS9AHpZaGMQF76LKAikBfKSJ+XXkV3ke/OE/8+NkuoG+Ahfbm46bXAqvS1uN6Y3pi+BWgGNqbvTH+e7j7f3Un/S20O8volHy10W4G29DPpF0KS94vhoxGFehgcPh+x6SZ997z4X2qTtoe64R5Yf8NRf8O9+osEgAjgCk8fFRlId7zvjqL/pTa5ct0nvilACeMbEhkGjPDd3hh9Gd1YYAJ5XqQAKPLd3ph6GV0pMIN8dmROpBJY4KM6sjRSA9QBq4H6SAPQFNka2Q7sCh6O7AH2hyZFDsE9EpoXOQQcAz/h45iP/eKfpiLHQms9XagR2BI5lhaInALOpQ2MtMPtSMuDmxfVqQuI283hVwm+wNctBWqAugjm3cj+tIbIIbiYu+G2I966yAkfx3zsF/9wVuRYONvTdfNwTuQUcC48MdIOtyO8GO7iqE5djrjdHH47wHf7Op9HU6IhHzGgv49BQFY0OzoSCPmIAf19DALEPyfYPzoumB2dCORHJ0eLo9Oi04GZ0fLo3Oj8KNZD0YXRxdFl0RXRldE10fXRTdHN0W3RHdHd0b10BQeih6NHo8ejJ6Ono+ejb0aTMTPWLxaOZcQG0B2M68HgQ2PDY6NiY2Lj4ebGJvXoxUZQGJsSK4mVxWbFKmLzYlWxRbElseWx2tiq2NrYxlhjbEusme5OXO8Efz62L3Yw9lKsJdYaa4ud6dGLjeBCYLas7cKbQ+OBKbGLmMM3h5qBfeAX4yotAgyL25j7NqfVA0figXgkNC+tKe7inlmOe1t5eGZ8YFzmzqb4ENyH/Lji7ltxgV/EfTMCDIsPSZuj/lknji32N1XPaSL3HB/h6WD32eFApRlzjV/Kvk/XQ8LNP3IP6LBw6zP03SOy6/P0/b1Izzc5hDsUGncojoo0dnGXJC6nEclSPsPLzou373zWWsPdq7ncyXpU9h8tniL45wq30n4p5Z8pvXOFl+k7lHwueQ59Zc/oF9z9+bXsyyP+AHk7ec/pAvh44f4u0m3MoU7Nx+n7OPkASp5hcBepmbtIzdxFarY8e5aFu0jeKdG9yVcoK1X3KdHV1F+dXC56ngCN4gnQvTyh4S65/kvZJdeneHvlsj+u6vz9cTnRLOuU885PyPmZ2pt8n+reN/d2sbl3rDZ0/qD7dFOLdp5Q/k6x2iBnkNC80b0Dq1SnnPd4O6TZspPln7kqiVk/I+2oB71UrLPcUZK9ra91foepfFCkLSemeZ111E+g5W9U98nxBovpeva2nHreSMsNYqlu5BntjZ3rVPf5bnnX+5mr6ygHU96muk98VecTqvvsVnV+mfnkOTHPa2/sXKN6znHtvJ49NdXxtT47VuU8US7nmXF5l0OeQhmgLGNJ28mLKadTPkx5M2Vez85dubdnx9Picp4Wl3unwjwzLu/yYr6K8hpKngfzLLm816lwOU+Fy3kqXP7WeTA4dwN5TlyevLfPnmC57An23oOD5WPK3+HtOTv/pnrr7Nw7n36T8qTqe3YeVm+dnXs7lX99dr5J9Zya++fl3kzC+rcnqLf2N89QtlHynNurK+5FtiSZovV+yp9SPkWbvcyPt9P3K2r2ke8gP8CwDMU90BYZv9D8G+UN1IwmH656zum9tx+8ncdOb9fyh5RbqPkk+9JBWnLUsK422C9IDTsxWso+aVROU1S5vZf8IdqzVzgfYIqsYTlZgWYdx8KrjOdn1KRxb92l5jnyhyhZ//ZC6hdS8xXKDO6ceq3GUktOvNMgaPaqS06D4DtdXXIOBM0hicH6veo+QYxKTrQoc3LWP1V6Tl16PhSVkeufKvU6K4LmUPfZJGpA2vpG+xVK6V0buD+7wV5L31covdMj60onXrAJXemE6TI71NyJvmSf+i7uU79gvEHp9VV5P6au86uU3J3n+y7ZooEUTRnlQ513su2eoOWd1D9GSb0X1uNd8n8LLvr6x5T/JoTxZBL1ZtwksyW4yGpPdvLEXd5jMArlbABSTsV+JWlpv+qUs596ia3nDYAJb539i6+eRl//hJsanlVrjzCsfzJKfkFOo7Vvy9g3PiKnF2ZM3tExPiIzPDhy2zlPztE7I3KODj6VHP3K2CZ3H7O/3HfArwWfJGeoRrWJ8hptcoZqVBvbyPvDV5PzTlPjeecOnms+yVZukzNFo030COtIbMavGUpWBdv0M8LlLmYUmv1F6lPoi7oyMyXP1tWSZzNT8gyOPFu65M3KlbyBI29WpeTNukHyZuVK3qwbJG/g/UVK3mA/T0oheTN/JnmD/YsiqW+VvFkxyZtVKXmzYpI3q1LyZm42GY/ozc2SQyvW2cD1AGdU/xyC5xZyGnHpeYb9SWp+T98OJacUA5WustREcCcSjIQiWOpFEpEPulgLKZ3fOXeU4u+kPcgvzntfy3/gGKAGK+836N5aTs44S6TUWoms6LQaQ07Ea7i6885F5hrz/qZzEfm2cIlS8bvjd6sgv5UQcrcnslQkUZV4Uj2caE78WH2HX6ZeJyci/d70kVQq1fTcPtBS+12R99ZdTn+JfWq4F894yyZ1QB+7wZdN893k50p2b5dHlYq2Sx3e63rUW27qmEvBuHAnS8316q67/v436vGSMvStx0n/OvV4ufJ298+/SqPw8vorhpvSwzdok7RirVSbpc3VFmhLtBXaaq1J26Ed0Fq0M7rS++kxfaA+VB+pj9Vz9cn6VL1ML9cr9UX6Mr1OX6tv0rfqO/W9+iG9RT+pn9MvGqYRMlxjsJFtjDbGG/lGkVFizDTmGFXGYqPGWGWsN5qMZmO3sd94yThunDIuGEkzxYyYA8wsc4Q5xpxoFphTzOnmbHOeudBcataaa8wGc4u5w9xjHjSPmifMM+ablm4FrAxrkDXMGmWNs/KsQmuaNcOqsOZb1dZya6VVbzVa26xd1j7rsHXMarPOWx22bYft/vYQe7idY0+wJ9nFdqk9y55rL7CX2Cvs1fZGe7O93X7ePmAfsVvt03a7o5x+TswZ6Ax1RjpjnVxnsjPVKXPKnUpnkbPMqXPWOpucrc5OZ69zyDmhdCfsZDgDnMFgthNAOBesvzPIyXKye3wxL9ptzhBnmDMC7Bj8s50ssPNIZbhj0neg+CtTwiHlHGecM9HJdyYrw4sLuonOOPhLKhHHRd68+AxnBHTDqBsIf4lxlDPGGY+8T3IKoaHrTHFKUI5ZTgVSm28vtBc7ZWAVqIFGZyrYDHu2PccpBpuGmlnpTAIrtKfYJViT6vYwLz8oUa490c7H6lN3Jkj6zmjxRa0ivHwOwx4nqcN3NGob4cFGIvQgKW93zsDGInSeUwCGMkrcYJJLL6z4sa68OpBcoVWkLgvBUE6nwCny61lqxavnMc6ov4q52JkG5pcdbIYzG+1ZCjYTbTrZmQtW4cxzqpxFYAucaoQX34XOYrT2CrDlTi3qFLXh1KD1K50FYCuclegj/cFqnVWSM7A6Z7VT7wwBW+Ost9vtDrC1zkankb4NTg36VxvYeoTeRN+NzhJnrX2eMdc7dfY+hl3pLLN3ga1CWxXahxlzqZNHX0l3HH1rka9R9jY/V8PsRs8X/brayxX6+PyeXDUw3U3SSky3CuNgmpeutBLTnevMdxYy3bVOP/oipH3QHuXHvMce5pcXpQJDrBI7Y16DMbGCMTdilCxheZv8utrkbEZNSz03Olv8VpCwXisgV377bkS8uaxnz3dCj29Oj+9w37eJ9Swxj2QrNMJ/qF/PTegdNn3XOzG/nhsxss/Tt76nFSZjxB9jG+Vi9B/2yus0sJ6lrrazniXsZtYzYpax4qWLmaPeK5GMFbAmzAmz7eV+nqezFTba5QgtrdBgVyG0jLxKew7aCK1gL7aXea1g19qrvFaw6xDvBDsPIRbZ650ltvTsanujs5StsNhe7SxkK3i+g+jbiHQzpMfa9Ug3gFjW25sw52EiR37X2mE8Q6O32w1ONp5zdafMXuMMtmTmKrUnOa51FGyaPcEJWQdlpMC3xNoDNhXpluJZVrfr7QbMrFu8mDHLNjDmRsy4a8Aa7CbMvrVgm1BTM62lCIuxi5lbZkJ/LgPzZySwPBm9Mudg3BdzjtM5P8EfDD4yF4Jh7DrTnZmSZ5m3HKwRnTnoVd7Yl/4KfzAZvQgPhh7nj330Zfuc3Q6Gke3PKjK6l3J+Xowe6c1I6K12UmZg+C2QmRWsHGFP2ecYdp593D7JmPPsl+wWpjvO3m8f8uYNezeebyVXs+1meyfDIl/2Ai9X9g57t5cre4vd7OVK5hWwJc5ye7KNtStyVGrn4hlUYl5sj7VrmCvMWHaKl2d7qD3cm5HsgfYQP88xe6Yfcz+7BHP8/O4ZSwtpMa0/NJjf1ClnvhZTHZqupah/0k6tMcMeDblPcTfIlp28pLwrrp5CXeBJS3xNm77PWfKma5Jvv2eJjTm8q5WhYKNP75J37QbbZ/mEJ/pDYq8vFb2z20YmU+R5RbMuyrMOakH2gF90vgD7FciLps2E6//nanA88ZipVgKWloWnsZRq4xmlvec6idkuMh9FnLd24dnIvE52ds3fdIUlb8L167uelmcs+S2DfUG9DHmt+R1odoqN8aqNJzyzuGs47O83ZVdmsRe2M0iZJU+NLO9WfvEiRUpqVMvulDGDe1SH+PuC2VIu6FmHIs1UMwfyY3zLOmjczv2SJ+XJT94qt56jfowxiPpC0cvb0dA/yBJdB7lb3vdGiSSez9L+ej+eL1OO4/vwXgyQ1lA+TZZxD+YF4+t8z1N2AmrlnVWzXt4M1GYaV1EfgCZs4GneSu2SnY/18r6f/mH5vYw5l/rPi94aLrsO9o3SCgilUzNZNFKr2npJHfr3Sa3K25L2U13Pks8nf5AxH2TMeOp1UmTnwPlQ10rya8hRRvsVeSPdrpE4wWvJpcV3mb+R2Py0dOYN+bQWdV3HJ/u/SNuxNkL6b8FflV0K46D0QHVI/ylb5DfybJ38ruwckA+RXm0Okd1N84i8oW2eFl9w0eRxP+C6pDzZ5xgvskXuhX6jeRr8j8zVs9a3wL/W9Q3mqpo1gDzYP5J3XO05si9idsj7sfbj8har2SE9xPqmvPVqh+StV/Oz8vayM48t9bL0c2Oe/I5GbdTkHdo64fpZec72fl+jvy45UZPE17hXWtlMFb35hFEvvZ18s+TESghHT/gg5G2ys2UukNMP8zraLODby1PkvX2jmjEvlV5nXEWeL/WprzMXQHYyP6WSoj6F5zODZFdYuyB1CE1/7kLdK31Sdv70pfa13MtnnFKT+i9lZxdS+Dr+2ugmxjmLcf6W5zn30v7n8r6xUSixGf/B3ywU8ldF2+Rtf2Mb+U1ynmO82CG/4LjHlNmmlWE/KrWn2lkzH5IaU62Mv0HKqFaQ75EyqgXki1nG30oZ1SZqdkjp9Nks1xmvFJJn4yrJP2QZ6192qVczlfdLztUB4fbjco5hr+d7zvdLu2gl0qYdVbLH03FBRl/ysNR51wEZfR2udoH694lGRpnaK6MM+u+JnudX2aJRD/Ed2u/JuFNlMuI0jg5tN99JniKjDKF+zdgC1M+n/kHqf8LYzkjpZMTpf5ARB34NuczYBTLitAsSJ3gtuewqKRlx2v2iRw5lX/llGWvJeqm3rtXSz/+yVdJVn5Cx1nWNjLWuR0WfPMwzGSWjKfmq8K5ZMta6ZvEkISFjTX1CfMGh6XqatVonY+0vJ6UGVJ30c9SAnD8kZMRpH2WuBsqIUxdlxHW4sk+GUsuvySJ8q/zXPIUo4xvpF2TEqTIZcVo23zPfzd983SItpX+cloq/HUiXmFOq5bzrPUOknu2QfycCN37neP+jVU7kTA3Ph0p38eiilPteV3bHNDUnvTz9C7Kn1uvrwZ+PVPA/aXzR/45wVaQ58uPI9sh/ed8SjhpRM2rxG6fyXVP/m7v8pnBl9AF+U/jr0Tp+U/i70QZ+U/i56PPRn0f3R1+I/iF6KvrH6OvRC9E3YnrMiJkxJ/aR2O2xqbE7YhWx+2OPxr4Uq499P/YMvzO8q/s76v7Xhs/Gr4pfEx8UHxy/if/j4574TO//fMRnxz8Xr4h/IX5ffH78Qfn6r3x5Pd6Y+a3MJ10l+4Va29vgjJqjvaS1aK1am3ZGu6Bd1PkIqQeAiA/XR1/dQGAIMMznfa9H+JC/0T7GAhN85PkoAIp6uVOvgNI+6M5fd75m+PnodrsxG5jju5W9sMBHtY+lPiS+GqAOWA3UAw1Ak6+XtLYC23u5u/pgTx9E9L+u1+687/dxyMcRHxLPMb9+CvyynPBdPy60oZyd+V8M41fCbuwqVf5/HlY3JmVvmSsAzBFyXnOBq4Fa0ev8v9JaPi1buBJtYdgW6ov4u+IihiqSlZOWT17gSdrcR3masob6Go9L/FrUi4fyEU/S5hH6Ps609lITZT5bqP+A/LZZ+0BSzt93e3nr4u8cqL+W8VzLUPm0z5dzCvg+z1M50S/0fSWGomRH91ygxqlpfzUX6MrydrDl28Mq6G5396g0d797Rg3grvUtMor08W+DXPXvqlotVTVYka9W9apBNamtWIvvUQfVEdWq2tQZdUFdxJRjawEtornaQG2INkwboY3WxmoTtDytQCvSpmql2gxttjZHq9QWaNXaUq1Gq9NWa/Vag9akbdW2a7u0Pdp+7ZB2RDumndBOaee0dq1D1/UUPaTLF1E3aZsh11Nu1rb1aFZoeELWlmmbIFdqa3yNqa2BrVgYWqO2RdsIzTL4bIaFoa2CrhYa+MNK4irRyiCnaCWQhRqe9rQxGp4XtVwNz5TacG0MNeMhB2vDqcEzs5YhMy9C4dlRm6dVQVaQT9EqGM8syFnkFb1sqsirqJ9Hm3lMvYKpVzD1WVohpaRexpyUMfXxzImX2zLal4m9WkP7KWKPVUUuUxf7SbSfxNzmMue56k3K85Sne8o4SR2nPCqpqMNMaxT5XsrdUgNqB2ptjMpXM6ExtRFqvCrRRl86OuWLieCV/P1+Je9W1b6mlJqh8oQlGusifV/0nqFkBNgWNbtEmqmU14lMYQy2N86SHCsv87SK8WshGQcWv6+rWTxh88a9KaeRZtgbYeRzme5wxsZx5qSQv8K0mK5RSPu9tH+VmoP05V3YPELJrz5bOeQbKZ/1UzksK21qOqjhLIU1lpRim1dSSO+rwCPgv9S3qpUxHEmPxCKZETeSiGS5QTfsRt2YG3flHZDrL3cf77lXd9+LX+fd17v3yn1X7rl97rjxqfE74tPid8ZLOPo1ZWO2eK87xH2fm+Ve6+dMWmq3nzM8qakhkUgkHukfGSH/CyJye2RK5NORqZE7ItMid0ZKIndFSiN3R6a7ITfdzXCz3XHuLW6B+0l3svspt9C91S1yb3OL3dvdKa78b4/3X3ZFIusRrEX+ISXyvuksa+rjvcr0TrX9r1xeuRcMVbYahzuVfLn6HncZ7gVfdVeoLLfW/bEaxi9XT5avDssvu5SSX3apDPlllxom31M3yv5hMN6V3SygApgHYMY0FhFaHzvTWPIOWH4F/78HapUF1yJf1aPvW55srGyK+DcVa7oZPXw2VmwerwQW+LwaWOrzmj68zuergXqfNwBNPt8KbPf5LmCPz/cDh7DeEn4MOOHrT1F/rkcvf+2+fTcXmw7v2tCNFCPk85jR3xhElmXokNnkI40cyHFvpWtMfCstI9+Y3J0WeHEPn+bHOd2YaZT38LnGfJ8vBBb7fBmwwucrgTU+Xw9s8vlmYJuxg3w3sNfXH6D+cLee7lHPnvy4b3PSvz5tnDfe9HnSNM1+wsywmQE5gHywORRy+Fvp9nDEY44yx3SnBT6+m3MGapQnT/UwpI0VlvCHIMPcy7tgFNNmJeWXuHM6snsv1WjkPgLvK8axrp9xB3Av9Q657LpeNMbJc7JK43PmID4zyxtQF+RNCT1L9Pa1sq9hj5eY7U/Ljoz9OO9qm2T3wVzA/bVNxhPCuWekib2pdR0RvdUiOwuyD2i8KBqjTZ6HjTbh0PcXacgXH1407uUbNddQviYafZ1w2ROEPCbP1fpS3In/TeJXT2FFjLzJMzx8b5cdK3mb0X5cpFUpb1jZ1xodknOR5iqpDXO/1IN1g9QDNI7sv8h+cYoucaZcJWUERxlTRvGuv0fKaJ2UMjrPSBmtk5KWlSv2Vq6UwpktZUyZIWU0/8JS38BdthuEQ48ypqyUMqY8LNK6S0qKOK+hfE00UlLEPIiSJZXSvedjTKVSLNFadZJDKa8Vk72SlBlSUmeMlDTlKiljig4p9+Vc/heG0f49rM7/nxbFSvH/WAxxd2NlPzqxN/Ez9eHE0cRRdTOfBWrdrZj/n8HML28H6omixH/ynrgI98TJslPQK76/4cvIf0NOctQUJe/q5f1/luwedzniq8Gdbeg7xG+quVhduQptpKr/aWV9N3nzntoslaVV0qb7f0z8mE9tGv8ji5I7sh4D+v/DoL0ru0FAFpANjFS6nkP0tjF8eNfjlKlPfAfkX8H/74HJQLHPp/XoU1QErTIONTtLLURfaERtn8dfUp3XTKCfXGnyX7FbVAuapEWebcnxfKvkvGsP/44Ax8hOMIbN/DuKVaa4J+XpSq3CXyvQCLTxqhnaavwdAZoQXvgJtQvaw6qcfwuBHWTLoH0eo0P+FqktdJvlWQH3i7p3fR/Z+zZ3E9VzT6nnXL1NuHZBTpK03d6JEfXV3Dmp4x7raf6WoYa+hTxn2mXIl7AiEgr3INmr4XdwYDmJu+Ri8wTPomRd6qiR2hJ/XboCvb3W/ZHKdp9Gn5/Edemn2PPlP/IodRt60cp3hH4F/3eC8a7s1gDrgU3A5ivaa/q2t4X5Dn5/D1iA3XO9o0ffN4/9MNeOwmxYoZaj9+xTbejdQ9Cri7VpwHTImVq5Nlebry0EWyz7JvCVq/laPmQ+/qiFu1L2Wbj/Mh3IhszG3wqGz2aYxT1hQ5Ah/OVrk5FOCOlMx7OwztRmqnNauToHma2N1HLgjtMmavm9c6UOeflSh3r+dMYxTW3VpqutkPBXHXDnyhV9J8K3TpuIsVLH1I7BLZYr+EouJqtKXFdCIl26OSLhK+mPU1MRdiok8ky3v8grjrvusSYjq8McjvXDB2X1Za4W7u8IPIqZRtOzjTu4l/g/7H0NYFTF8fi83XchhK/j3bu7d5sY+UwB+TIiIgIiBGoRERAREDTFiEgREfkhpRiRIlJKIyIiYkQEpIj8EBGDIiAiUkSkiIqUUlBEpPwQKeVPUUPuPzPv3eVyueQCXIi2fZPdzO3n7O7s7Oy+fbt5vEpJ52rtDNJpYgOod2vfBklL2Se7kk33l+AMYCKHp9N/mtNKijge7EjvSOj9NIbvwuEbc8gxqCMNl/T+ch7ljvhoxv9BmhVT1YepWsv4C0xPD6ZnBdHj+oLz/cLJtwe7N8MS1aQc0dfOpTO718WU7+W8nue87uW8nqe8aNbCYdqwBGiA43ETbTLNPlECvIYSgPr+jdz3aYTWrO2AY6s2utKMVqFwOPfUJqKZjGZaBcLnIc/MLsfMi+N/4UaG8QVht1Jl5xverodeOPYNgmwYBiNhTAX4OXoEYd7WP+Y3+g+wnUL7G1zXafQ9xXf0ftHmc62I3oNqp3jNjrSdatBcm+5oSG8CcLvfzL8/tI4DBDICGcgjtwK4NlaaERUKtwXNdjS70OwB6drPJuSvR4V30VdVdBpnmeZEHP9EmNOQhP+TGC8Mu0eXrSFywDDUOhai1rEfCjWltUNZOJbXx3dox0SKaCK6ixwxWSwQG8Q+8b20ZFvZT46RM+UKuV0e1ZP1DD0LhD5YH6oP10cxjNUn6JP0qYzP0Eehr+3Sm2Equs3S5zI+X++Nvv05dibDVCc+4ZN01C75txmG3pwSYUN1E30xT3k6BHY+jE2Vp+24ck8IMI7SsxjLkHtsmuXaEDD1YxmbINeiL5ZH5odhj9yvJzN2VOajb2+9v8wNgd4cqW3HWCeZi76dMJ/sEOg9ODThK2Q2+2bILmE4wXERwzhd0BfTko3CkC2HoS9hYySOzXo9jJsUhhNY0uaEIW1J6IslFEdCQGH15oTJtuKI47stBHI8lrQeY9PFNvRNlvvFcrFcr002xqbQhH0vUCvWhdwo8kSenkw2xjktCxnbJ1DeISecEKPFaHmabLFcFmJa9HuMGI2+W+Qu0Vf0ldvJFnlyP6ZFv/uJvuw7TLRBvzYEciSWczrjk0Ub9F0trxc+uVb4CGQv5L2RjOcIH/oulAu1M3KpdoZAtqYaJkx0187QbUdyirZX5mt7CaSBdTyTMNFE24u+U+R0bV0YzmhF6IuYSNHWoe94mYsajQMUFn0JP0ZvluR41GDCIEYg1bmM79Amoe8w1DDCwCUaz1guaifkm1UMoiWVmfFZqGEI2U/LKAbhxjI3YnysloG+zbTkCDhJZWasP85EhEyHo8UgTmFvBcKQM46iXN0eCVqBtg7dCVNoC5x/RABpc2Iy44VoBMyMBNLiRA7j+4FWlseUgBVYw8sZ21iBEYVnJsHVZc5MSHOaz/vCHqbvxPSThDua0zdiJI4oJq0ZicW8y+w47/iow741abXLlR3sQ3uj+FumbAhy+Lsx5Cb6BlUeoTAQoPCubNSjNFcufZWddB2tnWEY0mymU/roTitNTWidBFNYxL63su86zpF2/D1Au5ySZhDNSS9K1JCSVpM7hu/F4QWHH0A5km5UrTrtIql2DdUJ4s8xTutxG/QaZPOoaVJ4jFsz9G1Y0gb5L06BtLcvaRcSUvUQp5yBLnNp3uV6mffLDKBdPPI3FAZr70lO7X6uK/qGeROVSy/UG2H4zRz+OKUg/857zV6lNTIMSaelzqSQ8lGauenDiDZMDVtT3+aEQZ1Pb0wnOOo30iwR8VsIt+ucVtb0Qp491mMK/8K+heSrv8rU/pzPw1tHvq6WVA+u07yHyBRDuOx1uezsq7/PdNIXaC35JDz+Sg3D0EmTx53WfIDrkHZ+HeFY+fxdXD6vWgoOY78XySTdKGL++SY0DzQJNIW+rIv04/nnt4HG2A4DAKoNrzQjKhRuFJqxaCagmQSy2lQ2IX89KrxWbUY5ZlYc/0SYueDC/y7G50e4L+bf0eW7Cmeh02ExbIA9cFKriRKvszYIpV6etlTbpO3TTqMsbCayxO1ivJiFo9IW8TnKN1O2lNfLoXIiyvqVcps8JIt0C8fTnsink/R5+mp9h37EJVxprrau3q4Rrimu+a43XLtcx1Dz2+Pa7zrkOopwwnWa/zOgz0HXEddx106EU67v+T8D+hx2HXMVOHAyjBWgD6WV78DRMIaagmu3a59rsgMHwxjOe1w7XJ+4hjuwNYwNJ63UtcXVy4EVYawX+ixxLXe1cWB2GMORkvbJu5QDi8OYQp+ZWG5wYE4YA/SZ7JqmH7bB1SCE6YfRZ6x+SN9ugys5hOk4UriyXcP0VTa4RoYwfRX6DHDdjnodg6tvCNPnok8PfY6eq+e6eqPpT5gN6NNFn6jn6Dmu69F0IMwG9PHpx1Bz6uFKQ9OAMBvQp7ZL6a311i4TTTJhNqBPkp6i+1w1dR9CDtsMqL+cQV2pUC9CzaRQ70G2DehzVF8qD+on5EG0W5NtA/rs0/PkVv2g3Iq2j2wb0GcHao4rHDgaxnCkxDn0RjnbBj09hEmUM/pyOSEE+qpiHH3mR+iKc4tx9Jkuu4dAzy3Gcaxvro+TzW3AGgzj6GMUA5Y0jIMQZ4pBb12MYz5t+K3gfrFfby+O0n8b0CdD7EMdcrPYrGei3N0cAkxtL/bAZQ4cDmPL0OcQpjHTgRNhDDUF1EWPi3EO7A5j45zUBjtwOIwNxvIUYHpdHMgNY11I+xOdcX5iQ04Ya4I+eWKTqO3A1jBWG30miLXaKRvEihCG4yTpZSdZO1yOZpWtMxKgT19tj7ZR2ygWo5lLmA1I9RhxvbZEWyLGo8klzAb0GSFaajO0GWI0mhzCbMDUUrRh2hjp1sYgbGSbAeMUaj21AZJ27wzAVAaEAH2OC13rJE5pnRBmsM2APp9rR7VG4rDWCGEM2wzos0vboKU40D2MpaDPBpFGK2y8yjYhhCEIkQy7Q4C1FcZBaN/DuhBgbYVx9DmMs0cHsLbCOI6e07RdMM0GbU8IA1rzHVUMWFvFvy7ofSgaWrV+l/eOv1b0PNprirVF8XvtGsRXag+iXnAZvRWVyRRGHmB8pEZrU91ZYxpJ7wHlo+QLd1F41BpQU9NT2eV92gGsb+O3mV+Si/aEqMU6DumbXnJxZfObxJcJ17uyxjSY4/7AcbuyBveDNpO0J51OCmrP1K7n9fMxpK+J3Rw+l3IXr5GOJr7lMJ3p3gXZnjQvpI1OlN7nWk1loVwwHVp5fopPz19Pq3ZiEWlb4gPWkXdz3Grs/ne+M6MavSEVi0nnksl8msFIrpP69KUK1tVMqgfKSxekeek1SBfD8tbHWD/jev6WalXeTHWo1+WanE81KYqoXOJbLtEK3itfi0sxk2jAUqwmX6JT1md6zjI9rVjTTGM6f0nu8mp2v5XpLGI6RxKdYQ1uSpydLRp/m8/vzlw1K83ICoUz0Fho0tFgD3U1Y6NFhdNdrcsxbeP4J8J0ABf+dzHeJeweXZ4G0B2yYQLMxhniVjgIhZpPa6310HK0XJw/rtK2a4cFCIUz+V5iOM7m80WB2CmOSl2my3ayL7bjVLkA5eFKWUB7NOQmHFt3MF4gP5F7eWWA1lu2y120+sL4IbmWVl/kTjkZYbfchyP1EcaPy1Oc2udyOMI6eVgew9QIx7Qk6lSYRi+G/WhWM3ZIbpS9OLU2DLvRjGNsH9JHqw9bpWLYgeYTxvZiDopXPPiFNdIGchhjRCPqVHIbjl8IcieaBYwtkcsF6lRyndhOIDehyWRssVwmUKeSK8QqArkajcXYWjlToE4ll4i5BHIe2kWMLZDj6H2XnIWjIYKci/YhxubjaIs6lZyOoyECppAjtjE2R3bBGbuQk0UPAjkNjc5YnnSLHjwutiaQk9Cew9hUWVugTkWrF7z2kov2TsamiH28+jJajtMKtUI5USsUQxkbIfZqqFPJTnK4dlA7KIdqB0U+Y6PEUg11KtlBdtG2alvl9dpWMZmxfiJPo52lK7QVsjOa7toKMZx/9RRjNdSpZDtttuyEprk2W/TSZiOWKQbR3E020ybI1mjwv2ijTUB7p+iMY5qQaVq2bIDGrWULpWWjXSAyNNSpZG2U8gjSRHs5Y0p7g3bKyiR+Z9Vc1uQ3V4QZIkVDnUoUaUYYxpMtde2ERjrVCTgTAnGa7UIpaGctzkv3h0DLIhvH73X4H8ds2BwCrRnZokBbCKRTrYVlIdDcZIuN2jQgnWpV8fqLyGN7tpjHqy/jImAf2WI+HAE66WRwBGwiG6XrDhh8YaOs5qGZtTOmztYv42+J+L4UOAla4UxaD7G/KCpcQXP/om94DM7kr4vyaQ0HbqB1m+/yaHQpqkkrNsHXeWfS7TSX1xrQio3mobUaDNONvtohX/uro+DXHPIaDvM4rKZ9M3yO3kxasTk7hL/OeYXWanBs7E1n+tDYLNJoZUZcS/Rjmg9SvjTS2N8kiV60ViPuprUadOevds5uoRUJGvWxPNcx/hzjdEJTBo21mC7Q90a8PpNhr8nQOIf5Yk2efYdWHgBo/NM8tJpxdinpFkVvUZjgH2g15qxBpYMcGhe15hSmqBPFCvbhL5CAxt3gDqoxLNeD/K3SMqoryh3dn+Qcr6Aykm8wn9ZYsIYp5b2czggaO4P5/A4mh/YjQyaFgXRyh0x2z+T39FtpBQbLTjTPoJJq3Ziehewyh8b+s/8k+mEOrbpgHZ7i8Iu4DidwnSBXBNtReOSQnmwfZKrqESVo090e1Pq0cymfOehpOscnvPemDg6QdQ0Dqhum4YUaht9QUMu4xKgPdY2GRiMMmWFkgGW0MC6HgHGFcSWkG1cZ7aC+cY3RARoanYxroTHt0oWfGTcYPaGp0cu4CS4z+hpDoQVqCA9BJ+th1BBuCZwJFMI9gSLlglGsJ4zjt425bO9gOmmHVm8+ZWhPmNKydwk9Yj0Cfa1HrUfhZtY++vEq0oTAGcxh4o+1jBr18faIbQJL6x0upausUnJp+v5oSiPAf5HooNbtxK17LbduZ27dYUzTcKbp3lJ12xxxC7EFWprm+5HxugDPxaGD8+7EeXd1asje//YmANdhRrjGBCxmWU51Nf9HVl/lUy5hCUIBt7cGC35StGuwmOtcoIbx46x1tAO5vEtyYWAp88lh+Bx/kxyyYO+/n2wuWVrtdo3eFnVAfDMore9/pXRipHRULbfRaDeWQnyhlk77Vn5UPeFHJq9L1B1Jv3U/PelXogw6LEXYAG8wD9g66k+tFPaZmhKaQw/Eq1kjrLHWg9gnfos9gk57dWEe91n3W49Z04BOeO4UNsAmC00PzKMTuHCm1w6hE9tZbLdDv95o9y+eO6JdwDbXlvZNaEaIf6+y/RbN2/h8nxuKCB+hdabZG52GgLQaaNP5nVQ22uMuraes56zFnEptLEdtnCWo8Bw0EHyE7Xy27ZEr2xm5ssAXDuc13IbH8BmpRprRwGhsZBptjauN9kZHo7PxC6OHcaPR2+hj3GnkBOjU8Jr8Hd4IY6RxrzHKHGreaeaYd5l3m8NpRdHe12++Zx7mff0fQHfe19+bx6AucDvPY+xd08+cY86YOuY8AvlqpDEKpLevdyAk8Q7/2k7OWZzzp2Bwzg0x563QgnsbldYu+cXOG0tN+0LDpZ53zvV9h/G4MdN4wphlPGnMMeYaC/iLR78n1XOJJ91zqaee51PPbs9fPH/1nPF85/ne84OZaqaZl5iXmvXNhmYjs7GZYTYxm5rNzMvMlpHtZf7GnGjmmjPNWeaT5tPmXPMtc5253txgvm1+Z541g75rfB18HX2dfNf6uviyfD19N/n6+Pr6+vtu9Q30DfHd4Qv6wa/5pd/lr+ZP9lf3p/hr+mv5a/vr+I3AO4E/Bz4OfB04Erd+bocuEfXz7Lm3TJmpYy/xXs15jCiRR/4555Fk3G3cja1/v3E/aJyf4PxMzq8x50dnibvMB83x5q/NCdaHDsdnR+T73Dm3fS3jc+ML46DxpXHYOGoc97zmWe153bPG84bnzfh8V6K3zU8ox0tPN+7nu7GfG4H3sYc3jNnPLkau0T3s+f/AHlZWzQwowfcLzrk1YqVb3KtKpv5CglIvvw8tTHAfil1zGn0NAN3BXnUDWERvxIwPjf2IozSI7HfeR7wLoSH3vm7c+27ib9hoZchr1bTqWIbltywr3apvtbQyrSutttbVVgers3WdlWX93LreGmTdpmpwnqaTp71jfHGFc0LaPC97VnENnVueVLs9I2r3xXNuQ824zxjPtZJq5Bl52HNnG0+h69PG0yCNZ4x52KPzjedRgr5gLIIU4yVjGbbIcmM51KE7lMBtFBhrwG8+YT4BAXO2OQeUOc+cB5eYz5nPQ7p5xjwD9c3vzUJoYBaZRdDYC97qkOGt4a0Frb11vHXgCm9dbwDaeK/wtoWO3n/52sF1gbcDG+G3gU2Bd+HRwGeBPfBYYF/gEPwuLKN6Rciof/8yCzhSoqcuOecS/xTKie1i3mPeB8CtfBTbNyuilf/9y6w5bayxjgnwx3OWlM2wxPOMZ435xkJjkfGKsdJ4zViDJZmDJXgeaf7BLDSLkF7Nq3td3mreZKS6prcWUl3Xa3i9Xp/X8gaQ7jbeK71tkeZNTCvOwDzSg7znedezDWcwkZT2YkqXnjOluvGUsQxr97lyUx/Kqb90zqnX5vNGhofmOHzmyBhjrDHOeBD7vQbVrW+t76wfrKKAFnAFqgWSAyncyzpr5ItzNG2JLYvPKdd5JbSQBcZi40VjifFHY6nxsvG6M4YdNo4bJ41/GqeMMx7wDPXc6RnuucczwvMrz72eUZ4HPGM9/+MZ53nes8DzgmeRZ7HnRR7t3vKsczSYA57PPV86WsxZT5EniJpMSINparYyrzLbmVeb7c2OrMXcjbw1whyFWszDrMOQBvOM+ay5wHzBfMVcSTqMN8Vbu4QWY+swIQ1mpO9e3yjffb7Rvgd8D/km+Sb7HvNN80335aFmE9Joavk9/lR/mv8Sf7q/vv9n/lb+1v7L/Zn+K/3X+Lv6s/zd/N39v/Df5L/VP8A/0D/IP8R/p/9X/pH+e/2j/PdjrVfDMbILtn+Wpx+4Pf1xNK+P4+Un2L92m19BJo+aXXjUzOHZ/yWRPKJNYB5Z9t/WuiitRX3nhPW9VWgFAxCQgaRA9ZLt4Xwbeu7tkeLo7Jegvk6nAdGdgrQ6meT01bPUV8MrIKaT4/nkVMvbwtvSe7k3M4YUwPkLzlluBvDe4r0VhHcgzl9cPH9JYgnhY5lEKy9ZFz13jU/LopLbt7+8jHYyrcvRyUyW26pLpy+hmzAut2jurIfOqeS4tKpU21mr0pHa21DHpHV1Ya4xN2IIsCUf6832SleJUMbV1pW8ZpjG61dU95lIbxq05/B005xWl/gjCSkaiPHcSI0dM8O4ivO5x0tnQQnkRQ9TZHGO9ui+guIbtLqXRKdhWrusj61PrE+ds7gaMV3FIaWdhxOHvlbYhWGhVKqvhEO4KFWs10u99fg7y49At3Zbf0Vu/tz6GurEyOeVGPlIjgkc08Uxa5TKc2W4JJp5pJTvq8W+3lQn13rcOrb/Kq7HUeFQutkK++s1/jtZJ6K7f2i9b1ZU6CpbKS9Fo46ltbAOWzOX2lS+FuaN4voMcUUyS1WSpr/zTPc87plZRhqry0ljMGo9tixf5EjxAyy//0Gym6UzyeZIyfwZS+YvoiRzK5TC9zjS9xmUuK+Zr/Msv4ikLupIu73/h9pcTZ/la+Fr70jhm1ju3u77lSN7J7G0fdyX73vVt9/3T+J1lLHXoDy90/+8/4/+lf41/i/8f/d/5//euqMUd7wertO6xrDoU2i9V9PZrzgOvmtttt6ztnBs4tg0CM1yC7hWfJbB/1MtP7fOWRwzhvjyIvo436gIa7i31sW2HmLVsjpZ/Tj3MaXCvRErnHd4qXBvxkxvNNPZzKGxEYdcW0ZIdMVW+hRHzjO0ShMj5ltl0Eyr2sQD2P7cet95U7hFsD04lZZxU5GkMXrvZrmJtW5uMT/jmM3jxhQUkyVcKE5FaLZjvGfujhFjXZmlTI6sn7AkLRl7fZm1Ww1jH/AcRJ3kLHI8hMeFJmEO2hDOyYUhQ+HoPYWdEkmsRk5t2jz7drl1WRu5uBFyMPKvc3Lf1VEcXLJlykvNPhVlC4BDRbMIKjaWWccu7EWNPW2cmqZ4zSPivRO7PZl2+xxojhuj3JtiUorzDC/l2gllEsmjkrKIZN0wlnb3h+QdyiWSSiST9rJMOoQyqYilEEkgkj4ke1Z5V0fJn46O3BkVljfrfbtI5rBciS5nLGqFMZppLa/nRJf63XJLrYekbYwW2lwmT+vIz196fjAhBt2xYgknN4nabLp/UIy83iszr2rcf/ZQ/8Hec9M5xdWxR2B/4D4XTWesWILqpVw6t5yXNItO5U9l9vdoaRGrvGXHrhYpK5xSt+N+Goq7NUbc0nmGRgsBbePGjs7Tjhs62zmL34iUjCMgKYbO/KH1Oc4cDloHQVmHrCOQCnShSVpMUw+12ejzQMZDbowzn9einNkC22EX7IH9cAiOwgk4DYVIA52AJdB3Y9heiyDsU3j4e/KLZdtfINGb/Yrb1BpzwnfL8B0yzp0kfAOJc98I3zTi3C5i3yXCt4g4d4bwbSHOPSF8Q4h9N4h9H4hzE0jE7R/2vR8lbvyw7/qw7/fgmz3sOz3s2zz47o5ojeP9MqV3dMhtZYwPpXvyB+VJHONx7I/fVTiWLV+F50sz1pgVK47N7UnYb1JQc0xHvXFQhXOzRy3N46toXjw+yjLHxu3l1IRmzIwxeseKUTw6aEascSFWHFsGCpQiP1SYrlDpG1c4j+Hh8NFaXuwchjs5XBFD5yo7h5BWGF2KD8vlmOKSt4kTJyl0nrJ3uP85jrsg5vgbK64WZ3yKHWd4mMuiayF2+GFMlTdmvZWTg/OOsiRFOypQiujW/HN5/MK5RPNxrBjFOq3m6XaOuZQ1M9hZZumrh2Z/4ROv7do4qdVGXzev4wicp1+cfVp0GmgnK9mqAV2Rztrwc1ptgl9YHssHN1gB6xK4ybrUqgf9rAZWA+hvNbVawK1WK+tyGGxdYbWBO6yrrHbwS6u9dQ3cSWeFw11WF6sr3G11s7rDPdYvrIHwK15bmBgoUinwiKqpPJBH62HhE0EfQu3/YetJsHh3GK1vWYF+gVsC/QO3BgYGbgsMDgwJDA3cGbgrMCxwT2BE4FeBkYFRgdGB+wNjAg8GxvPZ3rSGcgpOaW6w59z/rcNkrjuqM6oru47A4TDi0I/+A2qIuGIq2KeJ2lxBb9IquKZb0bf1gbOqRrltUXqfo878jbzMPX84jA/3/MqjrzwaIvliV6XRQLr+KdC03XoHpCcjwbx3ndEVeY84sBlzYHPmwJbMga2ZA69jDuzOHNiDObAnc2Av5sC+zIG3MgcOZA4cxBx4B3PgUObAHObAYcyBw5kDRzAHjmQOHMUc+DBz4BTmwCf+A/rYM6gAz3bMPDQLnP+JMkuc/8sj3FZF4G8kOL+Q2YBmc8TvbRH/d0aZULkXROCVUQeRJrIOdldhuStq9p0HLQfD+BxtsjYNIU+brc1DWKAt0Zaj2wI0q7Q3tA3aZm0bYgu0nei+m/32obt9P9qG0A1p2gZRUxjC0pYLQN83RHoIMPxk0Ug0Q7u1aCs6iC5anrieb7dozXdbZGOOFHuYGEnfa6PLGEyBsPEiV0xBv+mIzyQMUx8k5iCeLxai71KxQtsnVovx6L5WbETXdDEHw+aLfKRzOdpvYGpbtO8xh+8xzTykNB3p3S52Ib4HzX4+fwZ/Ib5LO073WmirxGmMVUj3ViC9SJ9oK2tr06QpxrMcL31jbQ7bM6BCd9VCqftp+bxostexzaegarvJprNxEeeT8fgsOBB8ay5/XQuC3yNqizH9PeSLtp1OGuOrGB/HNu85Efz+lb+x5S9tERfsvpMotFOjL50x7rXsO4VdRjLOO/jpHBPmWHJfxDh/901neaCdR7aexLabwxhs89fNNj10Cgna/dieSXlpRzlHuyyd2V7B9ia2j3LcSUSzU+qhRC3VD8bi2hD8bZfkvf2yDdv89RN9mxx8XdI6YyaVJfg13zgKfO4fiE/Jl25YhUyxlH2rsfv9HOZBHlVHoL2Jd7i0KGfkzjK6Gd0vaPyuHL2gBZajZiUY1Pg0qxLSS2fTDEbBWDQTYBLqmBMQZsAsNHNhProvxt905sEsWAkF/D3RJuyFO+ATPkH/cziMMY9huJPoTmcOncGQRbxXmt9PR90UzX2ZTqVHux3bxL1N+Pv3OrYLn0IAdK8X+tIu+ibs3sRx569ZzjIH8o3QEBzB9lgO2Z/T2cwuuWzzDgxOH4L8HinYk23+gqXoJNs12X4L7DVcCZ15h0gSajGXG1ejltHCupL0St7H4HPumLrduJP3MxjOfVK3WIOAyjIRS0nfLk6OwKehTjrWqd8ZaBPMwvolfD7WsO2yjGvYxtdxLU/ieg6Fp/qexPcV2C4nsa5D4YsiZOQrIUlZ9KW9U8KWZ6QVo8uMkPwrKuAzHv5F39QVfclfRbOkKSoQZ9l9ItpXk0ZfNJjaE+NCSJYg3jskEYv+BSdC8hLdV4fkXFGh+DunM5xSQPfSOwnoRl3NMCH0RrlG+D1y9FtkiXT7Suwr+LgKdxRUhOLovRrEgSX3amjgL/0GvXgtJXSLatS7SJLwlpPmp5RS3Udo10fdr+sGcU7ULXAjBAJrAmugQXi3t3IMwO444QWGMyPa57O46dMYkMZ7bNI4xp64OaQ5cTQnxl/ixJCcth3HpmpvXKqaQPF+hb+WEQ7TUFapGt3HaQ/hODvqHsY4HQJZGKcgUOCkHRn6bxw6u4Kh93PoX5YTumRrHYhLS8nwn8elpmT4L+LQE80NB+PQEx3+yzj0RIc/FLd+orntq7g1FB3jcNw6io7xddxaiuboI3HrKTrG3+PWVHSMo3GoKt1r/i8OVaVjHItDVekY38RtQYslokST7uziOx63DUvH+TZuK5aOcyJuO6Y7sUQ4zj/itmTpOCfjtmXpOP+M25rp4Vih3Y+n4rZn6Tj/L26Llo5zOg5tulPHdiybD/4Vh7ZYcc7EoS1WnO/KpU1ouzAWiCYyDQJQHWI+wZXBP7OeGfq9o4Qvuxd1PLsUdc4HI93JJ/hYyXCRv4I7ImOxf06JjHNK5VXiVxku7WxT0qUkPaViXROdCn9RXvLpzXZmCbfMUjTzU9QR9WU4e6ZsKiNivVPC/eGo1Mt7SudOp5w1VakqTV2q6qsGqpFqrDJUc9VSZaor1FWqnWqvOqiO6lrVVWWp7up61UPdoHqqG1UvdZPqrfqovupmNVDdpu5Q2Wqoukvdo0Yq2pnaBFNNRX0gTaHkx9QvBYk51Ee7gWoAOubUCFyYW2NIwhwzoBrm2hztlqolumeqTAxzhboCkpGKq6A6UtIOfdur9pCCFHWAGkhVRwx5rboWaiJ1XaEWUpgFtZHK7lAHKb0e80JqwY309kT8RnUj1EW6e4GBtN+ELr1Vb/BgGfpgOn1VX3S5Wd0MJpZnIIa8Td0GXizXHeierbLBh+UbipTcpe5C33vUPeDHso5E31FYYgvLnCxvkbdgmYkawdRI1U11w5IQTS41WA3G0g5RQ7Ak49V4SAbR4hT1p5ajWy+EgdAlTvtd1Ce4OXgsjK9B8xWaA87vD4Iv0W/E9gT3hENNS2D2OZAT/Cq4DeedEFyLcAzho+BCm6rgNjT7Me+PMMT+4H4n/234+6Pgat49nCAaMNX3HBp2Obnssksc/MD5dQDpOBCKEtxANYJ+bRNDQnCHLQuCpxOT3gVQsit42Ckz2sFsansu79hwiA/C2GaslQP0n+IljIKvgo8Hl+D/N4MrmIYU5MP1zI2X2bmieST4EeMHUH4vCq7H/yuhvs2rCaCgtFyuyJOamNyLH6fvUY/E0gbvdVz3Bxc6ARLVA8qjITuYy2P9Sq53P7bCWuaS8CiE9W/zy4Hg77H/rLdbKGH558cPczEe7O0Hq5QAklEfcV/cE+0V5odKfs6zXySSAltbW8k8SOPFS6TH4YiwEv+vDw4Lh9vMPeYYttpCNAWO1PgogZRMCuahvYQkFWp2QWybtUxDs3CIAkdGfYXUrE1knwDS6HLCtYE280U+9s01zCXcZ4hbqF7C9CxiWtZA18SQgPXerlz/cmq7NA+fJw0jgiNK/P7K1mIYPxCmoHcZsRPIDxGpHosfpnIeHBVD/YK4Pwvbfy27DwyHKJ6t/RlD7U68fEVeJ55cn9hUzyH/ipQnxtwsgRRE8WTVPaRNVx0/hnTaCobuU4mU3Mvjw0pbGhb9E6XgZywLW4dDFPeLrShHaV3jxYTlPqK0nAyG5/N2D8XnvkTlVwYVO0L6ZFU9F9IvEtUa8casn84THM32qPDviL5WkX6XCF0uuIDt/lGue0pjMZ9461jx8yfpNofRVhGuBznntiz3uuLYb5abRiLqYSPbN55n9AuuB859bfwwlU7DxkSkkognWMnSNE7uO9keFSdY5dLw9gXRkBh+iJ4xl9sTK+dx+maVtgXUYxoStFZ4fo+9enreMioxNGxku0r7pv0ErzrPiAnpF+U+F6mPOG1RqTOhuDSMZntA+HfETCVRKwRxaZhUjl/8mVNi5OTOMjxSKhQ9MTxZLyGpXNDj6JPPxvSL/2ak8vtmxdrjwh96S1/V48VGtnueZ/TE9IvRUb+r4u1YPc75fMeLBD5VrMO0Zho+Dv8+J+5MzJsDhyfPty0ucKwLjg2u5XX2zTjXqh3cETwWXBRcifPMzcGDxJk8WrSCVuiesHehZTz1mJ5fV3IuFaFhQlWS4IwX57vWXPnjRQWexL1TC7YJo63KCVZJj9MWo2P6XaSxu0w96iI+joxaXqU0rGR7X1XSYD82V1Ttc946TGJyX1D1NFT0cd4W7g9+aY/zVfHmyH5PzruKqmxHlEPD7tAs9OLXA++imRf81Pn1p6rceRFcDc6OwCrhB5snd1y8FYEYNHC5g0vDWFXUg53zrqp7n8v5V8qOiXPIP/QGs1m5wSqbCl7XDr5XcoU7OKKK96oN+RHsPRh/ru/9K+eJ9c79Ij8CTDVRPQygHlG/BV09qqZDNTVD/QFqqcfVLKijZqtnwKOeVfMhoBaoF+AStVjtgEvVR+oz6KH2qr3QR32lDkNf9Y36BvqpE+ok3JIqU3UYkFortRYMSvWn+uG21Pqp9WFwasPUhjAktUlqE7gd8x6CeU8ETT2kHgKhclUuSPUwUqMjNY+AS01WkyFJ/RYpq4aUPQrJaqqaCtXVY+oxSFHT1DSooX6nfgc11XSkuxbSPQNqqz8g9XWQ+sfBrWaqmVBXPaGeAEPNwvJ4sDyzMeRT6iks+Rw1B7zqafU0+NRcNRf86hksrYWlfRZLm6/yQann1HOQquZj+dOw/Auw/C9gLaRjLSzGWnhRvQj11BK1BOqrP6o/QgO1VC2Fhuol9RI0UsvUMmisXlYvQ4ZarpbDz9T/qv+FJmqFWgFN1SvqFWimVqqVcJl6Vb0KzdUqtQpaqNfUa9BSrVaroZV6Xb0OrVWBKoDL1Rq1BjLVG+oNTPlN9SZcodaqtdBGvaXegivVOrUO2qr1aj1cpTaoDdBOva3ehqvVRrUR2qt31DtwjdqkNkEH9a56FzqqzWozdFLvqffgWrVFbYHO6k9qK1yn3lfvQxe1TW2DruoD9QFkqe1qO+b4ofoQuqkd2Pbdse0/gp+rXWoXXK8+Vh/DL9Qn6hPkhk/Vp3CD2q12Q0/1GfLHjcwfvZA/voKb1GHkkt7MJX2QS04gx/xD/QNuVieRY/oxx1zHHHMLc0x/5phbmWMGMMfUQo7pY3/VIAfIAcgxxD2SuUdn7nEx9ySpSWoScgzxUDLzUHXmoRQ1RU1BjiFOqsmcVIu5pzZzTx31e/V75BjiobrMPQZzj4e5x1RPqieRV4h7fMw3fuYbizkmwByjmGNCvPK8eh55hTgmnTnmUrVILUJeIb6pz3zTgDmmIXNJI+aSxswlGcwlP2MuacJc0pC5pClzSQZzSTPmkobMH02ZPy5j/mjO/NGCOaMJc0ZL5owM5oymyBlvI0480Yp5ojXzxOXME5nMDS2ZGy5DbvgTcthW5Ik2zBMNmScymCeaMk9cyTyRwTzRlrmhKXNDBnPDVdz27dTf1N+QCw+qg8iFX6uvkQuPqCPIhcQBHZkDOqlT6hRy4Vl1FjqnpqSmwHVAX+o34DOx6OxS6e7qvgHA3cvdC6q773DfAXRPgdtV3VUdXbPd2aC5h7rvAuG+2z0Cktwj3fdCivs+9/1Q0/2A+wGo4/4f96/B7f6N+zfgdT/kfhh87kfckyHgnuKeAqnuqe5pkOb+g3sOXOqe514MTd1L3O9AG6iBAtINIsLQby3KCOd/bz7BxTm/xT69RaTTSS2hc1qcU1rojJZhYqQYw+extBVTxHQx03GfwyexLBUrxGo+gWULna0i9jjnqpwQp+1zVGRtaUol68kM2Vxmynayk8ySPWRv2V8OlkPlcDlKjpUT5CQ5VU7FFNpijBlylpwr58vFcplcKQvkuhi2ndomuVXukJ/Ivej2uTwsj8mT8ows0nXZQ0/R3bpPT9MbaEdkgd5Eb6m30dvrnfXuTnkjSx1Zdrb1nnpffYBdD/rteo4+wi410tVfH62P0yfqkx13ux7Y1qfpefpsp04iakafJ2ZiWNvmlCNrRvx/9r4DLoqj/X9m9ygCwnkF9hCkKqiASxNs2BEriIgFO12kiKjYARWxo1HBjr0LiC1WFDVYogQVjcaOHVGxK+U38+xRYojtjcn7/v9hP/tl9pnZ2SlPnb272UdqTBGtF20V7VCOzB/GRLRXdEh0TDkygAJFiadEOaI85YjpM49Ewu/LIKJ9YD8oZipFXAbpi4DtgHII0msA4VvqeBak4XvQeDog/JIZcwTSjwD9gPIUcABQLgOuAKxJEU2D9A3A3kDJhvZguCsCMA+wPZQ5DDgcSvpThLeYmOkC9P2AjkCpDekZgK2gTjWgjwLKM0g/BxwElCtQ216KpXQVCZesBPotQA944ikoXwwYAvS7kE4GhPpxLKRrQPkSqFN41m7AulAGakbdILcNPFFo81DI/RWwB7QZRoDtB9gCykDbmHpA0YT0WCj/EtIzIf0eMArKDAZ6DmAnoDyB9AlIw4wzwr1hgLcBu0MNp6FMB0jfhPRyQC0oE09RZA+UVYBioMOYM/mA0Av8M6RfAQJX4OuQVoX0SBgN4BOsA3SYC6YjULIAJ0OZ0TBiMEqMMCMMpAX+tIaSG6AlMONMKmB9oADfMjA7+AOgF9SgBd/oj4ZfP2GIVu7wt+hh2u6tcHpU+yvYZyp/BxszWB1rYxnWx8a4HrbCdtgZu+B2uJPykGEP7I374SHoMg4iqTAy8zuhRlpnJh6LTuAYdAbH41nkfz7Kx/NJ3aR2nEyOsVD7CryW1E7r3ozTSO0uBNPwbvKUA+U6QgRzw54FXAYoBRT47AGMbxIgyDkLXMieq5RYFmSYhZkTQZ3so0qpE2adBS5h51VKEZtaKS2sL0WVIZAGuRU1BhQBZQqk+wJqAE4E+lVILwJcApRrgIXwFNB3rBHg+UpuU8oG6BF2DyBoGVETQJA91k/JQ/RXM0ah8fTb3eIufwsH0VnZCNzz330ouafM8b9gpCrl7IRS2uh/KnEniMyd+L3M0Twqd1CaHs+wPtwllM8kOaQ+bIz24XrkyopImVIyiaw5w+/Vk7pxJyKVHsR+CL9sT+v2rqhbm0gtPWWkrsvlI4W2AIJOQ5sAwa6hYYCgveFb6hhthpEVdCPIEALtB7/ihElfKeYAghVDYPtQKGAK4DrAg4AWUBvoajQQUNC9PSEN/I4yAJ2gpJAG6w+feiyfXRsYczq7hCL2JbMZROZypHiUeLl4hXgNmZWNYvilN2RM7jBG9ZAVOeshO5KmO8W3I6ddxWiAzCGwraglIMi3YFXh0/sYTVU+ne7gPhYlkDQrrituLm79t/AX8Xyof0BO6id4YDfcDXvhvngQDsDDcCSOxhPxFDwDJ5KzPL0IL6u4Xo034u14J9D34Uygn8BncC6+jK/jfPwIP8OvcTHDMOqMNiODcuQ+Rp8xZuoxVnBd9ST3MHaMc8WzqtZP76P3lLevvI3l7Sy/h5yMC9OOtoXpxHjQ9sJ1eZnydivrZryZfvSE9pe3XdluaPvH7f74JG2CdpG6qshBEWAhSEMRYCHIRBFgIUhGEWAhyEcRYCFISREgTQdC+ogSC0FuigALQXqKAAtBhooAC0GSigALQZ6KAAtBqooAC0G2igALQcKKAAtBzooAC0HaigALQeaKAAtB8ooAC0H+igBp+ixNE5krBGkrAiwEaSsCLPyDz0I4/b/NZyEasBqvhWhCF+WhDf6L0m8hXgv4LMRT2Uc8lEzwVOYT34R4JUSrJoPPshk9wmlEB+8mRxTUfgAfxdkVHlH5cRZfwFfKeYiBGIFxAD0GPgUGfwGD98s0rNSoGPZEE7xKwbvG4HULvjoWvFlvwFZAsYI0+KiMHlDeAEJMgTcC3oRcIWICrcucgbTg3wrRBDxFiJsYIQpoClgAKERV9wDbKXuRC73IhV4QZGyVfcmt0NXA/Rh0I/ZX9oKWVEBJGBn8TtlaSu+l7Dut4a1Sl1IO42EfQoHDPqXLaZXmcH5Wn2OwSsq2gbXCRwEd4OmXIP2kGl/B/h/zFf5/4O87/2P8nVstf3Nfwd9VPRX7v8JTweAPYYiihZ2OsbAaYg/PhVUMXKB8Ot0ZoxN4KjriemILsaW4gbihuJHYVuwgbiZ2EbcUtxH3E/cXz/pky2hE1vubz8/3aBtgEGAKoLDCYg09yoH0vSr6otwi9RD7/LdZpC+PogkV5JVIa9UoOoZIajyReyq58SCxycooegU5YqD2ThVRtDOJo6ke2AzxdDu8u0JiIeJlwK9nYD0DC1GosJIkeNyRgL8ARViHA0+fxOI0bQxpoTxEtsxxmANYUcO7gAJzw0DEwMA6h7Aqg4Q1PBdAIUoHHcHWAgqswzHg+7MgqyKgs32ADitYLETyIpAoFlZuGCF6P1lF8gU53A4UaJuwUsjAL6Gysioy3/L/Oe5R8g7hl6rcE0+4ZxbhHqr1ZwH3rFByz1pyxEPtlFPKuWc3cA+1BQfIU46Wc49yPbARjB2sLjLC6gusSbDCihloOEag+ADyqNImgGZiJgEd1gbZzpXcwzQDimAHigBh5VZY2VNyzzGggEfEdgWEVR/Wv5KPWdATIqCwwFVsc0CIbVmwJKIxkIa1OBY4knWHGgYBxgBFsGzAqQx4DsKaMAscxgprOcOqyMC/nPSlnARzwAoyDetmjDATwlpzTiWXMJlAgXVhYR1M4CQW1ltZWL8WVv/Y3CqcBF6dcp1tTBVOSqrkJIHzROBRsJ6Qht9JZAsq51UE9YtAf4gCgA46kn0NFFjfEwHHiOKADnzACu8M7kNarZIjBU5iR1fhJPB/RCaQfgHYRclJ9Dd5Z8Gv72uJzcX1xTZiR3FjsZPYWdxE3FTc4m/jLrrafuGrzv8dLhR4whDm4zEgrO0KdpCFdSbBwxC8QEHDscAlGHQVswBwU6X+EHRhGXCDcu0fPEvmJtwFK7xMKcyxYKd2AAe0RhXaUVj5ZeHdBQPlWaF+eOvFwgoZ2wBQ4Ju7ldzPPgQE71n5xgZWrplooJhCG0BrMvAORLDjLLwJYRMAYX2Lyaiiz8rjMGtxq89w4+/jMOrd2RG/rh54dlbE4/So8EMEn16wFfD2DwtvYGAtkJkDaeG9nBAhfOf2sGaAospREvSR4FcIml7JIWBDhBjm+7VHxAOC/yMCeytSr9QsIuEtE4weC/4Pe0bZHhpRJMMvT0s+8uztxPbg3Tf/nX//d2gQGqEV/CXnXxgZE12h1C8kMo4ikfFY6mVXxsZEw8wHzbKWRMabSWn6RioMat8NsfHHkXE2Piv8rj+qsC2s4HcK+h5+81l4fyr4u0pdoA0UiJuVbzbB5ghvw1l4a6T0XoDnhHj3dz4YWDnmUqXkCG9XGUG6hDe5oGWUtjQNULCcAifVrtQgjKBBIiq1DGl/LrQ/F9pPkNVT9iK33GcjfSkiaYiPmc7K9tOS8A5X6W3fULYzt1w3sRBnf7TS8ve8Af0fe39VSt9jMoQ/VNCR0rHCUeZNjn2fOb6kDD3O/kPH0H8POL5kHj6es3+6zeXHXz3/y6o5PipLdEStWnNrJSIk8ZeEIEYSKomG/VXbILm0ndQLtZV6S72Rl+y47ALqKcuT3UX+cg+5Jxop95L3QdHyQHkgmigPloegSfJY+SYUx+3jTqMtigxFBjqoyFacRIcUVxRXYNdvYyJ1CDVHfnQvRVT17z3sz6MlCZQESUJgx96RklHkOd1JzUNJ3QxSpXkIk9wQgsPprra0DMK0FEHaAqL1OLpnLv08Cf0sjwiloDSSNkV/zd890vb3aBaxfVbYFJtCq++h9ziI/G9OYoz3woGtylMVxz1AuocYI6kncaL9h31hsMSJXNH2DiTj749EkgBJMFKRjJGMIz2eI0lEapKfJefIyNyQ3EI16Z4tSJ3u2IJ0pb2kvZFCOkTqi/Slk6VTkJ50unQG4qRLpctQbelKaQoykG6RbkWMNEO6E7HS09LTZGYvSi8iDekL6QuSfit9izRkajI1pC2rLauNdGQ+Mh9USzZENgRJZKNlo5FUNk42Dslk02TTkFyWKCPtkW2RbUGGslRZKsH9sv1IU3ZYdpjgcdkJVEf2QPYAGckKZE8IvpO9I+VLZKVITd5E3oTMkqe8JzIGnlGRh5AZU5EPlw9HMnmePI+UeSx/TPCN/A1S09XS1SLYVLc5QXddd4J9dPsQ7K87gOAy3WUE03XTCR7UPUgwVzeXYJluGdLRs9CzQGI9dz13gkv1liIVvZV6K5Ga3ga9DQQz9TIJZutlE7ylR0aV28/tR8ZcFpeF9Lnj3HHEcT8TPjLhcrgckpvL5RL6Be4CoedxeciAu8xdRix3hbtCyvzG/YZ0uGvcNSTmbnI3CSWfy0cy7h53DxlyT7gnyETRTdENqSo8FB5IofBUeCI9hZfCC9VQeCu8CfZW9Ebain6KfqiWYoBiAJIrBikGISNFoCKQ3BWsCCZlQhQhBEMVoaTkcMVwUnKEYgQpOVIxEhl9H27HHGpOOFngdi9yWJGDI6fA7Ycon//JQUtZgUT/y+3/cvtfz+2ZwO0vcW+Cul/H1SVsyYlSl1LHko0lG0t3l6WVdSnbV8KWupUWlzH01w2JhZxfZk7+kzipeGXJkJIrJb+UtiNlPUlJ1TLv4jMl+aXJpStKL8Av2NuUZpaJy2ZV1lsaQfL/UC99ckW9DFIn3B9ALG6QhNhfyTBJBJGBSEkU0pCMIta3Jlg0MeGbYUhCZnQF7JogBolhiMQEIJbcSW1hMLmfJfcPI+lQSRhJh0vCSZkIUiNLaqQ2cgSplyX1EkspGU1qZ5X2MlAeRNLB5BkYnkGl0lBuLbchebZyO0L9QW8R0uKeck+JKnjOPUdq3AvuBVLnXnGvkAb3hnuDanDvuHeI4T5wH0iZEq4EqXClXCmZR6xgEFaoKFSQpkJNoY5ECg2FBmIVmgpNpKGoqaiJpAodhQ6SKMQKCZlZqUKKairkCjmh6yn0kFjBKTgy77UVBoRipDBCMoWJwhTpKMwV5oQr6irqIjlpsQdwQhiJZUVI/Y+zDR7PMTLq1B8sEH6/smwQzFwUnTUhH0rSfIxq0pkho0tGlowrGVPigQTKQ8gILSNP0/iSOSB3COMbSNJU6jHcTce3Jowphv6z0H8G+q8G/Weh/yz0XwT9V4H+s9B/Veg/A/1noP9qX9B/G+A6G3JE0f6XrgaOpf0HrhXyoWTU/2T/BY+yHrL52KPEQXT3P3KwypM+n6V9I+0cStoptBB/qg4yrmF/qIMh9sIXYVmgLBAohLdhV1iGe6qg3wMSk2tK6UwOShdxpVQaFFxF3iWUSo5L1eb5Ecva/KP76DMY2N1QlVPjzDhzri5Xj7MQ6NDLP9Jx2Rgk7Fe+EyFuD/cjMhHoeCWh6/5N+2nTfdxduEncfNQTdjIMhp0Mw2BPd7pbLdEIqDPstCn/0l1RFSVCv0tdvuUu2PPz6+8y+qa7Zn/DXfib7mJgV9KvH8PVf99dZT5ffRfhjrLZsGPrV9+HRpTtovd96R66sDMvvW8R7On6dffRMYn4pt7t+obefStnMUQffctsf33Pvk3OhNFPo/fDbrd9JH1hl1sPrruyTrrProjU50NmxlM5gkagB4QoQ2gv3e1U2OOU1ugHLam4xgNKXvzuelPJkYprdfhOSpVc4htMrlI7pfh8TCH+XrsqNTCCLZDU5vSQsKcvRssQ/dSIKtGzHST9uZqcC0f3xHYh8c48yRrJehLr3JTckjyXFEle0PhGGiANlYZJh9P4RjpXmkjimf3SA9I86SXpFelN6S1pvvSdtJREKpNIVJJB4w25tlxHvkO+k8QVj+VvSCzB6VqTWKIFjR50Q3TDdOfoziUxRDqJHXJ1r+u+4AYi+p4qudrTBU35Bw+6Skv3Eo4W7ft3/L59/LCViuzf8fsP+C8bxo9qhGPVjB2lL6uGTjWEP+wNXl3OoD/NwZDDVtCEeauHWlVTHnxY4rnSETSt9mSRNpIpd9pdRD8xprKZfiqTShSTr+JaUb8pal5N/Zh4yLTuOtWetL3l9bZT0aioyxy5VFMXiRSULTWu9mSUb6yqtjNfZdZnRyBCEikP+rYRYLWqjMB/Uj89lPWL0kBbqcN3EaudYexVdvlPckbDrvDV5ZwBT6uaHKZ3mbianD/vE4nFuaMcfZdJ+9Su2lMF5oIjc0ziK3KaK3eJZQiNxicSctD50qoY1d4q0f/AUw1ULJWWtjrupfToP6Hv/BP6tOrpdHf6aiU/rdqxLySzr8HSNxt1/6boiuFUSXSlzmmitqQd2qgD9ZdQR07K6aLOJHw2RO6cEWeMvDhTzhR5c/U5a9SLa8TZon6cPeeABnJOnDMazDXlmiFf0o+WyJ9rw7VFgVx7zhUFcx25PigE4rbxJG7TQLH6WvpSNIf0UMRhjswHie8SyBzP5H5AZhDTWZEZQswB5XmUnNnK/3/VeVb5/0IV2pUq6Zt/4bPukbOgynVRlf9vPzrL+5pdJf09+l31rNrv0n+w31940s8EfW1bWI2KNE+8mAPkOIqy0Vl0AV0heBPdA1oBKkJvCZait1iENbAY62IDcphiS5Kipw12wE1xK+yKu5DDhhyegDa4Nx6A/fBQHAEa5n2FB4DgbR0Cfx4hapPsBDp2J6hD02XPUSogpcuUd8UBCr/IcAjKJ9Iy+AFFhuiOsvs4meBZIQ14lrEB+ilITyR4jZlPUVmSps/iYqgtGXK7AOUUUB5AmS5QG7UliNZGcD4gUNi+UHIK9VtwAPVvVNXot+UY+FY4K4OSkGYKAXMA80Gz0RGIwtT2N/jSiO5L42dFCYmghXWqHxFSWCrqE0tCPytT/Nec9EskWP2vrw9rw2mJhpIjAj5xM5TM/FCUQPTjArQEpaD1aCs516MdaC/hg2PoFMEclEc4Iw/dRg+IvXhJ/tPjPbpN3C5VrIUFK0d56hrw130lT1Gu1CnrTVBRmkjTgGaAMmX6KJSZAWXOQJkzQId02QIoSdOyMh4oFBWAstKXUJ4igqcgKI/KaGSLlHTw00qDAK2oNJTAZ2qgTlQ2BJBHf4yJ4bp4fJVrlXdJJUtg5/T7tcrIrLdXdEUKxR7FHuJZgYUt/flPc8nd7099892frftDySfq1kJqH+qVXPlECdq3/JLEP9kVHvLfxHwmf8cn8mn7s79LLu27wadb9nbvZ/IffTq/2Osz+Rr/WX5p9mfyx/6H+dlMxCfbN+gz+fM/kf/9ZvZ/Mff7ciP9w3DQ/8iQfi5auWuMYRIfZ/iDao0G8W7xb2piNSYlznAKIcUwGNtq8jVUVRpqs4y+CuIHq2o0VCXORpwTg0UpPfjuvFUVisHqOjEG8CqnOXJHQ9AIFI6GIX8URU4XevAmVSoTydawE7Zc9Nrp/cHo8KJmqRt8u3ubT0iJ43rycaIsPo7dksIymGGk9Dd6TkTHNMYj9YMjocEn+JoVrcUqpF2joZlsT5GqlOnZw1bK16IX6lKNXoNHBAWHBUaFh9mKeW1KVJOqefr7hYaH+dnW4Q0oRUMq7xrsGxk+IjwgyrhteGREeOTgqGByhwlvRPNZKVeZ7xUc6m/dI2pwaISxR9vWfB29mraN+Sa8k62To7OjfV9y6Vzlko/N+C4tq8lr0nxNqairu4enrQVfV7isE9Y2OCLIP9K4XY/2xu17dGvq6mjnbG3v5ORk7dzaqbFtXd5M6JFBtT3q4R85KtjXn4/DplVHGKsgNg7rIELXYOIwRts0zWpvPJVgKWt8Jyuov+oUy5Gtp0k2LtvkwAxatc11t0bNrevO13Rt/yB1hcGLEQPKwot3J1svfF3bLOF194z7S3t5l3Q9vdrxx7uDTwfKGL12b6fLO6RYa8xFqaenZXbyO+l86Nasho+y4u13N8zUT3tnsUSVj3C+cUB6LOZcp0HJw+/cygrfk9i0w22x5pbIhH4Tzdtq523eYOKQcGXr6MS7t3TG/6AXbzZbcf6n4SfWvU7zsFrZ90zfNPzTgrhj+IOc8S8IO6SHrKepzJsxYLbTrBorDwXcDAu9eDOl09XrC1aMnfCrbkAmbtDI3eJ937tvnxs+1ha9DmlfRzYh02/R1Zwfy1zPDj08wohhiRyticM1yIio8IZkSA21Rboi2YXDr+3SEmx17ikWPHc5bPveh9GpATxkaCbieN0YmZnD2189XSM0nrT6MOpDRsO0LMcMHd6LFjASdeU78x1TOqS0j28bFBUV0bRRI9/IYTah5fNk4xse2igiJJhSG0VEhvuN9I0a0ahiGukswiQSrrQhRfjequpEMFVU1DAWdeE78W7l1zwT31z5gNGjR1f3AP/IT9QcxUtpe+uKtHiN8ipZ9Y8EkqVckuyDfnu6xm1mvkeTwAXmmeFzD7W60WS9VdfpVhv7uNhpDD1T3E9PlMy755ZprZ56ve5RUVP1N93yccb1sLb+3W62sGkfUX9krnuwu250xtlxLk8VW7umbx9p52mukpR42e3Kg3YfEgfr9hnwc3rDngtXevY7kslbqBXmdbEYk5H1ppNjTUXXNbbHfzuvbzrbooZDK6ezK9wMZoyc0Xb55fpeOzc6DZOtyI4etkexeVr0Gie/Q3h+wbVWkwbWEnstUOl7ZVKGZWfJCoe4mY0sBzmJnwfqX4gbcfWG3Ycb9mvutHI0OeDkYxcUfvpywwd4sO+8pIR7j56lManv3vQrvhGb5TBxZ/drtY0KPAve83GqmKixh1XU2LGH09+OjfV4WAZq7FjVUdMkamzid1EWlnw9QeiNqub7+Rv3CA4MI7VSRWZsx9vagjZz4p1tbe14cjgI2qzyko/6Lu1T5rN/kv9ZbZQwY695ltrcJTFj5MX1BhVHJli9f7kmKWGR6541pwdOb9TU3qbOvOj34zcZxeFdY0/rH2BPuT4+vvjNB5Fh0VSNMtOwVUWBLY5bcHctjV6JFrT2LbizTz7riXSJ43XnCK/wZgXb2tfgOx45NJdfrHV61Mk3Ixbqjv5l5v4FP6lPNX5SZ6Pj8+FHb0ahzjNyf5v3OC+6dPb7bYMSWhz80Wj7kKTDx6ekJ27PS2143uuD45Wfh8+/V6esYHjI6Unqo6Juiru7XXiOst26rFFzvNunZsn4Zdn3+t6Z+ipviY7RnPX5U/SO5J1aaYh/KnHbIJ1vn2TiZvf2qPlqtONQj1OTw+r7xD51Dot5sb9Aqvm4XBvFkBEZL6ibulTdVFjmLuq4QlLZKurqdN6QKecGNXlUFni0X272/i17sqTJvCfNriUiumhtB779x5bGgbejlyrShnb2PG9r19DXmXcY4ug/2NqhyRAHawc7e2drZ/vGdtZ+zo62AYPt7BwdAnx/pwLdwvzueqicj9us5+Rkuit046mRzMI/V4HVaqjwiBGgBQm7ED4mXEwYmPLvQArWvJM17wwqcHAVFdiTJ95KFRXY/rMPKNeCn3hEFK9FGy7FuEzE8OgjcWbjGIxUdY2u9jrqkW3mvrp79KUnb0t+Pngx8/m72t5PemQHd1C5eOx0we3ixT4LB9ZytsxUaS+9uWRMwoGALVf3P2Z6mu1pYRbdOnT72+eo74LFMwzO1FiYs8SgHb9pne5P+zr4vGroMHPl3N5OWd0MUk1PiX++HCfe5Phsu2n2XPP1sTNvWBjkBxhOd7Ep68V2PRI2OcXu8c6MRh7e/VXT5bOyDX33jNC6kze2nk6DRe032E12WeTSq+Nos+ml6eKfZtxVl3c/3rCvrU+ToYs2rk0IWWQZ/vzY9kcH2+udGdItdpeXfoc5yetCM8MsTry1MMp+YrxJM/35Wc0lC24PXR48eVXjS6HGpVMvlmXtTWpco7SF7EiybFNm/JmncUe29DRvy+1ymxodn/Mud3lLxa+y6fdnrwwyTwhqtumnmG717qubdPEtWfaDvKv9Lu9B7pc6/eg8p8zmWvrAtW1DTkafS98fMnfysGmRmx+t+7Dymn5ek2K/k6Eu6nfHT07fdmDNvnHnFnmvHdv7tKTDkFyTp8XNj9lqvmnk4rfOKXyQR8s97RLdUzRnHprY+/VPgdMGX12RfCx71unwDrcybRY8SX+dxocWDO248eGiUdkH1Y+VNnu1fYST6g7vc4oL+18tODXNoChmKHbfXTt2RMZ5H9OWTXtzNxIKA4913NDot7ozWwzIKXBoN8/wwDytUXEuT49dtl4lYua4vXt6jTnHriZGQI0YgaeCEdAYrBskbLhj8LELOxDUqUaN+fWm/1Bk5YcVuizhRlsFr/c7Yo0KZiVs2FDQm+aVetMzPJwoT8K6wQHBvoOj/I1bj4wKCo8MjhpDlTvvxDvw9rZ2jvZ8E6Lc7Wzh0p6nl/+cD/05/b5y1bD0G1fd5jcYH2KjuHXw9p3ji7ubeWw7e43rZq5T+MuGX7psi+KNaz1Wu+i1UN5xQe0287cn9+PrXUEhD8YdLJiupvNGW5T8bPoZo9P25tOWF70MNLAqHnc/wfDR/W5rVh0x63Fq9vv252rkDEjNSWsjWv1u/bAfAi9Z/ubaIy0+566lq43F1nj3np5a+azVh6GJiXzYtBd9+OXvJ+YlZTwwSZr4Nlf6Qn1Pj1DPne0TV7qhTh0CalnUD9iYlH9eNbbT6ndTNtTqIKsRt3LKk57RpXiJoYf6VCTmXZ/suW7muv+YtdfK1DrRrW1Hn1l6o9nkH1YNZnYZ1kwvfrN0Bz5r2tmr7J1K1lFjzXL9voWMyAZep0LjqPAs+VdFn1frXVL1bagjEhH+i+fFqjWUNkGOKQXxscmCbo5N5GNnx8i0t8YNauVtkXS3rrS4wS2NHgv75K9d5bt28HdnzzjxmG26qzqlrNvWZUTvl2pSG3/eQzAKHXlih1LaprSOb/nlfnFFdiR5IlXlYBC8qhgEN96Vb1fFIDh/jU9M+9FWqPUL/WEy1uKkGVn92HaNrz3cuW301bNjunfF6TZRw31CtaRbzh4aN3evzQXJ6lmhQ/b2Yk53M5Z6LL42ttXtXvtTey8xuGWI47fujy6amVPQDBfePjRXQyV7ttvtZz3k19y3zM+/P3voxZgj9xYUqTaayj6c18DcNOLD6+L86MU2Nd+o3Y44wHVbPidEI3Lh3lVNlgVaH++u/WhIv5a6yTONW95W07d7d8a20yjbFg0jNbMfRbQom6ohvXFUY/CcZ5f26j3uNnPScceGA9YcfnxggmabcRd6RJoU8qf2R/v388F6GjLt3Cuy5FfNfwzonWHd6P67qfFnuns/WB6xYNjWJl0uvB5zeDM3dkj9p6uX1ndQHa0/5GSLOqFGcc80f7Laf65txt13BRN23Vm7Mcpxb7fjw80k9UZpNvecNbyva1vZgYyMtK6B2SvblMWMMYlZIecDHrSRDNDPXmFqktP2YcOH+1+6nbG6cNkupku9Bm7mA/s+8n66/vri5aeahh+MtYhSrVU4yuTw0rgjFl6704e2mL5q1OCdYauk6w9v7vBMEl4yw27YjtIb3bNnmZ0MOLjccJrEj2lhndpn7t58k7u70k757oz2UrnQ2sZj64K0ddFbMlIWjdT/df406UjTRnYb1cNSfGbVPZzydMopk7zHddxPLinsePMN9g+frjkhOzj7XtijDUlnbeuXaR/36Xe5a+1Vl983WtHSpqduyEnpmhI+Tm0sH6cypNwUaCfmgilgPw4DYhO+iyq243lBIOt/iUBWRgS2xGw42/GOTQSj0RgubXl6+Y9HLHHMH20HQ20HQ2wHkbktz95Hig1stl0O2xwn7uqwr2h3b5OVbWo3CHnY12PzXlVnfVHHfZOytOpccwo5Ibms+cz56GLVtOwmF7HMts356TXH+E2buGCQ+bDUFR2XPQwakHtjaY8dGlZZqb9uarh9bI3US4v6nBqkr/IwYNQDO896kkb3t6h7nMtot6f/5WM27MgtQS9Oh75o2m+V7kvXfTed/baG+TlGr0/x1bE+3+qHt3euq9W82G/Muo7179c8lCIdfWhBi6cf7jTsKzbq6m25emzkTUnTPR0HXH7ypO28yb+O2zEuvvavLumz+j+Y7j5Fv2hVoz75ic2st9v3Pr7HpdTufAbbIn1H6nznibnLY6xedfOeZ+JYN6tJmN+kHvuW6WxTmE05/XIfGz/7zcBnOZ6HZy2YdiDTJKruQM5y9xkLS+e6yU06NT43Pn3+dgOzDZsCCgYbDb1l2XH5wITbdfufN+ns4nlsV6+W5uyzX8b6NLpodieiv05319EZb9GtA1uZuIFXM+UZB2tf6Nn5fpNVOg/NOh7g9rYb3z7/SFbk2JuR981vHHZdfPzpUYNeVyfPLujakd+wZc6NAp+VqcXX0gJuH0mKHfck70nn+x3rb5Bart8wITDm3owh0QN3NJpyqdeyfodHW1o+fxKaZTnXam4rJ/cjt6a2m36sRpfjF9a1bRS18E3Y22jj3lbS/oMWLnFxt59yJS1B7/qKbi8XpR1wTRmWnHszL2FWhe18Qmznw2rMX6XxrDYuUVTcIGNEWnU0UA80Eg1BbVHr39vVPxjlqhFPpHVTxjax7Y8ylW63Hm34yfYXs+kOfF/BuNElVPeUrimd4zt+1aIPkVsitURYK4KSgbz9QDs7MHMDqpg5T96D71bFzLX5MjP3ifqj+NiVtPHGotgkPnYBHzuvYpBsWD52Mt+y/HEM1rX/XJjlF+47gvQsOHRw5BjfiBE2QVGhfKuKChjeoY6dsSHqgvxRIBqMhqGBKAJWlYORLxpDrkagKEKnK8yh5AwjKRtjw+oCscCi+HXJN73G6NucvxwVaLpUc1GtW77zF7dZNCF3jFbiEf+BNlYub7MifwmdXHqo5QONU80Od9i05kXwVd/Dpo7rkvr7T0mcMNPVo+dlrfnjc/U7G7xo3mamZ05aScgdFzWb+kvvtai97sIuw9ELmtx+6HeyXYvosWYvpBPWJ0ZNnv3ydD3GtcHRGeL9azepaC19EvQ+yGZhSoOWDUJ6d/Q1qhEc1jd5Uf7kl5lzX7g2vF7cLOeg49Owutvvplo8ybn2Qjt1sWVSclftFppF6tPzjLLsuNvPjluf9Vmxs2MTjRMaR09s2353x69X5Qnd2/d2thtuoT8p/aXF2+tWTY2Dk3f0mR4UFr5hT1RWKxXV9biBpUtcS2nXAM3MjK6vbs2dZBAun9B+w6i7rRr4r8nq7zkkPsvQt3FS/I0rL94W6a5aYnHr53VJOYX9fVvf8VFbNs1FdbTqL6rpI41khwYP3vXstxO1RYdutP5J27Lwun+jgqTXq/otuozyVrke7PMiaV2Nzm7ixTFGOaj+8fSl61q2H13H8UTu6tUrx441fe+20GjLhw5mMa9WvD0csqdz0u3HI6P1Cx45LR7DdS7LyzALGnkv9X3xzMeaMY+Cm6UW809EXebcuDEy1Hdei1+We3dzPxzTy3RVdC07k7FPW2ukt/yw8cza/kdWJSztNdy7m1v7zDYnl47y0YhxCykZs/LIwdDQoSc9R0hrjvX42TZOlMbHibYyGPOxC/9pw1X9cmDly5GU2GNU+SiZuAZrq1X1zQtpReWVpq32/80AWVbUQBmhkcUQWLT9neKyvO/Tx2uNQvc19+ZOaNn2WuqeQQqSFh7DMIOQBVoNGgy+4IxVBMxioMmbNGB2UmAIAWY0UKZLB4onAlkZDJUL1RpUcObskMqC/PSixIKMSgW0upmliZEh2L1vWfO2eflR6my3DeOC9HdvDmS3N+STrVpX7h4Ss9/chN9c4HJwmkoo262giaIvZswSyyyK1lm3+YmepoAqnxvX78z2Se45xyaleN8+1MVyP+O9Ydv1e1tOrZ34tndZYH1+xUpGlj1/92zfeeLl279H2xluPd89N2XxJevjOcfjf7/8vUv0wnSLnLfabJ/eu7cLVlyQ/R9uffZRhFzYi+MdHEKHluXMnPP09wHN1B82NsxrPLYoOVYpLt/zTOTMBOff0dJv/cskHFf9XenB32UduiPr0J5lRneTBfaZRfSx6tnLTIhd1Pv8hVTniykzzlZ+s3stk93El8V4ak+YWsYSXvn7aiE3vHWiFbsWNjFpAJsnKog4YjNsYhIFCgmCk2bfgHXEsc+0IaXJWAMJ5CTJjZgxZARaDpdhNeQHDxybGZoaGYJAFEaKdH7ZYj0vQOP4a7Ue0bwrBzJkZ2+rROsygdKKoZ9wPVNnOLNMpNf0ktdczV6axlKax2M/33r86V3N6imzlV8YpQu95nl062qvn2qW2uL7sxriZupeMotLFVl58/H6OrHcV47iF0ru/s9/z7nQad4nr8J6raCoefLvmDbrek5xUbzy7ic3e+Lr0Mo6jsq66QXC8QtSozVY5dOObzqRNvfKu8R7jmXu2//eu/X0b9O/p8mR53c93jSdN/PIpcKpH7+Wuex8cKTy4r9zS3ZwzzdkDX7qs2P3TvnQ2IWfW15Oute7ZwN342vhuXZmWdlzzsQ6Xny55OrtxZtf3LrNUyscccNJ50re7uua1i2vnXgPNLMHPrT6vDrSZ1NXGeP79Yc0P5Uu7TK0vNPrwgAAh8DNlw0KZW5kc3RyZWFtDQplbmRvYmoNCjE5IDAgb2JqDQo8PC9UeXBlL1hSZWYvU2l6ZSAxOS9XWyAxIDQgMl0gL1Jvb3QgMSAwIFIvSW5mbyA5IDAgUi9JRFs8QThGQkJEMkIwRDc5QTQ0RkJBNDEwODYwQTY3Qjk3OTQ+PEE4RkJCRDJCMEQ3OUE0NEZCQTQxMDg2MEE2N0I5Nzk0Pl0gL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzY+Pg0Kc3RyZWFtDQp4nGNgAIL//xmBpCADA4iqhVBbwRTjYTDF1AWmmI3AFIsihAqDUN1AeaAGAQYmCMUMoVggFCOEgiphBWpgbQLrY2eCUKcZGACLmAe+DQplbmRzdHJlYW0NCmVuZG9iag0KeHJlZg0KMCAyMA0KMDAwMDAwMDAxMCA2NTUzNSBmDQowMDAwMDAwMDE3IDAwMDAwIG4NCjAwMDAwMDAxMjUgMDAwMDAgbg0KMDAwMDAwMDE4MSAwMDAwMCBuDQowMDAwMDAwNDUxIDAwMDAwIG4NCjAwMDAwMDA2NTAgMDAwMDAgbg0KMDAwMDAwMDgxOCAwMDAwMCBuDQowMDAwMDAxMDU3IDAwMDAwIG4NCjAwMDAwMDExMTAgMDAwMDAgbg0KMDAwMDAwMTE2MyAwMDAwMCBuDQowMDAwMDAwMDExIDY1NTM1IGYNCjAwMDAwMDAwMTIgNjU1MzUgZg0KMDAwMDAwMDAxMyA2NTUzNSBmDQowMDAwMDAwMDE0IDY1NTM1IGYNCjAwMDAwMDAwMTUgNjU1MzUgZg0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDE3OTQgMDAwMDAgbg0KMDAwMDAwMTk5NSAwMDAwMCBuDQowMDAwMTgwOTEzIDAwMDAwIG4NCnRyYWlsZXINCjw8L1NpemUgMjAvUm9vdCAxIDAgUi9JbmZvIDkgMCBSL0lEWzxBOEZCQkQyQjBENzlBNDRGQkE0MTA4NjBBNjdCOTc5ND48QThGQkJEMkIwRDc5QTQ0RkJBNDEwODYwQTY3Qjk3OTQ+XSA+Pg0Kc3RhcnR4cmVmDQoxODExODgNCiUlRU9GDQp4cmVmDQowIDANCnRyYWlsZXINCjw8L1NpemUgMjAvUm9vdCAxIDAgUi9JbmZvIDkgMCBSL0lEWzxBOEZCQkQyQjBENzlBNDRGQkE0MTA4NjBBNjdCOTc5ND48QThGQkJEMkIwRDc5QTQ0RkJBNDEwODYwQTY3Qjk3OTQ+XSAvUHJldiAxODExODgvWFJlZlN0bSAxODA5MTM+Pg0Kc3RhcnR4cmVmDQoxODE3NDUNCiUlRU9G</content> + <contentType>application/pdf</contentType> + <id>assistants.3F4C5F9B9737333933B9356E49AA35EB3D9272B9</id> + <name>test.pdf</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhkZS1ERSkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4zMiA4NDEuOTJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI1Pj4NCnN0cmVhbQ0KeJxT0A9QsLHR93X2dFEwsLNTcHJxVnAK4eXSdzNUMDTQs7RQCEnj5TJUMABCQwVzAz0LMwVzMwM9MyOFkFygMvdgc4X0Yl4uA4V0MM8CynPn5YrWKEktLtGMVQjx4uVyBZoJMhdmkoWFnoEJsknRGgpIShVcfZ0VAKkCHzkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0YxL0Jhc2VGb250L0FCQ0RFRStDYWxpYnJpL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTE2L1dpZHRocyAxNyAwIFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStDYWxpYnJpL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNj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</content> + <contentType>application/pdf</contentType> + <id>assistants.7C9AC0743CE065A74E0DC2D85F9682BFC49035BB</id> + <name>test (1).pdf</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>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ZW5kb2JqDQozNCAwIG9iag0KPDwNCi9PcGVuQWN0aW9uIFsgMSAwIFIgL1hZWiBudWxsIG51bGwgMSBdDQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL1BhZ2VzIDE2IDAgUg0KPj4NCmVuZG9iag0KMzUgMCBvYmoNCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA0MTQwOTAxNDUrMDInMDAnKQ0KL1Byb2R1Y2VyIChjaXQgcGRmc3VpdGUgXCh3d3cuY2l0LmRlXCkpDQovQXV0aG9yIDxmZWZmMDA0YjAwNmMwMDYxMDA3NTAwNzMwMDIwMDA1NzAwNjEwMDZlMDA2ZTAwNjUwMDcyPg0KPj4NCmVuZG9iag0KeHJlZg0KMCAzNiANCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDA2OCAwMDAwMCBuDQowMDAwMDAwMjU1IDAwMDAwIG4NCjAwMDAwMTI3MjYgMDAwMDAgbg0KMDAwMDAxMjc1MCAwMDAwMCBuDQowMDAwMDQ0MzE5IDAwMDAwIG4NCjAwMDAwNTQxODMgMDAwMDAgbg0KMDAwMDA1NDIwNiAwMDAwMCBuDQowMDAwMDU0MzkzIDAwMDAwIG4NCjAwMDAwNjU3NTEgMDAwMDAgbg0KMDAwMDA2NTc3NSAwMDAwMCBuDQowMDAwMDY1OTY0IDAwMDAwIG4NCjAwMDAwNzc4NTkgMDAwMDAgbg0KMDAwMDA3Nzg4NCAwMDAwMCBuDQowMDAwMDc4MDczIDAwMDAwIG4NCjAwMDAwODkwNTkgMDAwMDAgbg0KMDAwMDA4OTA4NCAwMDAwMCBuDQowMDAwMDg5MjE3IDAwMDAwIG4NCjAwMDAwOTEyNjAgMDAwMDAgbg0KMDAwMDA5MTI4NCAwMDAwMCBuDQowMDAwMDkxNDk3IDAwMDAwIG4NCjAwMDAwOTE4MDYgMDAwMDAgbg0KMDAwMDA5MTk5MCAwMDAwMCBuDQowMDAwMTAwNDEyIDAwMDAwIG4NCjAwMDAxMDA0MzYgMDAwMDAgbg0KMDAwMDEwMDY1OCAwMDAwMCBuDQowMDAwMTAxMjA5IDAwMDAwIG4NCjAwMDAxMDE2MjMgMDAwMDAgbg0KMDAwMDExMDE3MCAwMDAwMCBuDQowMDAwMTEwMTk0IDAwMDAwIG4NCjAwMDAxMTA0MTMgMDAwMDAgbg0KMDAwMDExMDk5MiAwMDAwMCBuDQowMDAwMTExNDI4IDAwMDAwIG4NCjAwMDAxMTE0OTAgMDAwMDAgbg0KMDAwMDExMTYwOCAwMDAwMCBuDQowMDAwMTExNzIwIDAwMDAwIG4NCnRyYWlsZXINCjw8DQovSW5mbyAzNSAwIFINCi9JRCBbIDw4YmVlYWQzNmY0ODliNDBkNzk2NWZhNDQ5ODVjOWFmNT4gPDAxMDJlNWRhZGQwNTgzMzQ4YTMzN2NiOTc3ZjE0MzQ5PiBdDQovUm9vdCAzNCAwIFINCi9TaXplIDM2DQovRG9jQ2hlY2tzdW0gLzA1NjMzRjY4QUU3RkI1MUU5MzA1QTBDNDdEMTI3MjlGDQo+Pg0Kc3RhcnR4cmVmDQoxMTE5MzMNCiUlRU9GDQo=</content> + <contentType>application/pdf</contentType> + <id>myForm-pdf</id> + <name>Eingliederungshilfe-Antrag.pdf</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPC9oZWFkPgo8Ym9keSBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTFwdDsiPgogICAgICAgICAgICBTZWhyIGdlZWhydGUvciBBbnRyYWdzdGVsbGVyKmluLCA8YnI+Cjxicj4KSWhyIEFudHJhZyB3dXJkZSBlcmZvbGdyZWljaCAmdXVtbDtiZXJtaXR0ZWx0Ljxicj4KPGJyPgpCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZGllIEJlYXJiZWl0dW5nc3plaXQgbmFjaCBFaW5nYW5nIGFsbGVyIFVudGVybGFnZW4gMiBXb2NoZW4gYmlzIDIgTW9uYXRlIGJldHImYXVtbDtndC4gU2llIGVyaGFsdGVuIHVuYXVmZ2Vmb3JkZXJ0IGVpbmUgUiZ1dW1sO2NrbWVsZHVuZyB6dSBJaHJlbSBBbnRyYWcuPGJyPgo8YnI+IApJaHJlIFZvcmdhbmdzbnVtbWVyIGxhdXRldDogCjUxLzUxLjIwLzIwMjEwNDE0MzI0MTIwMDkwMjA3LgpCaXR0ZSBnZWJlbiBTaWUgZGllc2UgVm9yZ2FuZ3NudW1tZXIgYmVpIGFsbGVuIEFuZnJhZ2VuIHp1IElocmVtIEFudHJhZyBhbi48YnI+Cjxicj4KPGJyPgpNaXQgZnJlbmRsaWNoZW4gR3ImdXVtbDsmc3psaWc7ZW48YnI+CklociBLcmVpcyBTZWdlYmVyZzxicj4KPGJyPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+Cjxicj4KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDlwdDsiPktyZWlzIFNlZ2ViZXJnIDxicj4KRWluZ2xpZWRlcnVuZ3NoaWxmZSBmJnV1bWw7ciBNaW5kZXJqJmF1bWw7aHJpZ2U8YnI+Cjxicj4KUG9zdGFuc2NocmlmdDo8YnI+CkhhbWJ1cmdlciBTdHIuIDMwPGJyPgoyMzc5NSBCYWQgU2VnZWJlcmc8YnI+Cjxicj4KQmVzdWNoZXJhbnNjaHJpZnQ6PGJyPgpCdXJnZmVsZHN0ci4gNDFhIDxicj4KMjM3OTUgQmFkIFNlZ2ViZXJnIDxicj4KPGJyPgpGYXg6ICs0OTQ1NTEvOTUxLTk1NjUgPGJyPgpFLU1haWw6IDxhIGhlcmY9Im1haWx0bzppbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgIj5pbnRlZ3JhdGlvbi5raW5kZXJAc2VnZWJlcmcuZGUgPC9hPgo8YnI+CkludGVybmV0OiA8YSBocmVmPSJ3d3cuc2VnZWJlcmcuZGUiPnd3dy5zZWdlYmVyZy5kZTwvYT48L3NwYW4+Cjxicj4KPC9ib2R5Pgo8L2h0bWw+Cg==</content> + <contentType>text/xml</contentType> + <id>EmailBodyTemplate</id> + <name>EmailBodyTemplate.xml</name> + </attachments> + <caller/> + <client>Schleswig-Holstein</client> + <clientId>land</clientId> + <customParameters> + <key>AbsenderBehoerdenkennung</key> + <value>afmsh:afm_eEingliederungshilfe</value> + </customParameters> + <customParameters> + <key>EmailAdresseSachbearbeitung</key> + <value>oscar.mourbare@dataport.de</value> + </customParameters> + <customParameters> + <key>EmailSubjectTemplate</key> + <value>EGH Stage Deposit Prüfung</value> + </customParameters> + <customParameters> + <key>EmpfaengerBehoerdenkennung</key> + <value>afmsh:12345_eEingliederungshilfe</value> + </customParameters> + <customParameters> + <key>mailboxguid</key> + <value>c5a446b7-d6b0-4c61-9ad2-aae600857982</value> + </customParameters> + <customParameters> + <key>PostfachAttachmentIds</key> + <value>myForm-pdf</value> + </customParameters> + <customParameters> + <key>PostfachBodyTemplate</key> + <value>Sehr geehrte/r Antragsteller*in, <br/><br/>Ihr Antrag wurde erfolgreich übermittelt.<br/><br/>Bitte beachten Sie, dass die Bearbeitungszeit nach Eingang aller Unterlagen 2 Wochen bis 2 Monate beträgt. Sie erhalten unaufgefordert eine Rückmeldung zu Ihrem Antrag.<br/><br/>Ihre Vorgangsnummer finden Sie im angehängten Dokument. <br/>Bitte geben Sie diese Vorgangsnummer bei allen Anfragen zu Ihrem Antrag an.<br/><br/><br/>Mit frendlichen Grüßen<br/>Ihr Kreis Segeberg<br/><br/>---------------------------------------------------<br/><br/>Kreis Segeberg <br/>Eingliederungshilfe für Minderjährige<br/><br/>Postanschrift:<br/>Hamburger Str. 30<br/>23795 Bad Segeberg<br/><br/>Besucheranschrift:<br/>Burgfeldstr. 41a <br/>23795 Bad Segeberg <br/><br/>Fax: +494551/951-9565 <br/>E-Mail: <a herf="mailto:integration.kinder@segeberg.de">integration.kinder@segeberg.de</a><br/>Internet: <a href="www.segeberg.de">www.segeberg.de</a><br/></value> + </customParameters> + <customParameters> + <key>PostfachIsHtml</key> + <value>true</value> + </customParameters> + <customParameters> + <key>PostfachSubjectTemplate</key> + <value>Ihr Antrag auf Eingliederungshilfe für Minderjährige</value> + </customParameters> + <customer>Kreis Segeberg</customer> + <customerId>kreis-segeberg/kreis-segeberg</customerId> + <form>Eingliederungshilfe Minderjährige</form> + <formId>pfm_postfachmitteilung</formId> + <id>20210414324120090207</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> + <sender>stage.afm.schleswig-holstein.de</sender> + <timestamp>2021-04-14T09:01:49.030+02:00</timestamp> + <username>de937a17-b156-4aaf-9476-2658bc872659</username> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> diff --git a/intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml b/intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml new file mode 100644 index 0000000000000000000000000000000000000000..75607c13c10852a0c0bbcd3c87d794cd1418f9af --- /dev/null +++ b/intelliform-adapter/src/main/scripts/vorgang-GewerbeAnmeldung.xml @@ -0,0 +1,55 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiDQoJeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiINCgl0OmlkPSIyMDIwMTIwMjU3NTIzMDQ0MzAwNCIgdDp0aW1lc3RhbXA9IjIwMjAtMTItMDJUMTQ6NTg6NDMuNzkwWiINCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIgdDpmb3JtPSJHZXdlcmJlYW5tZWxkdW5nIg0KCXQ6Zm9ybS1pZD0iZUdld2VyYmUvZUdld2VyYmVBbm1lbGR1bmciDQoJdDpjdXN0b21lcj0iRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIiIHQ6Y3VzdG9tZXItaWQ9ImVhLXNoIg0KCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4NCgk8R3VlbHRpZ0FiPjIwMjAtMTEtMDI8L0d1ZWx0aWdBYj4NCgk8R3J1bmRBbm1lbGR1bmdTY2hsdWVzc2VsPjAxPC9HcnVuZEFubWVsZHVuZ1NjaGx1ZXNzZWw+DQoJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgk8TmllZGVybGFzc3VuZ0FydD4xPC9OaWVkZXJsYXNzdW5nQXJ0Pg0KCTxJc3RSZWlzZWdld2VyYmU+ZmFsc2U8L0lzdFJlaXNlZ2V3ZXJiZT4NCgk8QmV0cmllYkFydEluZHVzdHJpZT5mYWxzZTwvQmV0cmllYkFydEluZHVzdHJpZT4NCgk8QmV0cmllYkFydEhhbmR3ZXJrPmZhbHNlPC9CZXRyaWViQXJ0SGFuZHdlcms+DQoJPEJldHJpZWJBcnRIYW5kZWw+ZmFsc2U8L0JldHJpZWJBcnRIYW5kZWw+DQoJPEJldHJpZWJBcnRTb25zdGlnZXM+dHJ1ZTwvQmV0cmllYkFydFNvbnN0aWdlcz4NCgk8cmVjaHRzZm9ybT5uaWNodCBlaW5nZXRyYWdlbmVzIEVpbnplbHVudGVybmVobWVuPC9yZWNodHNmb3JtPg0KCTxyZm0+MTgwPC9yZm0+DQoJPHJlZ2lzdGVyYXJ0IC8+DQoJPG1pbjJnZXNlbGxzY2hhZnRlcj5mYWxzZTwvbWluMmdlc2VsbHNjaGFmdGVyPg0KCTxnZXNldHpsaWNoZXJ2ZXJ0cmV0ZXI+SW5oYWJlcjwvZ2VzZXR6bGljaGVydmVydHJldGVyPg0KCTxCZXRyaWViPg0KCQk8SUQ+OTEwODM4PC9JRD4NCgkJPGdlc2NoYWVmdHNiZXplaWNobnVuZz5PWkctQ29uc3VsdGluZzwvZ2VzY2hhZWZ0c2JlemVpY2hudW5nPg0KCQk8RWludHJhZ3VuZ1BMWiAvPg0KCQk8RWludHJhZ3VuZ09ydCAvPg0KCQk8R2VyaWNodFNjaGx1ZXNzZWwgLz4NCgk8L0JldHJpZWI+DQoJPHNoX3N0cmFzc2U+UmV2ZW50bG91YWxsZTwvc2hfc3RyYXNzZT4NCgk8c2hfenVzYXR6IC8+DQoJPHNoX2hhdXNudW1tZXI+Njwvc2hfaGF1c251bW1lcj4NCgk8c2hfcGx6PjI0MTA1PC9zaF9wbHo+DQoJPG9ydF9hdXN3YWhsPjkwMDY0MDIkMDEwMDIwMDA8L29ydF9hdXN3YWhsPg0KCTxzaF9vcnRzdGVpbCAvPg0KCTxvcnQ+S2llbDwvb3J0Pg0KCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJPEdlYmlldEdOUjk0X0dOUj4wMTAwMjAwMDwvR2ViaWV0R05SOTRfR05SPg0KCTxzdGFhdD4wMDA8L3N0YWF0Pg0KCTxpc28zMTY2bnVtZXJpc2NoPjI3NjwvaXNvMzE2Nm51bWVyaXNjaD4NCgk8a29udF90ZWxlZm9ubnVtbWVyPjA0MzEgMTIzPC9rb250X3RlbGVmb25udW1tZXI+DQoJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCTxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4NCgk8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPg0KCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgk8Yl9rb250X3ZvcndhaGxfdGVsZWZvbj4wNDMxPC9iX2tvbnRfdm9yd2FobF90ZWxlZm9uPg0KCTxiX2tvbnRfdGVsZWZvbj4xMjM8L2Jfa29udF90ZWxlZm9uPg0KCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgk8Yl9rb250X3RlbGVmYXg+OTY1NDwvYl9rb250X3RlbGVmYXg+DQoJPFRhZXRpZ2tlaXRlbkdlc2FtdD4NCgkJPFRhZXRpZ2tlaXRlbkdlc2FtdC1pdGVtPg0KCQkJPGF1c3dhaGxfb2JlcmJlZ3JpZmY+UzwvYXVzd2FobF9vYmVyYmVncmlmZj4NCgkJCTxhdXN3YWhsX2thdGVnb3JpZT45NjwvYXVzd2FobF9rYXRlZ29yaWU+DQoJCQk8Y2hlY2tfdGFldGlna2VpdHNzY2h3ZXJwdW5rdD50cnVlPC9jaGVja190YWV0aWdrZWl0c3NjaHdlcnB1bmt0Pg0KCQkJPGFfdGFldGlna2VpdD5PWkctRW50d2lja2x1bmc8L2FfdGFldGlna2VpdD4NCgkJCTxiX29iZXJiZWdyaWZmPlMgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIERpZW5zdGxlaXN0dW5nZW48L2Jfb2JlcmJlZ3JpZmY+DQoJCQk8Yl9rYXRlZ29yaWU+OTYgRXJicmluZ3VuZyB2b24gc29uc3RpZ2VuIMO8YmVyd2llZ2VuZCBwZXJzw7ZubGljaGVuDQoJCQkJRGllbnN0bGVpc3R1bmdlbjwvYl9rYXRlZ29yaWU+DQoJCQk8Yl91bnRlcmtsYXNzZT45Ni4wOS4wIEVyYnJpbmd1bmcgdm9uIHNvbnN0aWdlbiBEaWVuc3RsZWlzdHVuZ2VuIGEuDQoJCQkJbi4gZy48L2JfdW50ZXJrbGFzc2U+DQoJCQk8Yl91bnRlcmtsYXNzZV9zY2hsdWVzc2VsPjk2LjA5LjA8L2JfdW50ZXJrbGFzc2Vfc2NobHVlc3NlbD4NCgkJCTxiX2lua2w+LSBUw6R0aWdrZWl0ZW4gdm9uIEFzdHJvbG9naW5uZW4sIEFzdHJvbG9nZW4gU3Bpcml0aXN0aW5uZW51bmQNCgkJCQlTcGlyaXRpc3RlbiAtIEVyYnJpbmd1bmcgcGVyc8O2bmxpY2hlciBEaWVuc3RsZWlzdHVuZ2VuIHdpZQ0KCQkJCUJlZ2xlaXRkaWVuc3RlLCBIZWlyYXRzLSB1bmQgUGFydG5lcnZlcm1pdHRsdW5nIC0gQmV0cmV1dW5nIHZvbg0KCQkJCUhhdXN0aWVyZW4gd2llIFVudGVyYnJpbmd1bmcsIFBmbGVnZSwgQmVhdWZzaWNodGlndW5nIHVuZCBEcmVzc3VyIC0NCgkJCQlUw6R0aWdrZWl0ZW4gdm9uIEFobmVuZm9yc2NodW5nc2luc3RpdHV0ZW4gLSBUw6R0aWdrZWl0ZW4gdm9uDQoJCQkJVMOkdG93aWVydW5ncy0gdW5kIFBpZXJjaW5nc3R1ZGlvcyAtIFTDpHRpZ2tlaXRlbiB2b24gU2NodWhwdXR6ZXJpbm5lbg0KCQkJCXVuZCBTY2h1aHB1dHplcm4sIFRyw6RnZXJpbm5lbiB1bmQgVHLDpGdlcm4sIFBhcmtwbGF0enp1d2Vpc2VyaW5uZW4NCgkJCQl1bmQgLXp1d2Vpc2VybiB1c3cuIC0gQmV0cmllYiB2b24gbcO8bnpiZXRyaWViZW5lbiBHZXLDpHRlbiBmw7xyDQoJCQkJcGVyc8O2bmxpY2hlIERpZW5zdGxlaXN0dW5nZW4gd2llIEZvdG9hdXRvbWF0ZW4sIFdhYWdlbiwNCgkJCQlCbHV0ZHJ1Y2ttZXNzZXJuLCBTY2hsaWXDn2bDpGNoZXJuIHVzdy48L2JfaW5rbD4NCgkJPC9UYWV0aWdrZWl0ZW5HZXNhbXQtaXRlbT4NCgk8L1RhZXRpZ2tlaXRlbkdlc2FtdD4NCgk8SXN0TmViZW5lcndlcmI+ZmFsc2U8L0lzdE5lYmVuZXJ3ZXJiPg0KCTxBbnphaGxWb2xsemVpdEJlc2NoYWVmdGlndGU+MTwvQW56YWhsVm9sbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxBbnphaGxUZWlsemVpdEJlc2NoYWVmdGlndGU+MDwvQW56YWhsVGVpbHplaXRCZXNjaGFlZnRpZ3RlPg0KCTxCZXRlaWxpZ3RlUGVyc29uPg0KCQk8QmV0ZWlsaWd0ZVBlcnNvbi1pdGVtPg0KCQkJPHBlcnNvbkZ1bmt0aW9uPjE8L3BlcnNvbkZ1bmt0aW9uPg0KCQkJPHBlcnNvbkZ1bmt0aW9uVGV4dD5FaW56ZWxnZXdlcmJldHJlaWJlbmRlcjwvcGVyc29uRnVua3Rpb25UZXh0Pg0KCQkJPGRva3RvcmdyYWRTY2hsdWVzc2VsIC8+DQoJCQk8ZG9rdG9yZ3JhZCAvPg0KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+DQoJCQk8dm9ybmFtZT5NYXg8L3Zvcm5hbWU+DQoJCQk8Z2VzY2hsZWNodFRleHQ+bcOkbm5saWNoPC9nZXNjaGxlY2h0VGV4dD4NCgkJCTxnZXNjaGxlY2h0PjE8L2dlc2NobGVjaHQ+DQoJCQk8Z2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L2dlYnVydHNuYW1lPg0KCQkJPGdlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9nZWJ1cnRzZGF0dW0+DQoJCQk8Z2VidXJ0c29ydD5GbGVuc2J1cmc8L2dlYnVydHNvcnQ+DQoJCQk8Z2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2dlYnVydHNsYW5kPg0KCQkJPGdlYnVydHNsYW5kU2NobHVlc2VsPjAwMDwvZ2VidXJ0c2xhbmRTY2hsdWVzZWw+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+DQoJCQk8c3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPjAwMDwvc3RhYXRzYW5nZWhvZXJpZ2tlaXRTY2hsdWVzc2VsPg0KCQkJPGFkcl9zdHJhc3NlPkvDtm5pZ3N3ZWc8L2Fkcl9zdHJhc3NlPg0KCQkJPGFkcl96dXNhdHo+QXBwYXJ0bWVudCAzMjE8L2Fkcl96dXNhdHo+DQoJCQk8YWRyX2hhdXNudW1tZXI+NzQ8L2Fkcl9oYXVzbnVtbWVyPg0KCQkJPGFkcl9wbHo+MjQ4Mzc8L2Fkcl9wbHo+DQoJCQk8YWRyX29ydD5TY2hsZXN3aWc8L2Fkcl9vcnQ+DQoJCQk8YWRyX29ydHN0ZWlsPlNjaGxlc3dpZzwvYWRyX29ydHN0ZWlsPg0KCQkJPGFkcl9sYW5kPkRldXRzY2hsYW5kJERFJERFVSQyNzYkLmRlPC9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9udW1lcmlzY2g+Mjc2PC9iX2Fkcl9udW1lcmlzY2g+DQoJCQk8Yl9hZHJfbGFuZD5EZXV0c2NobGFuZDwvYl9hZHJfbGFuZD4NCgkJCTxiX2Fkcl9hbHBoYTI+REU8L2JfYWRyX2FscGhhMj4NCgkJCTxiX2Fkcl9hbHBoYTM+REVVPC9iX2Fkcl9hbHBoYTM+DQoJCQk8Yl9hZHJfZG9tYWluPi5kZTwvYl9hZHJfZG9tYWluPg0KCQkJPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPg0KCQkJPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPg0KCQkJPGtvbnRfZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlPC9rb250X2VtYWlsPg0KCQkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4NCgkJCTxrb250X2hvbWVwYWdlPmh0dHA6Ly93d3cubWF4LXRlc3Rlci5kZTwva29udF9ob21lcGFnZT4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZm9uPisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdGVsZWZvbj45NjU0PC9iX2tvbnRfdGVsZWZvbj4NCgkJCTxiX2tvbnRfdm9yd2FobF90ZWxlZmF4PisgNDkgNDYyMTwvYl9rb250X3ZvcndhaGxfdGVsZWZheD4NCgkJCTxiX2tvbnRfdGVsZWZheD45NjU0PC9iX2tvbnRfdGVsZWZheD4NCgkJCTxTdGF0dXNfRXJsYXVibmlzPjA8L1N0YXR1c19FcmxhdWJuaXM+DQoJCQk8Yl9FcmxhdWJuaXM+TGllZ3QgbmljaHQgdm9yPC9iX0VybGF1Ym5pcz4NCgkJPC9CZXRlaWxpZ3RlUGVyc29uLWl0ZW0+DQoJPC9CZXRlaWxpZ3RlUGVyc29uPg0KCTxLb250YWt0c3lzdGVtVHlwQT4yMzMwMzQ2MDA8L0tvbnRha3RzeXN0ZW1UeXBBPg0KCTxLb250YWt0c3lzdGVtVHlwQj4yMzMwMzQ2MDE8L0tvbnRha3RzeXN0ZW1UeXBCPg0KCTx6dXN0YWVuZGlnZXN0ZWxsZT4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4NCgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5MYW5kZXNoYXVwdHN0YWR0IEtpZWwgLSBCw7xyZ2VyLSB1bmQNCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+RmFicmlrc3RyYcOfZTwvc3RyYXNzZT4NCgkJPGhhdXNudW1tZXI+OC0xMCAgICAgIDwvaGF1c251bW1lcj4NCgkJPHBvc3RsZWl0emFobD4yNDEwMzwvcG9zdGxlaXR6YWhsPg0KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+DQoJCTxvcnQ+S2llbDwvb3J0Pg0KCQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDkwMS0yODA3PC90ZWxlZm9ubnVtbWVyPg0KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDkwMS02MjA3MDwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5HZXdlcmJlbWVsZGVzdGVsbGVAa2llbC5kZTwvZW1haWxhZHJlc3NlPg0KCQk8ZGVtYWlsYWRyZXNzZSAvPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nIC8+DQoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4NCgkJPEFubGllZ2VuQkVaRUlDSE5VTkc+R2V3ZXJiZWFubWVsZHVuZywgRWxla3Ryb25pc2NoZSBHZXdlcmJlYW56ZWlnZTwvQW5saWVnZW5CRVpFSUNITlVORz4NCgkJPGxlaWthS0VZTElTVD45OTA1MDAxMjEwNDAwMDwvbGVpa2FLRVlMSVNUPg0KCTwvenVzdGFlbmRpZ2VzdGVsbGU+DQoJPGVtcGZhbmdlbmRlc3RlbGxlPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+DQoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyDQoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4NCgkJPHN0cmFzc2U+UmV2ZW50bG91YWxsZWU8L3N0cmFzc2U+DQoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4NCgkJPG9ydElEPjkwMDY0MDI8L29ydElEPg0KCQk8b3J0PktpZWw8L29ydD4NCgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4NCgkJPHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5ODgtNjE2MTExMTwvdGVsZWZheG51bW1lcj4NCgkJPGVtYWlsYWRyZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+DQoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4NCgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5MDY4ODczX0F1c25haG1lTEtXRmFocnZlcmJvdDwva29udGFrdHN5c3RlbV9rZW5udW5nPg0KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej4NCgk8L2VtcGZhbmdlbmRlc3RlbGxlPg0KCTxlcmtsYWVydW5nZW4+DQoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPg0KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+DQoJCTxjaGVja19kYXRlbnNjaHV0ej50cnVlPC9jaGVja19kYXRlbnNjaHV0ej4NCgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD4NCgkJPGNoZWNrX2hpbndlaXM+dHJ1ZTwvY2hlY2tfaGlud2Vpcz4NCgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIERpZSBHZXdlcmJlYW5tZWxkdW5nIGlzdCBrb3N0ZW5wZmxpY2h0aWcuDQoJCQlEaWUgSMO2aGUgZGVyIEdlYsO8aHJlbiBiZW1pc3N0IHNpY2ggbmFjaCBkZXIgTGFuZGVzdmVyb3JkbnVuZyDDvGJlcg0KCQkJVmVyd2FsdHVuZ3NnZWLDvGhyZW4gKEFsbGdlbWVpbmVyIEdlYsO8aHJlbnRhcmlmKSBUYXJpZnN0ZWxsZSAxMS4xLjEgLQ0KCQkJVndHZWJWLiBHZW5hdWUgQXVza8O8bmZ0ZSBoaWVyenUgZXJ0ZWlsdCBkYXMgenVzdMOkbmRpZ2UgR2V3ZXJiZWFtdC48L2JfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4NCgkJPGJfZ2VidWVocmVuX2ludHJvIC8+DQoJCTxiX3JpY2h0aWdrZWl0PiogSWNoIGJlc3TDpHRpZ2UgZGllIFJpY2h0aWdrZWl0IG1laW5lciBBbmdhYmVuLjwvYl9yaWNodGlna2VpdD4NCgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcg0KCQkJRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluIHp1ciBFcmbDvGxsdW5nIHNlaW5lcg0KCQkJQXVmZ2FiZW4gbWVpbmUgRGF0ZW4gdW50ZXIgRWluaGFsdHVuZyBkZXIgQmVzdGltbXVuZ2VuIGRlcg0KCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMNCgkJCUxhbmRlc2RhdGVuc2NodXR6Z2VzZXR6ZXMgU2NobGVzd2lnLUhvbHN0ZWluIChMRFNHLVNIKSBzcGVpY2hlcnQsDQoJCQl2ZXJhcmJlaXRldCB1bmQgZGllc2UgaW0gUmFobWVuIGRlciBnZXNldHpsaWNoZW4gQmVzdGltbXVuZ2VuIGFuIGRpZQ0KCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoDQoJCQltaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiBEYXRlbnZlcmFyYmVpdHVuZyB1bmQgU3BlaWNoZXJ1bmcgZHVyY2ggZGllDQoJCQl6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUNCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyDQoJCQlkZW0gRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluLCBSZXZlbnRsb3VhbGxlZQ0KCQkJNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyDQoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZA0KCQkJZGF2b24gbmljaHQgYmV0cm9mZmVuLiDDnGJlciBkaWUgVmVyYXJiZWl0dW5nIG1laW5lciBwZXJzb25lbmJlem9nZW5lbg0KCQkJRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuDQoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nDQoJCQlLZW5udG5pcyBlcmxhbmd0LjwvYl9kYXRlbnNjaHV0ej4NCgkJPGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyDQoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMNCgkJCWF1ZmdlemVpY2huZXQgdW5kIHZlcndlbmRldCB3ZXJkZW4ga8O2bm5lbi48L2JfbWlzc2JyYXVjaD4NCgkJPGJfaGlud2Vpc19iZXNjaHJpZnR1bmc+KiBEaWVzZSBBbnplaWdlIGJlcmVjaHRpZ3QgbmljaHQgenVtIEJlZ2lubg0KCQkJZGVzIEdld2VyYmViZXRyaWViZXMsIHdlbm4gbm9jaCBlaW5lIEVybGF1Ym5pcyBvZGVyIGVpbmUgRWludHJhZ3VuZw0KCQkJaW4gZGllIEhhbmR3ZXJrc3JvbGxlIG5vdHdlbmRpZyBpc3QuIFp1d2lkZXJoYW5kbHVuZ2VuIGvDtm5uZW4gbWl0DQoJCQlHZWxkYnXDn2Ugb2RlciBHZWxkc3RyYWZlIG9kZXIgRnJlaWhlaXRzc3RyYWZlIGdlYWhuZGV0IHdlcmRlbi4gRGllc2UNCgkJCUFuemVpZ2UgaXN0IGtlaW5lIEdlbmVobWlndW5nIHp1ciBFcnJpY2h0dW5nIGVpbmVyIEJldHJpZWJzc3TDpHR0ZQ0KCQkJZW50c3ByZWNoZW5kIGRlbSBQbGFudW5ncy0gdW5kIEJhdXJlY2h0LjwvYl9oaW53ZWlzX2Jlc2NocmlmdHVuZz4NCgkJPGJfaGlud2Vpc19pbnRybz5IaW53ZWlzPC9iX2hpbndlaXNfaW50cm8+DQoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+DQoJPC9lcmtsYWVydW5nZW4+DQoJPGJfdGltZXN0YW1wPjIwMjAxMjAyMTYwMzIzPC9iX3RpbWVzdGFtcD4NCgk8bG9nb3VybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jPC9sb2dvdXJsPg0KCTxmbT4NCgkJPGFuc3ByZWNocGFydG5lcj4NCgkJCTxmaXJtZW5uYW1lIC8+DQoJCQk8YW5yZWRlPkhlcnI8L2FucmVkZT4NCgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4NCgkJCTxmYW1pbGllbm5hbWU+VGVzdGVybWFubjwvZmFtaWxpZW5uYW1lPg0KCQkJPGFuc2NocmlmdD4NCgkJCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlPC9zdHJhc3NlPg0KCQkJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+DQoJCQkJPHBvc3RmYWNoIC8+DQoJCQkJPHBvc3RsZWl0emFobD4yNDEwNTwvcG9zdGxlaXR6YWhsPg0KCQkJCTxvcnQ+S2llbDwvb3J0Pg0KCQkJCTxvcnRzdGVpbCAvPg0KCQkJCTx6dXNhdHogLz4NCgkJCQk8c3RhYXQ+RGV1dHNjaGxhbmQ8L3N0YWF0Pg0KCQkJPC9hbnNjaHJpZnQ+DQoJCQk8a29udGFrdD4NCgkJCQk8dGVsZWZvbm51bW1lcj4wNDMxIDEyMzwvdGVsZWZvbm51bW1lcj4NCgkJCQk8bW9iaWxudW1tZXIgLz4NCgkJCQk8dGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZheG51bW1lcj4NCgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPg0KCQkJCTxkZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPg0KCQkJPC9rb250YWt0Pg0KCQk8L2Fuc3ByZWNocGFydG5lcj4NCgkJPHZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgkJCTx2ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+DQoJCQkJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA4MTk5NDwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPg0KCQkJCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkxhbmRlc2hhdXB0c3RhZHQgS2llbCAtIELDvHJnZXItDQoJCQkJCQl1bmQgT3JkbnVuZ3NhbXQsIEdld2VyYmVtZWxkZXN0ZWxsZTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPg0KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPg0KCQkJCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4NCgkJCQk8R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+DQoJCQkJPEFubGllZ2VuSUQ+ODkzODYzNDwvQW5saWVnZW5JRD4NCgkJCQk8QW5saWVnZW5CRVpFSUNITlVORz5HZXdlcmJlYW5tZWxkdW5nLCBFbGVrdHJvbmlzY2hlIEdld2VyYmVhbnplaWdlPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPg0KCQkJCTxsZWlrYUtFWUxJU1Q+OTkwNTAwMTIxMDQwMDA8L2xlaWthS0VZTElTVD4NCgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPg0KCQkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nPg0KCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4NCgk8L2ZtPg0KPC9teUZvcm0+</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnHomeServerVonTorsten</form> + <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> + <id>20210415307020414701</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.by.kop-cloud.de</sender> + <timestamp>2021-04-15T08:33:39.443Z</timestamp> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml b/intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml new file mode 100644 index 0000000000000000000000000000000000000000..2c48301a74776d47097a0b5c24bc094702e76825 --- /dev/null +++ b/intelliform-adapter/src/main/scripts/vorgang-Waffenschein.xml @@ -0,0 +1,75 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCiAgICB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgogICAgdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCiAgICB0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKICAgIHQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgogICAgdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKICAgIHQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKICAgIHQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KICAgIDxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+CiAgICA8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KICAgIDxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+CiAgICA8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KICAgIDxhbnRyYWdzdGVsbGVyPgogICAgICAgIDxwZXJzX2FucmVkZT5IZXJyJDAzPC9wZXJzX2FucmVkZT4KICAgICAgICA8cGVyc19uYWNobmFtZT5UZXN0ZXJtYW5uPC9wZXJzX25hY2huYW1lPgogICAgICAgIDxwZXJzX3Zvcm5hbWU+TWF4PC9wZXJzX3Zvcm5hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c25hbWU+TWF4IFRlc3Rlcm1hbm48L3BlcnNfZ2VidXJ0c25hbWU+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2RhdHVtPjE5OTUtMDMtMjE8L3BlcnNfZ2VidXJ0c2RhdHVtPgogICAgICAgIDxwZXJzX2dlYnVydHNvcnQ+RmxlbnNidXJnPC9wZXJzX2dlYnVydHNvcnQ+CiAgICAgICAgPHBlcnNfZ2VidXJ0c2xhbmQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfZ2VidXJ0c2xhbmQ+CiAgICAgICAgPHBlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaCREZXV0c2NobGFuZCQwMDA8L3BlcnNfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CiAgICAgICAgPGJfYW5yZWRlPkhlcnI8L2JfYW5yZWRlPgogICAgICAgIDxiX2FucmVkZV9zY2hsdWVzc2VsbnI+MDM8L2JfYW5yZWRlX3NjaGx1ZXNzZWxucj4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZD5EZXV0c2NobGFuZDwvYl9nZWJ1cnRzbGFuZD4KICAgICAgICA8Yl9nZWJ1cnRzbGFuZF9zaWduYXR1cj4wMDA8L2JfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+CiAgICAgICAgPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+ZGV1dHNjaDwvYl9zdGFhdHNhbmdlaG9lcmlna2VpdD4KICAgICAgICA8Yl9zdGFhdHNhbmdlaG9lcmlna2VpdF9zaWduYXR1cj4wMDA8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+CiAgICAgICAgPHNoX3N0cmFzc2U+S8O2bmlnc3dlZzwvc2hfc3RyYXNzZT4KICAgICAgICA8c2hfaGF1c251bW1lcj43NDwvc2hfaGF1c251bW1lcj4KICAgICAgICA8c2hfcGx6PjI0ODM3PC9zaF9wbHo+CiAgICAgICAgPG9ydF9hdXN3YWhsPjkwMDczMTQkMDEwNTkwNzU8L29ydF9hdXN3YWhsPgogICAgICAgIDxvcnQ+U2NobGVzd2lnPC9vcnQ+CiAgICAgICAgPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgogICAgICAgIDxHZWJpZXRCRVpFSUNITlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPgogICAgICAgIDxHZWJpZXRHTlI5NF9HTlI+MDEwNTkwNzU8L0dlYmlldEdOUjk0X0dOUj4KICAgICAgICA8c3RhYXQ+MDAwPC9zdGFhdD4KICAgICAgICA8aXNvMzE2Nm51bWVyaXNjaD4yNzY8L2lzbzMxNjZudW1lcmlzY2g+CiAgICAgICAgPGtvbnRfdGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZm9ubnVtbWVyPgogICAgICAgIDxrb250X21vYmlsbnVtbWVyPis0OSAxMjM8L2tvbnRfbW9iaWxudW1tZXI+CiAgICAgICAgPGtvbnRfdGVsZWZheG51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwva29udF90ZWxlZmF4bnVtbWVyPgogICAgICAgIDxrb250X2VtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwva29udF9lbWFpbD4KICAgICAgICA8a29udF9kZW1haWw+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2tvbnRfZGVtYWlsPgogICAgICAgIDxwZXJzb2VubGljaGVFaWdudW5nPgogICAgICAgICAgICA8bWFlbmdlbHZvcmhhbmRlbj5mYWxzZTwvbWFlbmdlbHZvcmhhbmRlbj4KICAgICAgICAgICAgPGVybWl0dGx1bmdzdmVyZmFocmVuPmZhbHNlPC9lcm1pdHRsdW5nc3ZlcmZhaHJlbj4KICAgICAgICAgICAgPE1pdGdsaWVkc2NoYWZ0SW5WZXJib3Rlcm5lclZlcmVpbmlndW5nPmZhbHNlPC9NaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz4KICAgICAgICA8L3BlcnNvZW5saWNoZUVpZ251bmc+CiAgICA8L2FudHJhZ3N0ZWxsZXI+CiAgICA8R2ViaWV0SUQ+OTAwNzMxNDwvR2ViaWV0SUQ+CiAgICA8enVzdGFlbmRpZ2VzdGVsbGU+CiAgICAgICAgPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwMzAyMjk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTAzMDIyOTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+TGFuZGVzaGF1cHRzdGFkdCBLaWVsIC0gQsO8cmdlci0gdW5kCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KICAgICAgICA8c3RyYXNzZT5GbGVuc2J1cmdlciBTdHJhw59lPC9zdHJhc3NlPgogICAgICAgIDxoYXVzbnVtbWVyPjc8L2hhdXNudW1tZXI+CiAgICAgICAgPHBvc3RsZWl0emFobD4yNDgzNzwvcG9zdGxlaXR6YWhsPgogICAgICAgIDxvcnRJRD45MDA3MzE0PC9vcnRJRD4KICAgICAgICA8b3J0PlNjaGxlc3dpZzwvb3J0PgogICAgICAgIDx0ZWxlZm9ubnVtbWVyPjA0NjIxIDg3LTA8L3RlbGVmb25udW1tZXI+CiAgICAgICAgPHRlbGVmYXhudW1tZXI+MDQ2MjEgODctMzY2PC90ZWxlZmF4bnVtbWVyPgogICAgICAgIDxlbWFpbGFkcmVzc2U+R2VmYWhyZW5hYndlaHJAS2llbC5kZTwvZW1haWxhZHJlc3NlPgogICAgICAgIDxkZW1haWxhZHJlc3NlIC8+CiAgICAgICAgPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5NTM1NjY5X2tsZWluZXJXYWZmZW5zY2hlaW48L2tvbnRha3RzeXN0ZW1fa2VubnVuZz4KICAgICAgICA8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6IC8+CiAgICAgICAgPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CiAgICAgICAgPGxlaWthS0VZTElTVD45OTA4OTAwODAwMDAwMDs5OTA4OTAwODAwMTAwMDwvbGVpa2FLRVlMSVNUPgogICAgICAgIDxhdXN3YWhsX3p1c3RlbGx1bmc+YWJob2xlbjwvYXVzd2FobF96dXN0ZWxsdW5nPgogICAgICAgIDxiX3p1c3RlbGx1bmc+SWNoIGhvbGUgZGVuIEtsZWluZW4gV2FmZmVuc2NoZWluIHNlbGJzdCBhYi48L2JfenVzdGVsbHVuZz4KICAgIDwvenVzdGFlbmRpZ2VzdGVsbGU+CiAgICA8ZW1wZmFuZ2VuZGVzdGVsbGU+CiAgICAgICAgPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPjkwNjg4NzM8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+RWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIKICAgICAgICAgICAgU2NobGVzd2lnLUhvbHN0ZWluPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+CiAgICAgICAgPHN0cmFzc2U+UmV2ZW50bG91YWxsZWU8L3N0cmFzc2U+CiAgICAgICAgPGhhdXNudW1tZXI+NjwvaGF1c251bW1lcj4KICAgICAgICA8cG9zdGxlaXR6YWhsPjI0MTA1PC9wb3N0bGVpdHphaGw+CiAgICAgICAgPG9ydElEPjkwMDY0MDI8L29ydElEPgogICAgICAgIDxvcnQ+S2llbDwvb3J0PgogICAgICAgIDx0ZWxlZm9ubnVtbWVyPis0OSA0MzEgOTg4LTg2NTA8L3RlbGVmb25udW1tZXI+CiAgICAgICAgPHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5ODgtNjE2MTExMTwvdGVsZWZheG51bW1lcj4KICAgICAgICA8ZW1haWxhZHJlc3NlPmluZm9AZWEtc2guZGU8L2VtYWlsYWRyZXNzZT4KICAgICAgICA8ZGVtYWlsYWRyZXNzZT5lYS1wb3N0c3RlbGxlQGVhLXNoLmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CiAgICAgICAgPGtvbnRha3RzeXN0ZW1fa2VubnVuZz5hZm1zaDo5MDY4ODczX0F1c25haG1lTEtXRmFocnZlcmJvdDwva29udGFrdHN5c3RlbV9rZW5udW5nPgogICAgICAgIDxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+YWxsZTwva29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PgogICAgPC9lbXBmYW5nZW5kZXN0ZWxsZT4KICAgIDxlcmtsYWVydW5nZW4+CiAgICAgICAgPGNoZWNrX2dlYnVlaHJlbj50cnVlPC9jaGVja19nZWJ1ZWhyZW4+CiAgICAgICAgPGNoZWNrX3JpY2h0aWdrZWl0PnRydWU8L2NoZWNrX3JpY2h0aWdrZWl0PgogICAgICAgIDxjaGVja19kYXRlbnNjaHV0ej50cnVlPC9jaGVja19kYXRlbnNjaHV0ej4KICAgICAgICA8Y2hlY2tfbWlzc2JyYXVjaD50cnVlPC9jaGVja19taXNzYnJhdWNoPgogICAgICAgIDxiX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgZHVyY2ggZGFzIEVpbnJlaWNoZW4KICAgICAgICAgICAgZGVzIGVsZWt0cm9uaXNjaGVuIEFudHJhZ2VzIHZvbiBkZXIgenVzdMOkbmRpZ2VuIFN0ZWxsZSBHZWLDvGhyZW4KICAgICAgICAgICAgZXJob2JlbiB3ZXJkZW4ga8O2bm5lbi48L2JfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4KICAgICAgICA8Yl9nZWJ1ZWhyZW5faW50cm8+R2Viw7xociBiZWkgQXVzc3RlbGx1bmcgZGVzIGtsZWluZW4gV2FmZmVuc2NoZWluczoKICAgICAgICAgICAgNjAsMDAgRXVyby4gQmVhcmJlaXR1bmdzZ2Viw7xociBiZWkgVmVyc2FndW5nOiA0NSwwMCBFdXJvLgogICAgICAgICAgICBTaWUgc2luZCBnZW3DpMOfIMKnIDM5IFdhZmZHIHZlcnBmbGljaHRldCwgZGVyIHp1c3TDpG5kaWdlbiBCZWjDtnJkZSBkaWUgenVyCiAgICAgICAgICAgIER1cmNoZsO8aHJ1bmcgZGVzIEdlc2V0emVzIGVyZm9yZGVybGljaGVuIEF1c2vDvG5mdGUgenUgZXJ0ZWlsZW4uIFp1cgogICAgICAgICAgICBQcsO8ZnVuZyBJaHJlciB3YWZmZW5yZWNodGxpY2hlbiBadXZlcmzDpHNzaWdrZWl0IHVuZCBFaWdudW5nIGhvbHQgZGllCiAgICAgICAgICAgIEJlaMO2cmRlIGVpbmUgdW5iZXNjaHLDpG5rdGUgQXVza3VuZnQgYXVzIGRlbSBCdW5kZXN6ZW50cmFscmVnaXN0ZXIsCiAgICAgICAgICAgIGVpbmUgQXVza3VuZnQgYXVzIGRlbSB6ZW50cmFsZW4gc3RhYXRzYW53YWx0c2NoYWZ0bGljaGVuCiAgICAgICAgICAgIFZlcmZhaHJlbnNyZWdpc3RlciwgZWluZSBTdGVsbHVuZ25haG1lIGRlciDDtnJ0bGljaGVuCiAgICAgICAgICAgIFBvbGl6ZWlkaWVuc3RzdGVsbGUgdW5kIElocmVyIFdvaG5zaXR6Z2VtZWluZGUgZWluLjwvYl9nZWJ1ZWhyZW5faW50cm8+CiAgICAgICAgPGJfcmljaHRpZ2tlaXQ+KiBJY2ggYmVzdMOkdGlnZSBkaWUgUmljaHRpZ2tlaXQgbWVpbmVyIEFuZ2FiZW4uPC9iX3JpY2h0aWdrZWl0PgogICAgICAgIDxiX2RhdGVuc2NodXR6PiogSWNoIGVya2zDpHJlIG1pY2ggZGFtaXQgZWludmVyc3RhbmRlbiwgZGFzcyBkZXIKICAgICAgICAgICAgRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluIHp1ciBFcmbDvGxsdW5nIHNlaW5lcgogICAgICAgICAgICBBdWZnYWJlbiBtZWluZSBEYXRlbiB1bnRlciBFaW5oYWx0dW5nIGRlciBCZXN0aW1tdW5nZW4gZGVyCiAgICAgICAgICAgIERhdGVuc2NodXR6LUdydW5kdmVyb3JkbnVuZyAoRFMtR1ZPKSB1bmQgZGVzCiAgICAgICAgICAgIExhbmRlc2RhdGVuc2NodXR6Z2VzZXR6ZXMgU2NobGVzd2lnLUhvbHN0ZWluIChMRFNHLVNIKSBzcGVpY2hlcnQsCiAgICAgICAgICAgIHZlcmFyYmVpdGV0IHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5nZW4gYW4gZGllCiAgICAgICAgICAgIGbDvHIgZGllIEVudHNjaGVpZHVuZyB6dXN0w6RuZGlnZSBTdGVsbGUgd2VpdGVybGVpdGV0LiBFYmVuc28gYmluIGljaAogICAgICAgICAgICBtaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiBEYXRlbnZlcmFyYmVpdHVuZyB1bmQgU3BlaWNoZXJ1bmcgZHVyY2ggZGllCiAgICAgICAgICAgIHp1c3TDpG5kaWdlIFN0ZWxsZSBlaW52ZXJzdGFuZGVuLiBNaXIgaXN0IGJla2FubnQsIGRhc3MgaWNoIGRpZQogICAgICAgICAgICBFaW53aWxsaWd1bmcgaW4gZGllIFZlcmFyYmVpdHVuZyB1bmQgw5xiZXJtaXR0bHVuZyBqZWRlcnplaXQgZ2VnZW7DvGJlcgogICAgICAgICAgICBkZW0gRWluaGVpdGxpY2hlciBBbnNwcmVjaHBhcnRuZXIgU2NobGVzd2lnLUhvbHN0ZWluLCBSZXZlbnRsb3VhbGxlZQogICAgICAgICAgICA2LCAyNDEwNSBLaWVsIHdpZGVycnVmZW4ga2Fubi4gRWluIFdpZGVycnVmIGlzdCBhYmVyIG51ciB3aXJrc2FtIGbDvHIKICAgICAgICAgICAgZGllIFp1a3VuZnQuIFZlcmFyYmVpdHVuZ2VuLCBkaWUgdm9yIGRlbSBXaWRlcnJ1ZiBlcmZvbGd0IHNpbmQsIHNpbmQKICAgICAgICAgICAgZGF2b24gbmljaHQgYmV0cm9mZmVuLiDDnGJlciBkaWUgVmVyYXJiZWl0dW5nIG1laW5lciBwZXJzb25lbmJlem9nZW5lbgogICAgICAgICAgICBEYXRlbiB1bmQgZGllIG1pciBuYWNoIGRlbiBkYXRlbnNjaHV0enJlY2h0bGljaGVuIFJlZ2VsdW5nZW4KICAgICAgICAgICAgenVzdGVoZW5kZW4gQW5zcHLDvGNoZSB1bmQgUmVjaHRlIGhhYmUgaWNoIHVudGVyIERhdGVuc2NodXR6ZXJrbMOkcnVuZwogICAgICAgICAgICBLZW5udG5pcyBlcmxhbmd0LjwvYl9kYXRlbnNjaHV0ej4KICAgICAgICA8Yl9taXNzYnJhdWNoPiogTWlyIGlzdCBiZWthbm50LCBkYXNzIHp1ciBWZXJmb2xndW5nIHdpZGVycmVjaHRsaWNoZXIKICAgICAgICAgICAgTnV0enVuZyBkaWUgRGF0ZW4gbWVpbmVzIHp1ciBEYXRlbmVpbmdhYmUgZ2VudXR6dGVuIEVuZGdlcsOkdGVzCiAgICAgICAgICAgIGF1ZmdlemVpY2huZXQgdW5kIHZlcndlbmRldCB3ZXJkZW4ga8O2bm5lbi48L2JfbWlzc2JyYXVjaD4KICAgICAgICA8cG9saWN5dXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2RhdGVuc2NodXR6L2RhdGVuc2NodXR6ZXJrbGFlcnVuZ0VBX2RlLmRvYzwvcG9saWN5dXJsPgogICAgPC9lcmtsYWVydW5nZW4+CiAgICA8bG9nb3VybD5odHRwOi8vd2FmbXhwYTAwMi5kcGFvci5kZS9zaC9sb2dvcy9rb3BmXzkwNjg4NzMuZG9jPC9sb2dvdXJsPgogICAgPGZtPgogICAgICAgIDxhbnNwcmVjaHBhcnRuZXI+CiAgICAgICAgICAgIDxmaXJtZW5uYW1lIC8+CiAgICAgICAgICAgIDxhbnJlZGU+SGVycjwvYW5yZWRlPgogICAgICAgICAgICA8dm9ybmFtZT5NYXg8L3Zvcm5hbWU+CiAgICAgICAgICAgIDxmYW1pbGllbm5hbWU+VGVzdGVybWFubjwvZmFtaWxpZW5uYW1lPgogICAgICAgICAgICA8YW5zY2hyaWZ0PgogICAgICAgICAgICAgICAgPHN0cmFzc2U+S8O2bmlnc3dlZzwvc3RyYXNzZT4KICAgICAgICAgICAgICAgIDxoYXVzbnVtbWVyPjc0PC9oYXVzbnVtbWVyPgogICAgICAgICAgICAgICAgPHBvc3RmYWNoIC8+CiAgICAgICAgICAgICAgICA8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CiAgICAgICAgICAgICAgICA8b3J0PlNjaGxlc3dpZzwvb3J0PgogICAgICAgICAgICAgICAgPG9ydHN0ZWlsIC8+CiAgICAgICAgICAgICAgICA8enVzYXR6IC8+CiAgICAgICAgICAgICAgICA8c3RhYXQ+RGV1dHNjaGxhbmQ8L3N0YWF0PgogICAgICAgICAgICA8L2Fuc2NocmlmdD4KICAgICAgICAgICAgPGtvbnRha3Q+CiAgICAgICAgICAgICAgICA8dGVsZWZvbm51bW1lcj4rIDQ5IDQ2MjEgOTY1NDwvdGVsZWZvbm51bW1lcj4KICAgICAgICAgICAgICAgIDxtb2JpbG51bW1lcj4rNDkgMTIzPC9tb2JpbG51bW1lcj4KICAgICAgICAgICAgICAgIDx0ZWxlZmF4bnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZmF4bnVtbWVyPgogICAgICAgICAgICAgICAgPGVtYWlsYWRyZXNzZT5tYXgudGVzdGVybWFubkBnbXguZGU8L2VtYWlsYWRyZXNzZT4KICAgICAgICAgICAgICAgIDxkZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgogICAgICAgICAgICA8L2tvbnRha3Q+CiAgICAgICAgPC9hbnNwcmVjaHBhcnRuZXI+CiAgICAgICAgPHZlcndhbHR1bmdzbGVpc3R1bmdlbj4KICAgICAgICAgICAgPHZlcndhbHR1bmdzbGVpc3R1bmc+CiAgICAgICAgICAgICAgICA8YXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgogICAgICAgICAgICAgICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTUzNTY2OTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogICAgICAgICAgICAgICAgICAgIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+S3JlaXMKICAgICAgICAgICAgICAgICAgICAgICAgU2NobGVzd2lnLUZsZW5zYnVyZy9LcmVpc3ZlcndhbHR1bmcgLSBBbGxnZW1laW5lCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZG51bmdzYW5nZWxlZ2VuaGVpdGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+CiAgICAgICAgICAgICAgICA8L2F1c2dld2FlaGx0ZV96dXN0YWVuZGlnZXN0ZWxsZT4KICAgICAgICAgICAgICAgIDxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KICAgICAgICAgICAgICAgIDxHZWJpZXRCRVpFSUNITlVORz5TY2hsZXN3aWc8L0dlYmlldEJFWkVJQ0hOVU5HPgogICAgICAgICAgICAgICAgPEFubGllZ2VuSUQ+ODk2NjY3MTwvQW5saWVnZW5JRD4KICAgICAgICAgICAgICAgIDxBbmxpZWdlbkJFWkVJQ0hOVU5HPldhZmZlbnNjaGVpbiAvIEtsZWluZXIgV2FmZmVuc2NoZWluPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPgogICAgICAgICAgICAgICAgPGxlaWthS0VZTElTVD45OTA4OTAwODAwMDAwMDs5OTA4OTAwODAwMTAwMDwvbGVpa2FLRVlMSVNUPgogICAgICAgICAgICAgICAgPGxlaWthQkVaRUlDSE5VTkcgLz4KICAgICAgICAgICAgPC92ZXJ3YWx0dW5nc2xlaXN0dW5nPgogICAgICAgIDwvdmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgogICAgPC9mbT4KPC9teUZvcm0+</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAPpBAADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDtsNjAqxE48vBGSKgWQDn1pRIM07CHvIQfl6VWnlycDg06aUIuQeazpmLNkHik9ARaGcc5I9ahMvlN7VH9p2rjNU7m5TyzzzioLH3Wo4DBTg1QJ+0EM/NVxE0/QnNaFnaKCRKxz2AoEWBDF5Q24Bo2EdW/CmHEUpXORUm/LYAoGPB6cU/e5B25xUa9yc1NbSqjkMM59aACBR5TFmOc9Kjku/s8ZJOBRdukCtJ071y2o6o1wSigge1AXsP1TVHuWaNeB7Vh7gGOeafK+B70zYSm80yQVzkio5HIPJqPd82AahmlAO08mkxpD3nAPvUYYsxzUOO5JpzPlcYqBk+9UzkcetQTXOV+WmFwODzVK4lEYPNUkIZcTcksaypbhpXIUE1MElu32qCRmtzT9FVADIMtVrQRgxaZPONxBAqa30hzLtYHP0rs47MIuAuKUW0cZLsoyKTkxpGHFog2jKVej0iIR4KjNLLqamby4+celaFvISoypzUp3GYNxpQBO1OKotpyk4INdg0fy5xTF0/zRny+KsmzMvw3aLa3RZhjdXcrMiJhetZcOl+UiuBUrZQHHQd6lyLUR1yhnifPWuW1awaSNUYfeattr0q+KzdY1CNXgGQCTQptiaRpaXH9ms1QD8K0IwXOM8VUt3D26snOR0rQtLdxln4FJasb0F+zbhlgT6U5o2EfyCrsaiX5MHA71bESxxEYGK1USHIqW0a+RyOaHKR5CDmligdnIViB6VOLbb15NVYVzOaGSVd6Nz6VGI3kQhuCKuOGVyE/HmnLCWXORmpsO5mRs8LkYPJqbziZAG45qZ4GYbiOntVWUDdtB5FQ4jTL0zFFDo1CzkYYnLCuf1HWVshjd0rLTxduuFGPlzU8pXMdZdao82YiuPwqh5aq289DTRcR3aB0PJ9KcvzIQc1DHctIyPHgN+FZmpRgx4IFWkAC4HBqpfkCMeuatMmxzhzHcYJ4qdZmDcmi6iLfMo5qO1ge6ynIYVDLRqQyCVMA5+tVLuwEiMSmc9eKktbd7ebbJwM1tRPA3ykgilF2G9TzLUNKaKRpEBx3rN6HB616dqGnoxJVAQa5DU9GIYyxqeK3jK6MpRsYQyBxTwPl5FOYGP5WGMVEZAD1rQkGABppc0F8k0wBnOFBNICTbuHHWrMFuUO5h0q7p2m+YQX6VqSWMcXArOUiombGRtwV4qaOKNvvCrZtV8skde1ZrymKXbnis7F3RYEeH+X1rSgO6La1Zi3cKdT19aswXkO7hgKtIhsklWSB9yk1t6NqjHCOxyPWsp5FkAwcijHkp5q9RTWhJ31rqSOdjADNXGwy5Fcfo18t6uwnDjvXT2yuqgEkjNVa4XsSICW6VOuFfGeac5QKCMZ71D8zOCBxUtF3uaY3RgMDUhCyD5hVeNiyAE81IThetCEVpowj8dKDKwAAGRVkJ5ietVZUZM1TjdCTGGcluQOKrSsGOQRTS/zEEVCxycCs7NbF3TLkN2R+7Y+1WvMZVyucVjlXB3KM4q9b3DNHhh0qkxWLAy+STzVedsn/AAqcEE4HemTwFV3DkVLEjHvoisTuR8tV7NwbElexq9qDFrFxzjFY2nFzZsg6ZpxGyedkCgkCr+hwxu7SheRxmsqVWxtY1raCdqsoFaQRMjTkthcSE+lULlvLYoVHFXpXeMkoKpzDeNzdTScLu41Ky1GWAJugcV03ku6DHSuetWEbgnAroUv4ltgCwzUtajUiKTMfy4pYLbzTmmG5SQZJWp7cuOVNDQ0yU2oQ+1RXEaheFqyZDjL9KpPdxsxXIosFysLNGO7vU0cY3hQOlO3r2IxT4WQyjnmlYLl1YlAHHP0ps6/KRjinqzI2SeKSSVWzximkJlCG3zNgHFacKCJh0xWDcXotLofMME1bW+DANuFDQXuaVzErkEdKoT28WOSB9agk16KP5XFZtxeG/Y+W+FoAtyJGMhSPwrmL7/j8Ydq2bVTExDvkfWsPU5Qt4Qp/KiwIglt3YcH6Vj3aTQ5DAkfStYXr4GV4FV9SnE9tu6MKLFXNDw7abyhUdTXoEdqIErh/B0uyZfMbAzxmvQriaIJkOv50ooUmUgf3wB71qRwKVBrnWvUa4wpJwe1akV/+6wc8etOwi/PGBHwayHRt5Jp0mqIcIWFNe5jxwc0wLEEf7s08cZGKSKePyec1Rmv1WYKuTmkBalTIziqjxjdyBV3fujDYqs43ngii4WZFA6LcBa0ww8wHAxWC0NzFdBwuVrT88lRlSDQtWDukXbuRPK96oWUoS7wSME96ZcS/u+Q35VjtcyJcKUUnnuKp2JR2TlQcnpWXcFZJxg5xUSXsksYDdxUIzG5NKxSNN7hDatGeTiuRVGinmVc4POa2WfJJINUJUVC79yPWlYDDa42zup55qzBPleenpms8wl7xgT1NXVCxcE9qd+gJk+OCRz9a3dFy8XtWBGcKTnIrptHUfZgRTSBsnVDgAk0rAKOppvmDG7sKpXN2McHBp7ECzy7mxUYkCKd2arMxKhy3vQ88bgCsnK7LRDO7HLDgVnSEueuatXMwJ2pjrT7e1Rly/X60LQZFaZhcMMkGrUsxaQFc5pUtyGG2kaPybhWcZFO4WIZ5DkYOPY1Zt5QI8nrVe5dXlBUdKnRY3iyPvd6AJY5wwIFTxLty75H1qjCu2TfxgVT1bVmb93FkH1oSuJkWr6j5j+Wp4rGZkC5PWmSsWOSeagkYYxzVtWIGyyAtxUElwQuAaSRgO55qnJljweakocsh5wagLky5Y8UB9oJzzVWRy/Q4+lSxovhwVzUTy7RUMTEIQTmo2bJ60JCbCWYgE4qqA91MFHSmXMxPyr1re0HTcgSyCrtZC3LelaYkKhmX5q2EgGQSMAVYjiVegpJshCQKi4xDsB4qjqRLwME/SkadiMYO7NNZXdeQcUXHYztDsRJfkzDA7Z712selxFSQK5i2jaOYMOBW/DqYh+QnIqG7FdCVrCMdacgSIbQOKr3OoKF3BuKzJdUA6NVcwWOrtbm0Fi6TYDc9axEvId7xNggng+1c5eamzHhiM1XjN5ccxIcf3jU3CxbvLiO0nc7sjkjmuPvtTN1qSE/cDV002kyyRF5JMtisCXS1jcnHOa1hYiR6DogMgjMfIx3rXmnlS7SFRnPFYnhLO3aW5FdbZWXmXfmPg46VVNaCky1b2B2A45IqVrcxj5hkVpxqAoFV72RYkIOM1qiCjCi7iBT3t2LcUWiFiWNW2bYCaLDMyW2ESsX61lOJwcpyM1pXTmeQbuADUbYUDaBSsK5WS6dlEbpg1FJDGCWI+b2q+Yc/NgZqtOhVsnkGiw0cXrNoJ5GODXPPp0kY37GwDXa6mq+YelUZtslqFC8Vi9zRNC6ZMFt1APIFaUTl8lT0/Wq9rDGloGAxxUMdx5cpwahoZoBtxIPBFULqTccGnTXA++OtUizTMCaaWguo9oxiqpuDZThwOKtNnjHSonjSVdrYqWi0x014LyLchw3pUFvPJGTuB+tUpUkspsj7hNatrPHcxADGahKw73NO1nWaPLEGmXVtHIhwg5qCGJoZAD0NXH6ZHNaRQmzh9Y0dtzMgwawFsZC+3vXpVyglXG3n6VgXOnFLrI6HmtoszkramBHpfdxWhbWCDGFGa1RaFRz0pYY/3pAFKTBIIIki6gVHcoS4Iq267cllx9aqzzKRis+W5TsivK4RPvc1j3R3SZBFTXMxGcnNZryknFWokNkM7/P7U3eRjaTUjJ370wpzmrEXLbUZoeCTippdZkZdvb1rOPAqJgaVgN/Q9VNvfrk8Ma9S0m6SbasjdeleHJJ5bqwPIOa9K0e8a60tJo2O5R0prQTO+mgymV9OwqvDktg9qm0LU4tRtBExAlUYIPWp5LUxybhQ0NPQYqFWzkketSt86nFLzs460xd2eaVguLCGHripZI0kQ9M+lMaRoozjnNVLTz5JySMDPemBXmtHyWXr6VTMLhssvPpW/cDywWIHHpWdPKoHmgUnFAnbQqoQudxA9RVf7Ssc+OMZqSQ+a+7BAqlcx7iAg5qWi7mvE6ySpzwTVm9lCEKO4rCt5ngIDc46VbMpnO7NS9ARFfkm0lwOMVT0y1aWxZ0B61bu7mKK0eMnLMMYpmiahHa2LJIpzniqgiZMQaZNJ8zcCtK0jW0U9M4p1nJJfgmNdq5/GrLWxjiO85NbRRF7lEXbSyFFTGe9I0cgcE4INTpsBzt5+lNOoQRzKjnBJ6EUm7FJXK0yS9h+lVvMnR8bjiuiIWZPlAINQPpquC2OahtFWMV7qfgKf0q9BfXaRjqfwpy2u19vercUJCfNSbRSRTn1O8eIggjtnFZ8c1yJCQpat0RK5OQBToYVDY2jFTdBYyzeXJTAjINRwz3gfcQ2fSujjgjL42irLWcWzO0D8KXMOxhC+vSOUNNOoXQByhxWx5QGcJkUsUUUnVcfhTUgcTj55Jry8UNnrXR22kyFF+bI96LzSdr+ZEMHPar1jK/k7W4IFDYJEbaBbyLhyCxqMaJawAqGx9DVbydQm1BykpCA8CtNNNnc5kck/WgTRgatp0kMfmWxZiOtcXPPJFcN5mSa9jisF8vYwB471zWseHLea5LbACfSq6CZwaXyumDxVWZJrv5IULH2rp5fDSRkkDj0qXS7GK1u8MtSNGJo0dzBdxRzqyAHivS7SCCRB5jA8d6zzBBcN9wcH0q2ljKVAjJAoG0X1062T5lCmrP2SGS3OFGaw72O5toxtm5BrY05GmshmTkii5NjLbTY5p8EdDU50yKIgscVeWIQsSeTVK+kkccUXHa5TunWMbUpqrDtU4+Y05bXzFyzVXmjkib5OazbZaVtzWj4XGMikmtMx71baR2rIgv5fN2sMDNakdwxIWRhg/rSuUKjsE2sATThIqEZWpvNhAIAGaqlGcE4qk2iXqasMNvcx9B+NUNQ0tVH7pRVNLma3f5SeK07bUBKv7wjPvVpkNWMxU8obWXDUeXufAIJ9K0LmOB8vnn61RVE8/O7I9KCrkbgDgjBqlcRBomIGa0LnBc1XK4HrVJktHINBOk7MUPXg0myaRskHArqZYEkQ/KM1neUqBgeSKCStBHKICpFaGm6uLUeXNxg4zVSKYh9uOKL2COSInADeop7jsbZuU8nHesyTDsx3U1LuIuVzx2qN7qOBmGM5rOcr6ISQx3kRuhK0oZmGcYz60i6oGTaUPtQlwZJBkYHoaUVcd7DPKIkDdRV5VYqNpqu8oaUL3/QVKjZO3PHtTkEWWIt3l7t3SmM5l+91FGGVTt6UuzdFnODU3KKzW7vnbxU9vF5andzmmszooweD3qOabyITzzVLXYTIby+EKsiAc1iSNvbc3epS5kkZ2Gfaq8pLMfStErENkMzZb5aixsXe2TUwVRKO9LcDETDHFAjMklEjEgVTl3I2cdalY7CcGqk0pPU1LKI5JBg1CMDmkY7uTUDOTwKmwFlWHODVOaYhyBTwxVagxls1aETWUJmuVzXoWn2yLbqAMHArl/Dlr505JA612awNHjBrOTGkP2BFNRSE7MgcU2cSBSwPFWbOIyW2W5pN6DW5Xht0fBKjJq3HCqAqUB/Cle3KLvWmhpAvBrNyLsZl3EVY7Rj6VntKE++enetC7kcFhjk1iXRY5J4qlqDsSyajGFxyazJtQRicA/jUDSlc5GabZr9qutmzP4U+VIW5LZ+Zc3YOPkBrp/mghXy0FM0/T1hUk8VdI3ZUdBQrXHYrIrFG31z+ppsf0rorjcicA1z+rtnaDxWq0IZd0e/+zKrKfriu90zW4DGGdgD6ZrzrSbV2QuwOO1W5iwRvLOCKUZcrsDV0epDU0eHcrceuazvtn2y4Kqc461wWmX95PKLVC3PU+1d5o+nNCNzEkkVqncztY14oyqLgVMUyATSp2HSnldmM9KsRnXNnuO5RWbNG8TAHpmugkOSMCq13AJlG3ginYm5m+cQmNuTWfcvInzOOO1ahR0kAI4HtWfrIeWEKn5CpaKRgXOyfeT1qnaBWYxk89s1ae2mjGWB59KiW1CzeaSRWL3NEPncxQ7B9KzUHJYnn3rQuoGI3g5ArOeQMMAc0uS7HzDDcEEqetKs7AYAFRrGXb7pJpwjZX+70q0rEiG4YPjNIrMJAQae0LM+RThEy8kZpNDuJPidCuKz7Z2tb1csQuavyMCemKq3MBkjLg4IqGhpnSRFZdpBBBFW4ogRiuR0+/dSIgeRXSWM7k/NTiORPLAApwMmsi7hYgsB0roXHyniq4twyEt0od0xJ3OWFwcFWHIpYDibcf1purAWtySM4NUDPNIPkXAqR3NG8vF2lcZ96wrm6Bzg1JMkgUknNYszNvPXFWlchizz7j7VADuORTtgPWnrHg5qxD1UuMmmlecZqwv3cjpTETfJ7CkBBIMLjFQFSSeK03hDMMCpvsqKg4yaLgYTIRXaeBbv961rIeD0BrE+xhjnbxV3SkNhfRzL2NF0Fjsr5rjR7z7TBwpPIFdZompjVrcMT8+ORmssRxarZK/BJXmsuyM2iX+5CRGTyKpEndm1kOcAimpbyZIbP41pWdwt1aJMnOeuKLlumRiqsBl/ZnJ5ORU6RtEnyjmrCFQnTn2p8fzHJH4UWBMyrpJfKOQeelVIYxs8uRcn3ropkEkfTpWdNDyrY6d6LAZk9o0QyB8pqh9nYPyM5rqp40a1BY4xWHc3W4iKJct03YqbDTKl5BDBYuzEb+wHWuZS9vkyoQhc8EiusGlPKweYt681auLGL7KFCcgelFh3OVgtZZf3s2foatGJFjHyEVoSJ+6xgAjrxShPNVY1XJNZt2Za1Rp6GFFqWwAKnkDTuQtPsLZoYdhGM0k2YJPkHFbLbUzW5UELK5DJgetVbzT7eWZGI+YHOa0Wu8g7lrF1C88qXeMmsr6mltDTjmFuVX+EVZku4lj3Z4rkn1gyA/L+dRf2q+4A8iq0ZN2dBHdoZyTwM9a0lmgkX5WBNcbcamjAKhwfrSQXhdgBIQfU1El2LUjq5ZVDYWkhuADzgfU1hC/jjG2SQMfXNRXF2svEUgBqbWRVztYNgAfPWp5PmAwRiuMtr6fy9u8nHetOC+dMGR+DWTepR0ETouVY09fL35GM1iPqUIG7f096zpPEyQyYUZ96pMTOwd49vIBqo/lgEj9KwovEUM0fJwfepRqSuPl5zTuI27SNmG9etaMStsJzzVPSpVmg2kHP0qzN+7UgE1aJbuSLu6lsVBcxrJIPX1pwdTGOeafFGJDk00xMzprMEHgVjPahLnO2uvlRIUy3SsOcobkEdM0MExYbUIAVHJqyshhjqzHFlAcVXljyTnpUF3MTWLpjAx5yKztH1+Rf3bPjHHWtPULcTRsuRXMXmlPasJENS2F0dl/ahlXKnJpwuUdeWzXDW95PEduSTSi8u0JYscelTzDR193eRgBUIBrOmvZVOO3rXOy30zMCX5p66kwOCc0mykbiXBcjHWp5JJwVyePauf8A7QMbBx1NTtq0zR7jj2qWxo6SAys4Y9PerdxdGNNxAGK5CDxC6/KcUtzq0k4wDx7VaJ6mvJepJISG/Wqr6qIZQueKyEMrk7eM077BOzh2BNVcTNttX3Dbz+dWLOfzmyMisuysGkmG8HFdDbxxxMExVJkkzQBl3ZPPrUXlkqRitFdm3atQuojc5poZnBAMg1VmswSSGNXZiDIcVEQfWtCDHnTyee9Z13c/KT3rV1JSqFsVz2WmmwBkCp2KLawvHcKXU7B14qWYCQ5RSwHWtW6fajAp17YrJtppTK0SJwT19KlxdxKWg9drpgJ83tV2xgUud4OPen2tsYiSy9asYwu8AYFaRjZGbd2U7qBXuMJkd81YNskCBi/aqxmR7gZOKddsrRYDnjtWcndmiRIlwuSuc0s5bb8p/KqMc6RnNXoriGQ+1Kwyt5wGA56VUu5hIdoNT3oG8helUCowSetXCNjOUrkXCkjJqtM3zYHNTAFnJz9KhuCIfmJyfStLElc7zIMdqu3ShbPJGOKr2waR9xXjNWNWcJZc8GhoEzmJT859KpyuCcEipHkJJqBoZH5ArO12VcrM+JMdqcwAUEdTUkluUwTwafBbvcSosalmY4VR3NVawXuQiJtuSDTmsZxHBIF8zzgSqR/MwAOMkDpk5/KvVfAnwtbU4hqfiKOaCAMfLs8lGkA7t3A9uM17Ba2dlYxpFa2sMaIoUBVGcD35NQ5DSsfOHh6yuYBmW0uYsHJMkLr/ADAroprtFQYYE+1e6G5Bh5AbjoR14JrJvdD8PamWF3ptuxLD51XaeRwcjnFQ9SkeKS3gMZwc+ta+k3CPZdRn0rs7r4Z+H5nDW11dWgJIZC4cZ9OelZsXw31KwLLbX9tcKP7wKH+tD2BJXMp2VodvAqmhAYjg10MvgnXSyRj7Jubr+96fp/KprXwDfgF7vULWJVPzFAWx/LFTylXOOvICTkLWXLa7n2hC7noigkn8BXsdp4I0eJgl3NNdSH7oZ9ikewWug0/TNL05cWlnDDjjcqjJ/HrmrRDseDWnw58R6qwaLTWt4ieHuCE/Q8/pXWaD8H7u1dpL+9hjP/TJdx/XFet7xk7WBOM4J6UBj1J47EU2kHMcra/DnQ4UxOJ7lj3eTaPwAxU5+H/hwjAtHGTwfNb/ABrohKD0wfX60u9eSTgL17YppILs5VvhvoDKQyXBH/XY/wCFZ9x8JvDFznc14pHPyzjI/Su9DgZ7GopYA/zLkN1BBp+grs4Ob4UacIvKtNSu4FA/iVX/AKViz/CXUIlIttRgm9A6FSfx5r1BAyYG9hjnBHQelSGXbzkenJxU3HdnleneCrvSZN91bkN/fXlfzFdFFa7QOK7cOCcHHpg96p3OlW8+WjHlyeq9D+FaqSJaucy0GRwKcIAyYPajUFvNMcfaIsxMcLIvIP8AhUUeoALllwPpWidyLWEeEEYAz71XMLIeM/jWgt3b7S4PJ7UhmhfkCmSZMkTP1FZc1q4kPfNb00+18beKb5MU/IIDU7BcwZbQPHgrxWTc6UGU+WefSusuLaRFPy8e1YZjkWcqwOM1LRSZjpbusRjlGKyJreOO5IB4JrrLuHCjHU1iz6a5ctg461k7lKxSktBEgaM59aAVK528/Sp4UcnackCnND5bZx1palFRij9AA1MeNivGDU8kJBLAVBvljBO3IpAVijMSCv51WuFIjIFaEV0jElgKZNAJxlR1oWoGVp9ofte8966u1iZFDBc1RsrJkG4KSa2rOUAFWXGKtRsS2STuDbKF+93xUEQLKVNOKZZnHIpgJjOfWs5blxOe8QpH5i7hzmqUW3yxwMVc8SSCR1A61kwOQu1j0p26gOuUyhFYslqd5B6VvbWk4FI+nvtyR+VNSE4nNS2m3kHPtTUXjHeteSyO75jiqUtqyMTVJkiRrhStPijxmmIQWxVyJcc9RQwGCP14NMkbacd/SrD+3as6ZjvJNKw7luKcA7TirMTAk881g+czNxV2xuP3oVjUpBc7bw9qJtbjypT8h4610d3bR3CFhyD3FcRbRl2DdMV0Flfui+VI30zVolnVeF702zfZZTx2rqZohIw715oLloZllQ5IOa9G0e9jvbNGyN4FWmSM8kITkUik56VfmdD8uzLVWaMIpdiFUetMY1gGi4HNUnkSJT5hyewpTcySkx2y9eCxqxBpR275jubvQBglri6mZTlY+wqza2ixAlhk+tas9uijCjFRrEPL46ipW4IruVxVbIMnI4PrUzKQ2cfhU0UMcuCeKYzA1GNoZcj7rVe0G3DOXcZ9KXXLUtAGQ5K0aBOPJ+Y/MKhrW476WNqYhJAAKrXFuZOQcU+Vtw8wUrljGGPQirZCMiWMK2GFUZ7JZjkkfStW5j3RllHIrIe5bbjHIrnqJ3OmD0M+fSTklAB61nfZNrFHNbzXZaPYeDVMxbpgT3NKLFKJhy2QViw7VU3/ADEDP1rqb62WGIsaxPsiuxYDirk7EKNzOfJbiTJ9zUEU0gkPJABqW6tJBOSo4FJFGp4JGajmKSaNW1v9iAN1ok1QyHYGINJZWQcZK8VXubMRXoYfdqCjQgt5rjGG4qx/Yk7c4JqzpsiLEOOa6iyaOSMZXmhJMTOTt9Dl3fNkEVtWtj9n5bk+9bv2ZVOQKimVQh9fatFBE3LOlShe1aV06vA2BzjvXOWM5EjITWwCxT5jxRfQdrMrxZXgmr8R2r1qiz4bpT4Zw7YPQcURBk1zcgjaBmsid1MmO+a1mCZwOKydQVFO4daOojat2BgFJI6quCB9ar6c++Ac9KZcyPJMY14oGVLkRAnB5rFvi0h2qpNazQMswEhzRLCgb7vFQUc9FpxEgZ8/So7m2G8jbxW5LtY4B6VWFsxYkjPpU8o0c5LYZbcKoagv2QKy5yfWuweyJBwoFc5rdoSVHoaLA2V4UaSFW2nBqaeKT7NhVIPoK2dNt4ms0BAyBUzwBWxgEUkgucWUmiXeVINbmnxGVNxGT1q3f2SvDwuMVLpcWzAxxTtqFyWC28yT7u0fStAWrgdM4q3FHGjBtuDUnnAtgAVaQrkEEbJztq4sQbknmm79v41BNdJCpYHp2qgLwZYx3yKr3N2jcE49M1nHWIDkM3PvWdf3/n4CA9aQi9K0isWQkg/jT0kbyxkfpUVvcxrBHvPJ4IzV64ZPIDLjBFaohmbqBU2TEsM1lWEKIpfaCSaZqV07zeWrcDqBU1vKixjntSkVHU3LmNZgQBVS2hFvIWZAQTWkilQxI/GqwcvLtYDGauxkOYxyZ2n8KkktAIQc06a0iVQRxUBkkjO3JZKGCMvULUI25AarrE2wknIroxbxXMec81ny2Xlk+lZOBopGYm0fKV61OpSMHIxUkFoZJvmOFFM1BFRwo/OmoA2VZSM5BqtM/wAuAeaseXx1qs5ABJHIrQz6kDgwJuzyahggkupgzr8tI04nmAB4BxitTzktIgxAxiknrYdh0kUVtGCQBgVzWqztcSFQflqTVNc+1SbIzwOM1lMJZeAatiISF2HI5pse4nHbtVkWrKMuDUsflKcYpIZTNvJcMIwUXPd22gfU12/w28GWuuaqbq6eSaysnBb93tjmfqFHOSO54rmXijkiZgCSOgHU1774d0pPD/h600+JgDEm5yOrORk8+5qKrtYqCNqSWMDIKquMEH64qvJOC46DnqTgd1/9CA/Oqct0rKUG75htZ1GMZyM5PPGVNQtckpglBuB3eWu4qcjJz04YA/SuZzRoo3LDymMn5lERG3OemeUb0xnI/KqbXZA2jhl+UIOx7xse3sajkldzvJjwMhxMdwAJ7qOqHqD2zRtRoyH3FU+T96cbP9lh3X0NZylfYtRsOS6XJPnbc4V1cd+mGPOG9Gqdb8oCPOmIQ4JCfPH6Bh3HvVFFniLyEJGwGCxO4gejj+JT6804u5ZY97LLjMaocZPrG/8A7KahSZbimaJmm2uGG6I4Kgt8jf7rdVb2NKJZJVLxscqMZ6PHx/y0X+Ie9UImmDeZFGGDfK5fhCe+9T90+4q9Db+dCGSF7eWIk7Q2X/A/xL7GrTIasWI5jLGqTwqHbJwDlZfdD2PtUu9iSvzMMfIw/kfRh2NVCrNE6tBvcjeYoz8jc9UPGGp8MiyJHKrOxddoDjaZuPusOzD1q0yGiYyS/M0UiHcN3z8ZPqfY9CO1RNdSifeWkjAOCo5MgHUD3H6ipCASVl+bIOXx94dMfX1H40ksAG5slSCrFupXHTHvj8xTErA19PGxO1HQYBKnAXpgD6g8e9WotQjljBIMe5dyq/cdw3oazJIv+WJjJDMRHETgDuQf/QlNRpNJaSeYsxmUjMpbqQONw/2h3HfrSUmmPl0OgC4QeVJgdeTkY7YqWN2UBWQBsZ4PH4VTtZYnAZV2nGQF6MOzD2/lVkkqBt5zxg8H6/hWqfUzaJHZHTpz1x3qqZNzEY38cBhwfapT8pyzHZn+If1oIBXrnIJAz/WnuCIhOoAUbkxxgjOKmSUtyChXGdyt+FUZ9qsHbKgnY24/dPX8v61GW2uXaNCD/EvHHv8Ap+OPSo5rFWNCbyriMwXEZaNuDuHFYU2nJbSeWcNG3KN6irrTkpvjZ9y9kOVYen1xnFPlkEloVdg5UbkcdT9feqhUsxSjoc3e2SQMHHTNTww4UNtqS9IntcqORU9jIr24BHIrqMCB4UbqtVpbLHzR8Gr0zqHpomj9eaNQMySWeEYkXK0xVgujkgA1bnmVnwR8tVWt0Y5jO0+1CYEVxpiE7gRx2qndae5HAGMVbdLlGwW3LTXnlhxkZFOyC5jDTjGxOzr7VHcaeSu5h8oroW1GEqN6c/SkFxbzLsK8H2osh3OUNkrcKKjm0yZhgKMHrXWra23UDH0pWtFONp4o5UFzj7fw5ErbnBOe1Xn0eNo9qLit+SzZRkYqPbtXBHNFkFzLh04RxYwMe1UbiLEmyP15rUndt2wZAquUjXnd81RJ9ikjPmjkgjycYqhLcbRkkcVa1W4kCYXpXPTzkDLHk1jYvmM69lkuL4nBK5pxsnZd6A8VdgMbYJGSe1b0FuxjUCEYPetIq+jJbscxbsp4Y4YHmrZfIC1q3fhuWZfNjAVuuBWSttc27FJ42H+12pSptD5kRXFsCu4DJqhJbtj5gMetbpQOg5xSLFGYyCBTSBnI3NsA+UHJ9K0ILRzGOh4q5PahpPlHSljV0YZ6CqSuJlGWDggqBisi8hIJ281002GX3rHuogAxpNAjJitsrk03Y0coYdquxfSh4O4qQNfTbwGPnqKvw3CSXQUmuYiZ4GJHSpYb5hdKxPFCBnd2y/P83Sugsbl7ZTscj2rmdOu1lQE9TW0h2Rkk8Y9aolo6PT9VuJZyPKLAd/SrzRzXk2JG2r6Vj+E9SgeeS0Zhvrp/IxKTnpVIRJb28cEYVQM+tWP4eeKj64A6illjaWLaOD60wKsoG85qJcFyoXAqSOKRSRIc094sKSo5pMEZ8sW0mq4crkYxWn5RkiYkciqJhLPjpTQypM+9drVhG4bT7/YM7HOOOxrq3seAxFYuq6eqx+ae3NDVwuW4biQMgYfKxrVkQjYB0IrnILoeUm49DxXVWo326MeeO9TsGhXFoGyMda5/UbPyLzkbQa62RtjLwMVl66FmgDBOR3pSV0VCVmc61khO4mqVwwhbI7VO9zvHlgmqkqHkHJFc2xvuVrrUGuEEZ6d6swwAW4JH4VXECZ5q4koEYQDtQ5XC1titLbxNGTtGcVlLp4+0bsYFar/f2mpyirjj9KGCERY4bTJXGBWW6tON2O9btxEH04nvisSCb5xHgdaQF/TLc7wG4711dpsQqOMVlafEG2nHNaGPJOcc1UUS2a7lSnA4rLuHCMRS/a8rg1m3s75JTk1d9CS3Cg8zdWr5v7oc84rnrF5ZGw3GK0ZX+TA4IqUynuXfNCqSzA8VVS8VSygfnVeIM5+8T7U2WKXLBEpiNFb5QozxVC/lBTcOnrVFlui+CpwKi1CSdIgoXFFwsdDZP5doCDyaV5W8wHArMtbpVslBb5h2zUiXRkbBGKVwJ7p23ZwaI543Ta/X3qMSKXwT+tVpoR5gZXxSGiaVEDA5AzTlZVHGPrVF9z5y3PrmkjLowPJFAy+w3jg4rntVQs/zdziugKgpuUke1c9qiuZMZ4zSYi3YxBIBitJYhtDEZz04qtYwgxRknIxW3DHG64xwO1CQ2Yt0o2YwOadZxLsB7ipNX2W4UYwCe1S2MaSAYJAIptWYrkyRlhT0tMtubirKtDA21+W9aimn3NhRxVIVyR7cbOD2rFv7UscA1ZkuJUOPmpuHuATikwRz1xYlRnuPepLWLoOprQu7aUJ0zVbTiwnIYGiK1Kb0MfU7o2+oJEM81rSXbiwzntUE8Ns+ptI4yQKq6xchYAE6VsZDLaAzSNO/QnFaK2cbx/KcGq1i6mxX1NWoZPn2nj0rO92aLY6Fn2244P4VTiXL5rTkUONoFRmBUBOMVuYDLptsIqtG4IwRmi5fahJORimWzh+c8VLKLKQ7j8jYPpTWcrlJUyPUU6N8TEgcVPGyTSEEAimK5SkEJiypwRWXcwFhuznFaV/ZCWT92duPSqRglhHJyPenYlsyZWZUNZtxPiFgetb1wvmKflwa5y+t3ztzgUmgTMeK7Edx17961zcG7QB24rBnt/LkJ/WkSVgPlbntzUJWdy7l250oK2+PvUkMDR84qO1vimVmPHrUd9rMcSFYxziruIff3qRjHGayo7kzS7RwDWVdXckzlmPB7U+zuAj/ACj5j0qRnc+ErL7X4s0u0bDI0wdwe4X5v6V7jd3PlEl5FXkliev/AAEfr+Feb/DLTYIdUF2JYrmQ2u9pFYExE8bAvXPqTXfXSvHI0hCRsCTlzuJAPP4dDn3NctWd5HRTjZajHDFD5kLEZyQXynpz9emPpUJfjaolkX72IlxwDgN9R91hzQWQo2dwCAswfuOnT04wfwNIZZ5FIVZS2cncdvI5H44/BhmudyNUiUFYpMqIrbYcl0G8pnsf9g/pQQsrHEEgKHDK3Oz2I/iT37VA7eUqJuKqwLL5AyFPqPUdcrUigcGHziIwHQRnJAI6p/eU+nUUrjsSALGwkjhEbKCWBOWjHqP7y0xpFjjTMkKo+conMcg74P8AA1MVVLJm3YFWyMPz9U9R6rRiaLLxC3ZC3zHqkh/2l/hPvSuOw5GiKGeKa4cx/fLDMkI/uuP4lqeCTGC1q4/iXym3FB6xnuPVe1QGVZSzLK8csZyFVcup9V/vL7elKGEh3iZpBI2UAOxJX9VP8D+3SnGQpI3ESO4Zl+ZC4yNrYWTnhs9mqNd67VdyWcbN7cGcYPGP4WFVrS6lfeCJJVU4k+X5y3o6Dnjj5hWumx1ZpGVwwzuJ6D0z7c89q6Frsc7uhkKny1cOCqgg8cjHf/eHf1oA3FWX5WAwFz94ZyD/AIflUhj2yh8E5+7tPB9z7+9JjAd0YFf4gw+6e49h/LrV2JIJogA5APON+0ct9PcdR+VUZ4QWkfeN+Q5wvA6gSj37MPrWo8e4AxllIP3QenqD/niq7ECLzEYlfvYIwVbuT/UfjUNFJlGOeSxaQswVCA7MvRCf41H9w9x2raguPtCqj7FkC52HptzjIPpWWyIZWlOI0jGXPURE4+76oaZCsNtKqI5VYz8gJy0ec/eP9w8Uk2mNq5uDaAdm7Z3IORx7VLjcozsOfbg/5FVIXjkIYoUfAUlOnHTHqvPWrIYN828FfpWyehmVJ1ZCyklo2TBjddw/P8qpOzklAEI4ddp6jv8A1/MVtRjOWC4z3U5Bqlc2RRg0MQPzHgcZznj+v4VMou10NMoxiMli0TRrlSrBujHIYfgaFKJvck/N1f1BHBx9RU8cfluyrCQzZzGx4Pfr71ia9eJBFHbKSjFs7SeVUY4/PP5VnFNtFyehovFC0e1SOapJJDaTFXcDNc2dSukfEYOKxtQub64mMu4gL712ORzndTzxTyEI1Zdxb3CNuifIrM0K9+2Qn58OvBBNaa3pkcxE8jihSCyKD3NxGw35IHer1vL5xBziq92TGCxUkUunXEbHnApq3UTRqBHI4NJt28Mu6p0aPHXFO+XOQR+dVdCsUngjZsNH+lRSWKDmPitEyZ4IFROy+1O4rFCO3kVuuRV2O3IwSeKiM4TPSrNvdxMMMcGi47D5EDR4Uc1k3UbRsdwx6Vsm5jj5BWqd6TeKQnB9aBHL3dwEJ55ptqiznMhx9TVm501IWMk8lcjrOvR2U5RHA+hqGijZ1a4t4omTjIrlLdReXY5ygPpWLda4945BbOeK19DkjjPJHNToUdTHa2ZQbFG8dK1bGJ0HI49xVKxtVlYNn8BW/DFtwO1aogrzpJ5ZC1RmhWWLEic/SuijhDDmo2s1ckFabYrHKXFrCIsKu0jvVQ2KsARyTXWzabGykVkXdk8X3BkjtijQZjraRQsTIgNVb9IhgRrgGtOSXny5Riq1zHGYtynkUuZFcrMS5tiqhkGQaytRXZCTjnFbb3IxggcVga5dIYQoPJqWxoy4ZRuI96sl12kZ5qhEoPQ1OqkHk5qAHhSVyenpULx85Bq2Iy2Oad9m460Bcsafq5tBskBPpVi58VSbCkeRWXLbkDPNVvILNyOKYGnoOuzWHiCG6dztdtrDPY19D2Ui3dpFcIchl5r5lFtzxnPrXs/w68Q+fYJY3BAkjGBmmmJncKTv461NFMXJUrihsBuMGlBGRgc1QhGTB4HWqsokCsFHNaKAseRxUboA9AGNaXTGRopBhqdNGVfeOlNvXSG8Ur1PWpjIjKNx60ICCWeQxnsAK5TVbmZo3Q52nPNdg671wozVSXw4+oDaz7Fbrgc00B5zHqbGSOPcRhhXp1kzmwjIORj0qlb/AAy06CcTySSuQc7Wbiusgt7W2gESgYUYoeojmbjUNuVK8j2qA3cdxEUbgmtm9jt5XICj8KzJ7eGPoBRYDkbi1njumMaEqTkGnCC8kG3y66kiEIM4qJTHv4IxWMqZspnPx6XP5g81MCpm0xw+UU4rZllG7aMGkV2zgCs3CxakzmrjTbhrgMFwKuHTppIx8v1rVYMZNtTLvjXDYo5UFzOfTJXtNgwOO9Yf9izRXQY4IrrGmYLxmqkkpbjGTQoCuR29tKuCOMVdMbuuGIFVVMnAzU4ZgME07WFuQyWLBSwfJqt/Z84fOfzrQ3kVXaaYybe1Fx8rGraTZ4IFWFsrhhyw5oMkgAFKbqUEIp5pXQ+UsWunukgZnHHtVtk/egcY7kVBEZimXyamJAXJJB96d0K1gaGPd05rNv7F5j8pAH0q3kuflJNPSJsnJNLmQznDos5kDCbGK0YtOmWPBOffFaRjYfdpfn29QKWgWK0Gkp992bNVrmzVZwSx2CtVJykZGcmkEXnrhlwPWncOUorHZlfugmnJFbE4I6e9SvpwV/l6VNFpi8k5z6UCBIbTaRn9ap3Ol29yMKvQ1d+yLnjrVmK329BinYClbaZDFEBjpV+JYYwAAM1KIiOo49qhnOzgDrRYRWvLOC7fDgYFTW9tBGBtUcVWzJv54p+5wMAmgfKWpoIJGViq5FIywqMYFRxRvIPQ1C8TCQgkk0XFyizrAVzwTUCPFEegqvKSsmGyKaw3AE5pcxSgieaaAgjANUfLhBLKAGNWltNwznOab9kdX5PFFwsY8umqJjMx5Peq1z4eW8Abew+ldDLANnY47VCZAqjGRVcwchiw6I0ICq5IHqKlayeJlJFanmYjz1PpUsSmUA/rVRSZErousoQjnGajeaNo2T+KlvoztXFU3gKkMD161sYX1IZFV4yh+lVo7d4hkEkU64VxN8pODUc961sMMM59O1SyyzFuYEGrtvF5aH1NZ2ml7yQsi/LW6sWBtNNCZQKsCWNU5mLNjHFal1hF4FZzozDdVElCchSRisHUWBBHety6VicAVi3647UAjlb1XQs3UGsaWZlJxxXTXUBkzxwKwrmBdxGKhotFP7WzAg1WlkDDrU8kQVCarLHuJqRkWC+OKvabbStfxNEzIyNkMpwRTRF8nSt/w7CDIzEVN9Rnqvw6tHjtNQuJAZZSEjUZwT1J5/KuvaNEbEZCt/Cq/MTkfLye55Xn2rE8HWzJor5TPmTHHYZAABP41ubklUxur5TJCQrtyO+D3KtzXLPVs3WxTdeRIv7tyN+9zlgAMAgevZh3qIqkpw6vlVDF92EA9R6r+ozVuQBHYyBFYHeZM5IPQSqP5imtGpTJ8xyGBzjaI2PRgP7jd6yauaJlMTEMcXJ5bgKP4vUe/wChqQTiRdgmyW58uLjc3qvofUVaEDLEd9vBCAMFXb7jE9P90+3SoAAh/ePCX3lWXn5/Yns3oe9RystSTGOgm4RfMikG4sX2/N3I/ut+hpAFR98JCuw2spA3Ae46MPpUiW25ndPOfHzOSuGA9GQ/e+opwBMZ/wBFi+cgDcf3b+wbqh9uKVmO6RBnKAqsZTts/hHqrH7p9jSyT+YXSdpU6DeUIG3/AKaL2/3qmmeNHeJn2SdSwjJb/dcdx70is42BpS78bXA3F/ZeBuUc5HWizQriwqryLHBLKTg+SXfBC+qSd/o1attcylSAQDG3zBUw3/A0/qtYzsjKxkZkQviQbCIWbpjjlTU8UiAlGadpl5jhdsSRjvsc/eHsa0hKzIlG6OnSRsABV3nnAPGPakCqsgZcqSMYPRh71SsZDPCswdmI+8GXaxPT5l7H3FXhIRwWxnueg9q6k7o52rDmhTHTGDyynvUUiEliSMn73bI/x/8A1VYUh8HBVumPX/GlZAQNwUjuD3ptCuZMsLo3A8mRAdsnVYx9M8j+VQrGy/K1sPLIO5Qckf7Q55Q+laTxKJcDeG+8VJyG9MH2qlNbAMgAkGx9428Et/s+3XK1m0WpEcLiPYqylUQ4RHP4Yz3Q+tacbGIM20Nn7+3+WO/9arIcHZvjLODuyvyn12/l0NLCqRKhAEaL0AOQB6n2/lRF2EzRDDZwAP5U9T8uD/PNVkyp2gZA9D19Afepdw65wegOMGtUyAe3G4EYK9CDXmviOZ5tfkjbbuhYruH3seh/z3r08E8D+Vef+L7JbbXluduFuYwc+rDg/wBKcUr3C5ls2yMnHFVS8Qid2Ix3qW4kV4Nq/TisTVyY7YRqevLVq5JEEFpr1npbXLZwzE4FYln41ePU5Gdf3Zb5SazNTi3OAo69azvsbZAwcngCsJVdbFJHs9vq9rd6dHM2NrjrUDxLGvnQSgr1xXEWLXcWnLBICF7VLYNfy3TW6zHaenNXzIVjtYrl5UyJQD9ao3erXtgwZgWiz1rj2utQsbxo2cnBzXc2QXVtHAcDftpRlfQbRFa+IxcfeO2rLaosh4cYrkpLCaC4eIg8HiomE8bEKTRGbvqDXY6ltWRXPzZqS2u/tTfK2PauK/tGOCbbM3NW4NftrVsq+c1pzIix6BHaEqHaUkDrzUc2rQ2aMNwGO9cLd+OXRCkHzcVyOoa5qd9vALAN6Va1JsdB4q8agyNHE4OPSvNb/UZryYuxJz61Ylsrh2y4Yn1pYdEvLpgsMDP7+lJ3KijNjnZGBya29P1R1ZQgLHPYV0+g/DrzcSX+STzt7CuztfCmnWSjyrdePQUKFxtoTw1LPcWqs8Lj6iumAlQglcLWhpEMS2oAiCgcVPcKpHAGKtIm5lpeIZPLXrVqK6U5VhzVJ41gkLquSaz45p0vGeQHZ2oYI17pwEJU1jGYlz3pt1qZRW8z/V1QstWt5pyOgFSxpFPVcqxJxzWJPeiGLnJFbeu31tsbaRkV5/f6mDldwPNQyti3dagoJ2kViXjtcSfyqJJGnk9q04YFBG7FIDPhUpgYq3EmWBrRWwV+expDYyQ8gZWqtcCFVbjA4qyIsgcHNSQpleR+FWokyemKSQEBtSYuar/ZlKbcYatYK2Mbarz5VgAuPwqrCKC2ZyABz6VraLeHTdXgkYbRnBNQKjGQMOAOaJh5si4B470mDPfbKSK6s4pUwQyipDHhs1zng6++0aTHGW+ZQB1roSXU/NVCHCRhKB2pWYMeBzVKaUpIAoJPtU0W5wCeDQBl6rZnd5o7VShcSFVPXNa+qgrbnFYNq224Use9AjpoItirnvU7XPlnCdqrGR2jDICVxUeQRkde9Fxlia8lZN+7AFZj6iQ+3fzmlurpUgK55x0rnJpJkfeMYovYErnQl2DbsnB71WujuIAPNU4715owCTmmvclT8xBqXIpIW4UrjOTn0qoXcPjYQPWriz5IJwRTpnUoCqg1m2aJCQIMbj1p7uqHdxWUtzM0+xQcVaZiVw+QajUrQme4XdkUyWVpVyKr/eHGKlhbgg9aegWJgxCBaiaM7twH60+PeckihixbHNMViLkEHofSrSbXUHHPtQYV2A85qaBQuABz9KlsdhBbeawwMCrC6eA24nmrKI23JXH0FKZDD8zHIoSuJtifYUdRkU86fGVyFGRU0brINy9KkbphTVWQrsrDZFgNilkSGVMZpGtDI2Tk1KkUYG1uPelYLlJLQpJuQ8VPsbHANWRAAdynI+tOZlXJ7Uh3KCKfMzg4pbjYUwKl8+EkjvTd6McFeKLBchjgUJnHNWIl3DaOKjNwkXFIL9d2FWgbLiwgdeaeVCqSOOKpNfoB3Bo+3occ8UXJsx7YjQvxn2pElLnOcDNMMiSvgEEVKrwphSRRcC07hYs5qhNIGIYnkVZkACAhuKz5riEnae1NsaLIjEy7gBQyxomQMn0qnHfqgKjke1V7jVCvIBH4VIzTjmC5OPwqo11mfHSs3+0HkGelT28Us43Eg+lIZZdopWG8jNQXIaNwEGRVYxTC5w2QM1fECtECWywpiuQwyt0xirBucnaw49cVTbezgDIFSICr7WzmgbQ+RweFByapeV5k3lSZXPOatyNIjAiqcl0JLpQ4II9OKBFj7AYyOdyHuKv2UUfK56U63dXjIx2qxb2w8t2ArWCMpMZcIrLytVXiQRZxV66UHpWfcFo4zzWyMymYwz5wKrX9nG2C+DQJvMfCnBzU8MDzSBJDRuMueHooraFsrwelXJseYWXpT47XyIduD061GVyMUJCZRny+aqsMLjv3q+8ZPSqci4fBBNMkz5kzzjmsi5s3nZj2rpGh3ISaqNAzHpgUwOXazADKVyaw9Q0/b0XrXeSWY6msXVYF8onHIpWKuef30AiG31rPGUPFbl1GZ7gJjNV7yyCLuHUVky0ZqyZ69K6vw2Y2Az9elcrtGemK6bQSqrt/iPA/GpaGe1aJGsei2keSd6b8fjn88ZrTf5/n8yQfMPnHAVscP9GHBpphNsltGDgRxIrFVztYAdB+f605VGQJIkAOVCO27/eTHb1Fcm7Z0vYjUsuxmMMTb8AKNxjc9Vz3VqVDlQc3JA3BYguCR/FGen1FTbtpyJHkGw5VEx5kZ4B+oqO4+RHZ4pJACoJMnMi9nGP4h7daVhEUyeTCJlSNtqbd05z5i/3GH94e47YpwjNxMy7Jt5jBKOijaO24fxe2OlJb2zFpJYZY4llOCQm5JPZgcbW/SrXl5hTEU7CM4IL4kg9wepXrSsO9ipsfYisLjIGUG/5h/uv3P+yac8QZXkceUz/K8knzIenEi9mPqKsHyw/zCHe4+Vt5KS/T+63PWkZYw3mAx/ux+8LjJUY6OO4/2qOUOYqxrMpCeYPMiHK7suq/9M2/i+hprmLymxchQW+8FIjHsw/gb3FX8QNDFEEVQhJVEXlRjrF7VHKfJBmWeAMTtMvl5SToMSjsfehwGpFQeYrOomkZwOIiu5/qR/GvvwaiDGaIbYpZIXJBTI2M3+yeq/jirjxhpvLctyMi3C4defvRN/d9v/1VEYyw3tc3BVjsM6phW6/Ky5yP96ocexSl3FguHtyWaO6l8s4Yk/vox6L/AH1rdimjuYwY/mQrkADj3GOx9jXPeRcc27ibep3Rgvl4R6o38Y9jzV20lkDLKWVFY7VnT7spx/y0Xsf85rSEmmZzimrmwkuGA3hkYZUjhhj+n8qsLllA6H8wDVPCyMRIQzZH7xRyD7H+tShivBCllO1sHGB9PWt0zGxY2rjAAwDnB7fSkZRt+YA4+7x0pEkAA8zIz0z3+tOWRZGZMHcvDZGOfY96oRQlt1YsVUHeMsp4DH1PofcU1MxY8zMmR/GAP++vw6Hv3rTdN3PX6etVTbomAFYDPGOfw+nt0qHEdxIo0ZFKKxDHAyeR/wDqqVUKEgSOVznB5IP+B61CwOCzIkjcB9vysPTH+FTqgHIPU9z0/wAimgFiOxtpbc3YtxkfWszxTpB1fSGWMYuIf3kfvjqPxrUKttwpI9O49qVW24XH5f4VSEeVW8e+Eeuao6jbAhsjNdjrml/YdV8yMZhuSWAx91u4/rWRqFkFAYim9UI4V9MDAkjJzUS6Q24FVyQc12cFkkg5FWo9PTH3R+VZclx3OagsZZ1VWXAWrMOlPBPvT71dLFbqikAc1YtbP5st/KrURXMKHRY5Q0k0YLnuRWnpun/Zcqq4X0FbZt0EeQKekaBenNWo2YjBn0cT3W7Awe9UbrSI45DlQa6ebCjI69KzJlzICxzTt1A4LWfDK3EwZV/KshvDBUkM3FetJboR8yZ4rA1WxBYtGMUOOmgmcRH4chUg4Oe+eatLo0A4/pWyoOdpXmtjTtJE7LJKp2/SnHnJOfsfCa3TZ2AL7jrXT2Ph+2so9giUH1x1rpLa1jijAUdqJgqjOOa1Aw3tvIYDAwfSpfJCqTUkweVwAOlNkjkVOuaoQtvfLApiIxmr8cayxbi3BrH8nLAkfjWh5ZSIbG7dKBEU8CKTg5qk8YkGzHPrV1bWeQk9qP7Oc/NuoA5nU9Od0YDgY7VzbWb2/wBzAbvXpUtovlkMaw73RAys8Z96lxTLUrHmGtm6XKkFlPcVw91I6zFWyOec17bJpYCkTIG+tYWseCIL+EyQjY+Milyhc8+00mVxjmunW0EkYIOGrNttFvtFuj50JZM/eFbMbBiJQQKzd0yyzaW7YCtxWqunllAIDKaraar3cwRRx61uCyurWVGI3R+lXElmNNoskbbkT5aj+z+X1FdrCElQDH51FdafAeWAFaWRN2cY8U4IKLkd6Q27swDqefaukaGODgbetOMCuBtWlYLmDLa+VFkjBqjxvAra1NSkJJHSsm3jWaTJNS0NHTeD797XU1iLfI/QGvUZ/nRW7YrxOGRrS+gdTyrV63YXj3dlHkjpTQDpSI5QfWrcOGO7PFZ8sLsx+YUkbzQvtPIoA0LsRywMK5wRol6qN90nmti5uVSHg8n3rAvLuPePX1osI7m2hgSzwnII6GsO4njglZSnNY1r4rS1xE5JPYVfiuXvJdzRcN04qRld4fNzz1qpNCsZCscitue2KJvCkfhWfOP3JJXpQBTHlRrwv41XuoXeIspGKJJCV2heTTZhcJGBjg+lJtFK5jyyT2y5YnHapYNScrxk1LcW8koAKnFWLbSBImAMVk2aoTTr+MzYkGD61NqEqyNlCBxVW80l4PmjHNVFtrpm+YEUcytYXK73IZLyWGbaWO32q1DfR5B3VVubSfPERb3qAaZdbQwBFZ3LabN7+24o1xkVXn1yMjKYzWbHp1wwwy5ok0uQEEA+9U5Noi1maMPiBHwJBjHer66tGybkfn3NYS6ZleeKmTSCOQ1Rdlm1D4hcnYw/Wpm1dHyj96xrXSX87r+NTtpLmbIemriLa69Ja5UrlM8e1Xl8QRNEHB59KzpNGeSDDHNU10iRcgZwKeoHQDxHFIAAcGlfXocckfhWFHpLbcgYP1qZNHkK/MM0ai0NAa+BwpzTf7ad8rmoYtFI71K+hy4yA34ClqPQQarGn3wPxqV9UiZMqe3Y1XOgsy4fd+VPg0MElScgUWYMiGpRSH5yQamSUdUPBpmo6FFJCEGVPqOKt2OlKlssZdiRRqK5GoQjLHr61Bcq+MpnHtWpcaYRDlTzUVtZPINrc4p2AzrRpR1Y1NPMyDO4E9sVqyWSxgYx+VQNaqx5FFgaM5L6VsKSSPQ0pTfJzwT61oraR7huwPrUx09WYEZ470K4GNJDIhO0NmlispZFDSDj0rdEIB2FQcVO1rgAheKdguc6tqruV29PQVfgRolwvIHY1qpBCgyQATUixQr6ZosIyCwd+VGaiukIT5AR9K2tsCkkgUboWXgLmnYDnWYrGCQc1WluiRlQ2RXS7IWBBUVWe1iGTtGDU2Kucs+qSrMAUPHrVafUN04cxnNdFLawsxGwZ9aUaZBtyQDmrjHuRK5kRa04QCNTnv7Vp2GtMUZXbNOTTokYrgAH2qleaN9mP2iHOO4FbpIy1OiuGOcgVQuvnT69atyyB0PY1mTFuTzVIRnyWZS4V4ievStq1jKsrHFQWcZkbc3SrlymwIVPWkwuX5JB5fPSqe4FuDVCe9427qrrdc/eoEzW27QSelRJEJHz6VUN6WG3Oafb3QjOCaBE0gydoWojAuM4wasC6jc9gagLGST5TxmmBRmjIyBXNa+pitye9dZd5U4Fcb4nlOVTPJPan0Dqc3ZW5LtK/fpVbUBucgDit2OJfIUY5I61V1Cx+QFetQ0aHLSQ7WBxXQeDYft3i7SrPorThm47KC39KypYn38jpXbfCqwWTxZcXhiLJa2hw3o7kAfjgGsJuyNIq7PWbn96+SoyCWIzjPfGT0B6Z96jSRdvys8ibQTsX+E/dcH1XuaLggptIBUjLt1xj6fePf8ACoFZGuNrblk5KB/lRWxgpgdj1FcdzoSuSG5lSQrOscXzAAlt5B7SAD1/+vUoeWA5upkZSdxESZMfYOvqOeagjaSE+VKY0kQYicqTsz/C3t296kUviSF5JF8s8FB88fqP9paLg0WJC/nFizEsm3duCx3P5dG/GokliiKMi7PLGNzAlovZh3X/AGqi2lF8oeRsfhVZ8xTfTuh/+vUu7cW8yUnyeAyL+9h/3h/Ev9KdxWHKSEXaY2EhJaFVBSU9cox705pmGW86XZHkebs5g9nX+Ie9V0RY15lVPPPX/llOcfw/3DUokZ1b97OskJ+/t+eEY6MP419//wBdUmIex2hUhG4P8yhf4/8AajPY/wCzQbgKHczKrDO59nyHnpIvUNTQ5UdVAlP3MZjn46of4WpBKXZmjlmSeM4ZWT51HoR0ce45oAcESbdFm4+X5/s/3WH+0jentQr5jV3uJWHQXQXGf9l1/rSK2zasrqI3PEYfCA56q3VT/smpH85gzpOwli+9KoBJA/hZM8/UUAIEKtFGLYqfvCEyfL1+8rf0oXzfNeRUcDIV5QCzNj+Fk6496idAURJ4mRGJKwM26NyDkEMPun2PFPB80AI90ssZOFbAlQei8YdfzoAtw4MflKXjx93ZyF/3D3+lW1fJVZWXeR8nHB9//rVSDBcuxCgn7wH7s98sOqtU6vuyjjehHJbkt78dR05FXEzaLSMzE9MnqT/H7D2qb5doTaQAPlA7fSq4kWNfmJZQfqR9PX61LnuCCB1b+laIklBIbrx60vU9hnoCMUzdk46E9AehojXYCVBGTnaTnn2qhCtDlw2OQMBs801AwJZgM8gle4+lP37vdfUUjBQCRwT6dzSsAbs4z8ueCCMUp3MenuMjNM3Pg5BI6Hv+NG9SeAMHkEHr/nii4FfUrX7bYSxhf3i/PGT2Yc//AFq4eeVp0549q9CVjuHzFsc1xes2y2mrTIudrnev48/zoTBlKCHalaEEA2jNV42GQOmK0YyCvy4qiSJoFU5xxU0aBVyBSkHvTPMKMFI4oAmJGzmomfCZzTWnTfg9Ka7BunSquBBNKdpJ61BAvmy7m7U6eVfuiltyCB2JpIC0cZwKx9RUO21ccitOdggPPNUtg6kc9q0QGdb6fmUEg5retl2qFxwKiggOMkVeiiZV5HFMkGkZEwoojy6/PSO/zBQM1MF4GKYmRSIqoSAM1niXLkGtXbuODUMlvEMkDJNMDPkG4fKRTQ8i9c4FLNDJHJuwQtKZUKYJouI0rS4WSMKOtSyFeQKyLQusueQtXpHyd1AEcqb+M0w24WPk0w3RLbR19qUySOdppXCxH9ihkGCKZNpsQXK8GrAfa20qc+tPKMT7UXHYwrnQ45o2LAEnvivOPEmkSW0jG14xywFev3IKRZFcXq8B+07m6PRuF7GV4NiJtt7H5wa7L7RG0eyRefeuEa4k8PzlwMxMc1NJ4rimjynWktNxvU6a4nS3f92RzTTFLeJuycDpVDRVfVojM6nb2rcyLWPgfLTuIyX09iCC3NVPtL2R8uTkHvXSRmG5Xg4JrO1/Sy1mXTqB1poLHOaneq6YBBz3pPD2nte34iyVQ9SKxPKdZ2WQ5I6V1PhSVkv4wRjPehj2O0sfCWnQy75oxIf9o5rbhtra3fEahV9PSlJAjznnFRCVWiKd6QEt2YkXcr1mtqUA+8OaGaNCS5z7Vg3MjGYhUO0njigDTuXinQybhx0GawrnaY9+cnOAKfI0o+XoD7U20s5Guo85Kg55ouBrab4YWV47ydTuwCB6V2VhaxKQABxVS3utsCxkdBVhZjEA60gJ7xBtKbazJrZWiI29quG4E+SG5qEyqAR1oA5u5j8p9oX8RUsKxEfvDnA71oXFv5h3gZqjNbKQSPlb2qWi0yM+UxIUA05JEQg4xVEQSoTscH2NHl3ABLo2B3rNmiZdnmjfGQKiDxk42is17tY2IPbtTkmacZQEYqLXKuaDeXyNgNV2UDPHFCCQrksvFRSSswwcH6VSgS5EkQU8U6WIBafAF2dOajYP5gGCRV8uhFyCONdx3U8YDY7Uk8ZDBhkVCsgLHv8ASs3oaIthtpytXbSdA/I+Y1lRyHdlquWzwuQQwBqGM1XAKngc1DCFjPzAGgyBRnIP41GLlJMjIz7U0wJ5AijcqimTzL9m3KQPeoWLbcLnBpWiEsBibjPcdqpJsltE1orKolEm4n34q5Hd4O1q46HU7nRdXXT9QG2GY/uZv4G9s9j7V0Tbh0rRRJNlZkxzIPzoKo5HyqQTjNYm4g80byOVP/1qLIdjSuYSrFWX5RVTcsTfKeKtwM1+u0PsuQPun7r49Pf1FVjAT95MHuKyktdCkWVu1lQDApqOEY7SQKrRssZ24INRy3CFvlPTqKALkkhJ65pBhlx3qvv43e1Is4wRnrRcdgliccgg4qW3uWK7eTihZkCYbn606F4BknAzTEyV7jyyGxVlLlnTJFZU7YlGDlTTmuykW3IFBNi5IxfcenpWetzKs+1s7aik1BkXA5qhLeEPubik2NGxNK5TcoyKgguDyDxVD+1AkfD8fWqT6xHu5YCkNM6VZB6ipWmiEB3MBXHnViW4bpSS61lArZovYRuPeJnAHNL9qDBVXk1zpvVfG04rSsmAXzGOT6GrjqKTNtNsY3yNRJeQS2zrxjBqj+8uVIQE02S1aGAK4wTW6Mmy7JGw5NRG3eRSavFCWG6lmiAAKtVXJM9FmtVyckGpY5hMPnz7Zqd7mLy9ucmkWISpuAxSYkZd3pxlbcrbfpVM6bOPuyGt5oyowartlGzUsdjAmS8t2yBuHtUf9oSopLRMPfFdJIodCTz9arNFGUKsgINMVjGTVYin3+e/NWYNWRQTvBNMk0m2YsdoGfSs99AxL8sxCnsDTUhF641hCSc1x2o3ZvtRwp4BwK1b/wAO3yhmgn3DHQ1zqwXen3m25X5s9aHPoOKNiPjapXn2p1zJGy7R1q1bxCRFc8A1XutPPneYp+WmMw75FEZYLXo/wtsntPC11fMBvvLglQT/AAr8o/XdXFSWX2mVYlHA6mvV9Ht00/QdPtBnbHCMbe5PJx78/hXHiHZHRSVy1Iyl2Hn+W64Y4AztzwfYd8ehNQ+XIxZJYkiYEgMzcHP8LH0PY9qSUIdgmi8yE5+aPqBx+Z/oT6UGMZ2SSIUAIBA3YQ/zX9RXI2dCRIGdo2S5kIkXCbtv5K/9DSuCJPntnGwAcOd8X0P8S9z1qESIQGZ7gER4D7cjGeuP4lPv0qwnmr+7aJsgbgN3zJ7oe69/xpXBjSERSAsGZjnPWOX/AOJP0/8Ar092jEpdXkJj54X99H9f7yUMJEckm22yn72f3c31H8JpA5DybpGCqcDAxLFz+qfzqrisHmKTG0s4EcgxkD9zL7D+6aftXeuyOVhEB+558yL3B7j2pVXBQiaNWlO3cseYpfbHY+9CpIm+DdKwXkRH/WR+6t3FAEYYDEsU26FztkJT9259Cv8AC3uOKeqDekbqxYcpDK+DH7pJ3+lKqJs+0R3EjynKm4VRgezL3pGiKOIpYWKuSVhLZSQ+oP8AAfancLDmUtDIWiEyjh3wPM47Op4Ye9BhMbxzLaIGAwoST93j2b+E+x4poSOKZ3VLguvymRTl4fYD+Ie9PCeVJvXeEkzmReY5P+ui9jTTJY0Mobekkykn96pXk9vmT09xUohBZVCpk/MqM+UB6ZRv4T7Uvl7GUBNkvO1WfORj/lk39DxUDJ8r+dEvlscn5eM4/wCWg/hPuKL2BFhXJlOd0m0YdgP3oHTDr/EvvUqKI1ITIX+BVb5T/uH+E+1Q4IVcJK7D7gDfvFH+w38S0vmKjBmkQozYaYj5M56MvZveqTJaLCS7s8pjdwfu7Pr/AHW/Q1YV2RcgqQeNhGMn39D+hqLYAxHlgdAT1Y9vmHce9NQKSQ42YGGBOdo9B6r/ACq0yWi3GS2c7WGMEZ5z7VJuPfdju6nofSqZZZTmMeVJD8rA9APf1Bx1pwOGYMWjGfvZ5B9T7eh71SZJZJBcuo2vjB9Mf40qvk45B9D2qFw+drP83uOHpWVHTcwDsvdTjJ9T/OncQ+VnwdhUPn5c8Y/2TQpATBygBzg8ge9NQrIgZwcAck9fx9/896XcFBAOQecg0mxhFIVfYTgeh6Y/zisPxTbky204Aycof5j+tak8NwuowyxPH5JUq8Z6scggj8M1X8Qru0oPyWSVCM9Rk4P86E9QZzQJAwV5q/bkolUwcAZ61bDkqK0RBIZSG56U2aVCBUDlifUVXMuZthHAoYFidk2Ag5NMjnBADHk8Ux8MflqOOFmn+bgetK4Extz527OVNPYquMdqldcIBnp6VWIJbbnNWAkj72yakgiEjgnpUTjy6t2jDaRVJiLYj44wAKJJGxtGBTSzDp0qGeX5SM81RI0yAOO9WSwZODg1QiKq+5uaklmRVyPyp3HYnMpQfNkk9KkT5huNUIZi7ZYVcznhT1poRBeXA2EDrWMpIly54rQ1CWOCMgrk+tY0bvcSk8haCWaK3JaQKnSrFzJiPhua5+51OHTydzAGqSeJ7edtvmUAb8JkEmc5q+rqwHPzVz8WooRuDcUo1MhiQeKQzoTPGCMnmoZbuQZ28isF7t5Xyrc1PHcSbcHmi4GtBI9z97pWJrtmRyB06Vchunh6Dg1JeS/aocEc00JnF6jajULIxnG4Vz8WiMiFgQMetdXdxNbybl+4etUkHmT/AOy3apn3Lib3hbULeO0FucAgc1cu7uPcykfL61y11aS28glt8jA5xWVc6zMoIYkmi+gnud5bRDHmI3FF1eZgeNz2qt4cn+0aWrt1Iqrq5KqcdM1QHF6g5i1LP8GegrrNAdXurdowM1x2qNmcH8K3fC920N1Fv7GlcD19BvQZHak8ldjcU20uEkiVicAiieYL0bimIyLkMpbGapw+dNLllwBWtMFdM9arBgqlVGKQyq0W58kZxUZYpIGUYxQxdGJJqtc3Pljg9aTYzp4LhHgDY5q39qiMeC3auUsNU+UxkjNT/aGaTBGD65ouI34mjUkq350rPHj73NYsUrAbWJoZpF5BJouBqsxjXJbIqpczoMOvzH+VV/tB24YH6VYgthImWOc9qYGfPdhV8wDBHtThqxntyoAHvUmo2f7sgDrWKlhKrZyQAe1SxphqCmJPPMfBqvbXE0oxFmtiQ+ZCIXAK+9ENmI2BjGQaSj1K5jOQ3Cnl+DTvMZDgDcTV+eJo2wVHNTw2wVfMZRVWJuLYQvMygrgd6vzQpA3I4xTLS8TzCoXBqrql5Nggj6GmIllSBxzj2qr5NvgqnWm2067AZOtTMNo81IHIxnIWpaRSbKP9lyysSuQDzVCe0vLSbdn5a3ItSUnbt+lNnczkZFQ4Jj5mZ9u8suN7ECr8UODkdKfFajqRVpYwOFxmmopDuIBtHPNHelKNjmm5xxVAMu7W2v7Vra5iEsZ7HsfUVDaJLaILWVzKi/6uQ9ceh96s4J6UuM9aQxME8dqcEA5FHQUDPvSZcUKCQQVJUg5BHar/ANrSZR5y4k7sB1/CqIBNPAA96g0siwIopmZgw3AZrBu/9EuC+flJrXikSKZXcHb0YDris3xJayQ2JlRd8THCyJyMf0rOd7XLpcrlZkbX0eBk4B7Uw3JJBXkVi+cscamVGAzgE0raqE4X+VJNtXMprklY2kuGLcrmrXnxsmAMGuWOqybuCKZHqcgfcxNO5LOinumQgH8Kq3E7jksfzrLm1PzF6/NTRfq8e2TGfWi4F9LoEnLAmobm5WRSAayjNGjk7uPY1VkucyHaxxSuBe80EEZqtMiuM5qONw3G7mmyMwHX8qYyVT5QxmlMgkIUDk9qhijLfMxOKmhULMDjPNVGN9yJM0rLTZMh3OFrVKqAFQ8is43EkiKoyBVy1QjHJJNbpJGTZr6fvQbj0FLeztO4GelMMvlxBV5JqEI2cnvVJEmnLcnywD1NX4Vha13MecVmOu5QVpiXOMqVIFMRDLEPtWY+lacBYIBUNnD5mWI4rTSIBenSk2NFIyq7Fcciqk6/Nx2qeQhJmxUMxyue9KSuBWlcqMZqMyArg02ZuDVCScg5zWLk4sC2Sc81HId8hIOMVTF2WJzSR3ALmjnuI0Hn2wnnoK47XJ/OuRkc56iugnlG0kGuavWBuBmhyY4rU1rNcWIb0FRvcFz5YHJ4GKtWKE2Bz6VX0xPM1LJ6Ka2i/dDqbenaSI4gxX5m7/WuxEfO1Dl4wEx0GOnXsOBWCs486GLHyFgDit24ZFiJlkAUHKyO2FHHRjXLiuh04dbkAAO51jYq/wArhTgKfUfzH4inB404BWLq+Yhkj/aX+orGufE2lxMxZzdvjD+XnDH+lZ0njW5biC0VRzgu3Of72B3rh5jvVGb6HYKsi4YGXyxhgU6Ln+IeqnuO1O8oeXsaCRQp3YD8x/7Seq+1cHJr+rSlcXQjTO4CJMEHvVZrm6mGJrydh2BcjH0o9ohrCy6s9FCMvykW4V+Tz8ko9f8AZPtSPc2wCv8Ab4ht+6xYeYnsf7y152I4+4Oz/ez/AJ704xRABhEhZT1K/X/Cj2g/q3mdy2r6cJXD30SuOGCAtHJx2H8JqM+IdOEKqzyyIekYBynGSQ2Oa5BMB8gZxKp/Wl+YgYXkBh1/2BijnYfV0jrG13TS4Z551lAG2dY8MQTjDL0PpmmnxFphgKKlyysfmiK/K+ec9eOOeK5UMSRjrwMf9tTQhZZFAwBkcDt8ho52P2ETpR4osypPl3xWMfKTgOhxkAHuCPWnDxTbKZHit5lck5YsMPx1Zehrl0bLBuDlUPXp8lG1ssSAQVAyPp/9aj2khexgdP8A8JDZjj7FOYSMshYHae5U/wAOM1KniO38zH2abKkqshcZx6N61zBYjIzuyTznrx/9anbsseRnnqfYUe0kP2EDpP8AhIbfgLZTGMMCQWGBkZyp6r9KefEipub7FlyoBLMDxxwR3+tc1Ex3cjAz2+lTABiE3DJIwTxn5KPaMl0YG8PEDRsu21bcGIUmXkc4Izjlfapx4g85YwLZkIyUZJB8n3egPbnp7VzjORExz1y3XuSD/jVg4BYAgDJUfhkf4U/aSF7GDWx0ba4CAfschHHCMOCfbuORxThrEeGP2eURgeoJX26/d9qwI5zt2jlWbjHbpz/48fyqYSP8pB9+v+fUVXtJEOhE6JNbjwqGCVV4AZSPlqT+07VSDMzRg5XOzH06fnXPrKxGA2Pfmpo5iDtODnrkdar20upDw8ToEu4JcFLhM9G5wG46jNWFUs2UAZV5wDyPb+tc0cFNjruGO9M84wsNhcZwF2scn6VSrdyHh+x18ZEijOG9MjBFUdZj36Vcqc4ADe2QRWPqmvXui6RJdGFZvKIyZTg4/CqOl+NIvEtrNam38qWRCAQ+Vz1/pWntoXt1I+r1OVyS0GsBuxUygDjNVwQvEhAYU5XWRgAeldBzj5Mq3XimJxltufepZMNgelIRhRmkwIeGcAetaiW2Iw2M1XhhUDex4qw9yEUEGmkBWmynaqgIVt5NWpLhJs+orKmlAfbVAWJXDtxzUlrJhsHmqDEr34p9tKA2c80CNtX4x3qtKvPzUxJznND3A3ZI5qriGudqjAoQeZyaqyzMGOOmaltCzv1oAn8os2FOKeim3fczZH1psz7G2p17mq0shCkHrTQFXWbgSMFXqazL/UY9J0xpHwD2p0reZdbj0FcJ40vZbyX7OjfKp5qrpbkLVnM6z4huNRuX2MwXPHNZttcXSyAqzE05IAnGMnpWzpWmtK+dhOfao1ZexqaZrcgAjmJro7W7LAEHIPpWPNooEBKgjiqenXcllOYZOVzxT2FudtExYBgeKuRvt61l2VyHQFTW9a/ZlTMmCT60wFRtwGMGrKsAuDShICPlIx7UvksDleRTQGRqESyKRjGelc20ht7sAjvXW3+V5K4rktZZYZQ+QKCToGaN7XkjJFctf6WGLyDBzU9lepKqhpOK2vLScJGgyO9JpDJtEH2PS0VuOKz9duVWIlSc1rSR7YlQ8DHSuS8SXKxELmjYZz13dF5BlcmtbRpT8rtxzxXPTTB5Bt5JrQt52Vo1HXI4pILHumlIjafGW4OKWZFcmMHrVbRp/wDiWw+ZjO0ZqaVx5wINUBky/bdPuMBfMib17VZ8zOCy4J9Kt3EpYrnJqhM2JM4FK4CXbJ5BwOaxWILEyA8VqzSgrjGazrgDacigZz1/O8FyJY3Iwa3dK1iO/QKcCRR3rG1C3DLnrXPO81lceZFkHviokFj05Z8A5NPW5H98D61yWk6/HfII5WAkHHWtRmLHCGkgsbxdD8xfNWLec4JUVhwg7RlqtQzPECF5FVcTNrerqS3X3qFo9ykqvFUUvMn5qtR3ceANw/OgCubNpGK561ehtniQDGcd6jkuIoyGDjPtV22vY5IsM659zRcDJu1lMgJHSrMc/mQ7SOgq28SSNu3r+dQp5MTnLqPxoAqxoNwYcEGrd3BHLbBiASKrySwLJ/rV/OpEuYMcyrimIywFiu4nlBEQYFh7V11pdGxk2yxhreQfK45BFZkttC5XBVmYZVQfve6n19qtWkn+jm2nbfbSAgN0wf6H2rOTuaRsX9R0q1uoPOtggU9dvSudmjWyOHx7E06a4On77eGfcg468Gub1XVvKDO7ZPvSvy7mig5fCW77V1hB+baKwZvF0UD4WTke9crquoXF1IQCVX071jFdrcjnvWTr9jqWFtrI9Z0HxlaapcG0kYLNj5c/xV0xRWGRxXj/AId04z3AuVBBXp616rp8rNaoGPI/WtYTbWphUpqL0LBGDTac7c80i1VyEgANPAo6DtTC/NI02HkgcU0NzUZJNAPeixLkPNWbS7WFXgnTfbSfeU9vcVVDZpHOOtOxLY290GCWKeJGEltKNysOqn+hrgL61n02+a3n5xyj9mHrXoMEhSVucDHauY8ZxMba3uEXJSTafoRUyirC5m3qYLuCQQaZv461WMkpXPlngelNM77f9XzmsrDuTu59cCm73aojNIUwY6FlmVP9XRyjuiZ13DmoChHTNSKk8p4QipPs02OFOapRFzEGx1O9CanQM3LdKmgSVSAycVpRWXnjIAB+lUoXJcilECvpir8Ma56Dmmm0ljB+QHFOt47mb5VjrRIybLdrEJZDkcCtMIkEeQBmqUrNpsS+dhS3Q1HHdBgWaVee1MC4s26TcT36VcVww9qyDNEOfMX86lS9iCj96o/GquB0VvGfKx1p7QK4xt5p8DbMVKT8+VpNhYfZxeUu2rMjbUyMVAr9Bii4OEGDzQBkXL7Zyc1UmusA1LcD94STzVV0BUk1QrGvD4ZuLqwFybqJC0fmCPaScdu9cvcrsdkbhlOCDxzXTaNrxsXkSc7lcKqsR0x249quXlzoV/bOt9LAGmIIMMfzp6ZbHXg/nXPOXK7SNFDmWhxa6VczaTPqiMiwRvsAJO5zwOB+NUJobqxlVbuGSB2XeBIuCR616Kk2lpHDGI9i2cgAhJzgdc9cMc4NZt1BpL63Je6jfTXrLM5W3cYjQdl96yc4l+yfQ4eW7UJ94H8ax55A9wGLV6Bd2HhqbV7jVb6eS5iJ5t0XYm7oB6nAx3xVaxt/Dmkzx3H9kyyTLLuElw5bBJ4AA44HrU+0iuo1QmZNlJ/oJ54Ap+hxGSSRkUueT8ozXTTXulpcmRtJDOsxMnmOCWJGMEZ7HtimQeJhakxW1qqQAgLCvCqP59av61GKsCw0nqVHvBaM8oAE0IyqvxhveuYvp76/cTzG4nWVjtIQlWPooHX8K7S48TrNCwNpE11ksC0IZWB9Sf8APFLJ4xuWgihtoUiVVAyqgfN/s8VzV5xqvfQ7MNzUla12cOllf/wWF3jG44gfp+VWbDS9Rv7qO2trSbfIeC8bKvHX5iMV1J8X6t5WxSAU/wCWhbr65qvL4q1qaa2HnYAYZSIAGQ5HHTisOSnfdnS69Sz0Q5fBGoJ5Xm3ECIyjdwWIYnGAB1HSqzeH9Wt4fNNg8iBtg2rkkf3sdQPrWg/ii4tNSuYYQTGCQzTcksP7pGO9Zs+savf2fzzv5YcD5DtAPX6mrap2sZxqVr62FOjaqJzB/Z1x5jDOCvGMf3ulS3Gk6jHGP9BugzblZfLJx1wcjIxzVYajqCBFW9mIU7xvJI3f1qaXxBq8wCSzlNpO0xpgn8P/AK1T7iK56j7Gte+F7m2XzYrq2KHG4yvsCtzk59M4pr+Hk8qMrqdpDIwJ2SvwSccAjjt+tZK6tqc1sYbicuo4Kv79sj+tLwwSN2ErAnjGSv0Y8flTvB9CL1O5snwzGD5J1SHzmAAwvyj593X86D4esU1B4v7X/dKAAqKGkLbcdMYx3rJTctwWkDEpwCvBH4d6mRwzfaGlLS84KAbwB046CnePYn953NKHRtFhl3yapLNAACYhH84wpX5vTrnoOlCaHpLAGLVZURjlcqCFA7EmqbSzLblnIIIA81GA5P8Ae/vfhSTSysigyH7Kc4EQ4GOnA5Gfr2p80ewvf7l650O1FwEtr14kUAn7RHncCONpHX6datadaaMLd7ZjJckN5srN+76DGMdce1YiTSTEJbTSjA+9PIOPoeB+eaj3uzH95JcTDj5DsIPtjr+FHPFO6QcsmrNmrNbaPMJ54DLsBAVYyVCKDySTnJp0lno8aQzedeSZI+VNv4ZwKyCDI2J2mZV+8V+Rh7Y70sTRW0xeK4dcnbnYc/TZ3+tLmXYdpdzejTRjHOz28ysPlCOxKke3TsKI/wCwbqDKvLbT7wVVn3E8/lisJpUZSQikk58x0H8s/LTGaIug86OLHdIyT9dx6/hT9ouwuV92biQaRFIvnai7Lg/KB849+Mip7eLS0i2m885ZWIWZV27PlPX1PA/SsBgihnBlbjmXbtP5E8ikCrHHhZmMbYJKY2kj26ihTS6A1LudA0enxqEN9J54POY8/L9B09asRQaRc20hXUt+HzvQfdH0rmhK+0BJZGUDIDFAV9weh/HJpElVROxIdpk2McjHUHOPw6+5pqUb7EtTtudIq6dBdJBLcTsJFLLIWVV4OCBjv7UsU+l2sT3qxzGWJ9jG4faYwePTHvxXPiVzIqmdAqqMBm/kR/SnvPcSRKjosgPTfGwOPoODT512Fyye7OmlfStX0+4t3P2i3kGx1ztHTOQeM1yui+GfD2jtHPEdRSXcRzPuwfUgDj+VWY5isbrGzLGjABIkbI989KcLpihYqXMhDA9m7fnxT512BKUbpM6KSbTzZtCtt5oX5t0g5cfxEEc5FVhJoLxC4CyRKg2uh3LgY6njrWV9suMZinkjDPhHcj5fUMB/OlN1c5LtI2d3zRblXk++OmO+ar2zM/ZXL4/sySNJHW5gdgMqDnZu+7wR3q9baXafPG9yZHdRkYA25PGPesB7l3DK7NIMEKCw+Ze4zjqPanRyhLgSGeIy7d8blc5Hf6HqKPbMTom+yadBF9jmn2TuCFZgN/Xnj0qsdHt3gTyr59zcKzpw5OccDtxWdcTJezeYZFLjZskA2kq3ykHHpmiS4hBi83hUKsGLdwSM+3Aq/bE+yLMnhy+SNnhuIJX6rGAVLfmaxdTsbyyIaeAlT1aP5gp9DjpWzbzwtcRNHOV2IxA35IYjGOTx36Vag1CWxt0jeUzFVDNkBmf1yenFWqpLgcJJeFm2ryBVuzuQF9TUfiSTTzrksmnODE6guFHCv3H8ulZ1pNh/m9a3TMmdTG/y5wKZI5+9jFV4bkEAAinTM7KRxVCJFHmruDAbaSC5TJy2GrJWdllKFyM1LGgLHLAH1NIDXaY4zgj3qrI5bdk1IbhlgEZXPviomYbDkdauLJZTih8wucc81xet6aBcSNn5mrvrEDeymsfXtMaSUMo4ptXFexwFroMjvuIyM+ldfpWmLBHuZefpWlb2SR2y5HOOaeJAuUGKpITZRuYSflCkj2rKm0hZXyEwa6dSojPAJqFXUbjtGaUrFI5qES2Muxwdma2d5njGxjmrptUuVyyDNM+xNbNnGUqUMIJJ4ANxLCte2v0Mf3uazsjb7VVljZAWTNPYRqXl19oXbgcVkXPh5dQQSSOR9KhOotGQJBwKbceKIogEVsfWi4hYPCcUT7gz7R6GtJbX7IR5bZxWcPFMItz86/nWLdeKwCQr/lQM6LUtTjtoCzsN2Olea6tqTXtwcdM8c0zU9Ylu2OHJB7VnW8byPk1LYy1bRtv3H8K1baMvMHxyvNMsrUlctV6OIQuT60rjO/0LXLY2iRzMA68c1rvqNqpH71cH3ry9OV4JBqzLZ3bxKyyufxo57Bytno0mpWqgEyr+dUbjUrX7wlX868/NnfMOZHx9aY+nXZH+sbH1pe0HyHcNq9mrZMq/nVS61yzJx5gP41xf9k3J+8zfnSHSGxjJz71LmwsdDdataMnEox9axZr60klIMoP41SfSuOWP0qjJpBBJy3tScgsS3MqW0nmW0vOema6qwttVubOOeOQgNXES2Dxpkk4Fey+F1jOhwdDxRF3F6nNfZNZALecajji1p5Nvmtj1rvpLUMPlHFJFYKvOP0q1Fisjjja6rEADIee+aki07UXBJmYV3BsY5UG4YpfsaREALxT5Q0OJGkX7ttaZj6VqWvhi93BjcOAewrpjZg4Za0baTYAh5PShRQaHNDQLlTtNw5/GrS+H5Nm1pDXVx2rOchVJ64zSyKI+XG3FMDmLXw5AHJkdmPuamk0a1DgBTxWpNKo5jHPeqE14IwScbqYJXIhBDagocmMnOM9D6j0NVbm8aeQRryScE9N3ufeqd7fk5LnArFtdaUazGjH5ScA1hOpGO50U6UpbHYnwnNf2bGO58uYjKkjIz715nrdjfadfPaapCY5uSuB8jj1U9xXuukTJLargjpS6voVhrlp9nvoFkUHcrdGU+oPalVpqa3HRrunLVHzkbRgckZY/dFSReHJ7lxJIpVf516deeCk0q5LoDLAfuseo+tC2CjsNtRChyrU6Z4pS2Oe0fTBAF2DAFdKiiNRjr3pUhji+6OfpUixlu1bbaGG+ow/NTlOOKVgiDk1H9pgBwTimkSyQnmmGnDbKNyNmkZSM1RDY3NBQkfKcH1oxgU8DFAiql/Gs32e5Ajk7E9Gq2yZUMCCPaql/p0Gp2zQykqf4XXqp9a4v/hJL/wAN6p/Zerjcp5hnHSRf8adxJNnbswCnnntWdqRSWzxIM4YHH0quur29zEJ4pAynqBUc1x5oXbyM5rnnVVzphQbjdlKRoXARIwB7Co0t4y+0qMVbit8yZxV1bNeOOauMepzydtDKksIxjGCPSm/Yw5ARTj3rZNmGOOKmW12j5RVcouYy47HavHenrblARt5rYS3KjpRLbccDmq5SeYzI7AZDMKvW1rtYEDirsNo20Zq3DAA4Q00hNlM2Im6dKlgso4ZQAMVoeR5f0pmFEwzVEnN+MbP7RFCikjDA5rj20+43lUkbAr0XX4RKIgOuayltUj+9jNJgcdHp9yxILtVkaNMR99hmuuis4wpbAzT1gQnpQhjY/E2lkZ89acvirSw2DOPzrz2Xw75aAcmtGy8JxvCGIyfes+cNTtj4t0uNc+av51Wl8ZafJkb6w18KQbBlOaY/hmJVb5c1SbCxcl8TWEsnElLHqtvNu2zLjr1rkL7QEDkqcVmx2FxBOVWVgrDb1/Kr5mFj0F5lPKupHbmkdhIQVYBh27GvN3utUtgVErHb60ReIr+JMyAnBrKpFVFZlwk4O6PQTJKpIVih/Sl+0EhEc5UndlQM9MVy+n+NIJnSDUEKBjgTen1romVSVkhljdG+68ZyG9682dOUNDvhUjJEv2mFnXcSnyFmGMgsKlWcxEvGzbsCNTtz8x6ken1rPlaTeCU6DnA6g9f8aj8xFUtgrlgfyGKyu0aWuXZm/eKzSZDjP3uevXPqfek8xl3boiADjCkEt6AVV+0ZAH7thtUbiOQB/KnC4CktsIOOOMjJ70ty0iwZyRz6fM/qPShn43bDjOCQudvtVYzDywpyTnOD69zQZA20b+vb/PekOxOzMpIRmDDnHTH/ANejdNCyMrgnOUAbkHqD9armVsgB8Y9DzQsuAflI569x9KB2JuVbdMf3oPI65+tP2hT8r/KRwMYH4Cq63ILE7VOPUZoMybstuPfAoCxaLuAVAYled2cH+fFAkT5Tv69Rzg1WEx65T2UgU0yFlwVAH60BYu/xskh9wAD/ACBpFkJBYNtI6ZB//UKpiXDg9O3NAnKjaxLZP8RxigOUuidt29mOT3JJ/XrSrMpUq7qF7YByP6/nVLzGZNrA5HTb0pdyghmwM9QaA5S6ZmwGEynHRmzkfSnC4zOrJLIkgGXZQef8az85woYE54GKXzJSxPyDnntmi4cpotLGxMjOck8KV2MffHQ1N9oyqQoW8onO1QEP6/41kJuPGBz3FLuOcsGyD1PNFxcpri4jaQsEddowxlfJP0I5FCygJu8skuf434/7661mb2BJBUlvUYpY2bBZwd2eoouHKaZaIuA8QKjvkfoelHnIi7hswxwMRg/n/wDrrOE7NJgEscfxUqzYAXBJH908D60C5TQMsRKhgjgDuc4+h7U4zcl42JzwOACP8az2kG4Zzn070hlCsPmOT075ouHKaH2iNseasUbgnLhM5+op3nSKoK4A7EAfpx/Os3zztOTnPsOKFnZA2G25PzDdRcOU1/tTMAXkJbpuAxn6jvSPK3yqXbavPysTj6f4GssXBKgZyAeB/wDWoF0yEgAlc56/0qri5TWE+0jkup7knP1Hv7UCcBWRSTG5GQMAfh6GssztsPykE9e9RLc8/Pv7DHSldi5Ta+0L83OQwwwHG4f41E16yYy2Tt5Ynll9/esoXi5fDqMdz2pPtiFt2Q3+73ouCiabXRBYNKcqcjn86dBceVcW7AjCOcc9utZIvBJIRkMPQNz79alSRZWTICMRxHLGOfXketCYNGwt2iKo4bIHseD/APqoS9YEqJX2twQCDx9Pz/Os3KqcTRGNuAjq2RVgRuJAsoDowyGC9/6U9SbI2LW5aY+WzK29gSHjwcdf5n9aravepGgtrcbPNX9+P6A1HNcCxjQS4e4z8uD9wep96zrtwXVuvvXTTi7XZy1JK9kU5EC59aqeYU6EZNaF1D5kW9OuKw5PMU5NdkJXRzs3LSdii81sQTMVw1crbXBXGa3ba43pjvWhJX1FxHcAA4ye1SxyF1DAniqV6264BPNTI4KfLSA0k1Dcmw54qQOHrFWULL15q9FOAMk804uwNF2L93PuWodduxbWbSEColugWPPSsXxJfi6iW2jOTnnmtEQzNXxFPOPLQUqz3TSZ3NRa20UMSjGWrRhhLEbUyKOVj0CyeZj87mtPyXPKc/Wnw2UaoCQM1oRKEQAAfWhRQXKSi4RenNMmnnZdhWtQFVPzUriEjnFFgTMIW94W+RgAalNhfMmC/WtHhOUPFPF9GFw2Rj1osh3OVu9Lu1yTzj2rktb026YEopB9q9Te4jkHBBqhd2kE0RJUZ+lTZDPDZmu7aTZIWwKckzScHNd9q2gRyq5KDPYiuag0+OKZldc8+lTJCRVhhRlBq9DbhBuUitKDTFcYVeK0LfScYyOnalYZlRNKoAAOPYVK6Ty4xkCugSxjVPu4YU4woV4AppAc9sulKKFOCa7m3tcWceRkkc1lLHGGTcBwfSulSSDyozvXp60miosofZgvBXrQbRDxirMt3bCTBdac15ZKATIv50kkDkUGtFxgiq0tsV4CjHtVy61azV8BlP41VfUbZl3BxTaRNzMmtSAWZcVQmgPlh15/CtC71GEjaJBjvUQu7SOMHzVqJLoBgTk7WUjqK7bwtrJ+wxW23GOM1xdzqULyOp6Z6+taWhaxaRzCHIB7VMNGB6/bANGCCDVpAgbkivMm8S3VvcGOPO0dKvW+tX0rBtxrVVE9BHohSMrxg01lAXnFchDf3Z6uT+NTPeXhXIY5Haq5kB1W0IOvH1qFnMciyA/dOcCuTOo3zuE3HJ461qQm4PyzBgBySv309x/eX2o5kCVzq2u5bSP7Yh3wdSO6/WrAvbTU7TzVcAj1rBtJ3sjtnKtE4wQOVYHuPb27VnXdzFE7CAMkeeOay8zVRvoi7e3ogcrE2739K5+91FIwWZqp3+qCIELyx9K5+WV5nLOfwrCtiVFWidlDCuXxE95fSXLHBwv86z5QNoA69qswW8t5KIYELOf0+tdZpfhyK0Cy3AEtx644X6VyQjOq7nZUnCjGxq+DL/ULawRb8jA+4e5HvXcR6nGyA5GK5S3tihG7p6U+a62ErDye57fhXpQjyqx5E/ed0bWoaxEiGNlDZHSubLM7HAwCePahY2c7mOSfXrTyyxr2zV3BJIFQKMsagubtIlODgCoLq7fyiURmAGSQM4rkNU1otGTGS3OOD0qJSUVdmsIOTsjU1LW44Ax3c/WuQvPFjsxWPdkVn3UstzlpGJ56elZsq98c1h7e+x0/V0tWdFpnjK7t76EMpZGYBl9RXqFpdR3kCyJyrCvI9C0qSedZpEwB0r1HR7cxRYH3a2pNvc5q0Un7poGM0hIQfNUjMzkrDG8jD+6uajk0nUZYmlOxMDIQnk1cpqO5ikyrdztE2x1aMkZGRjI9a4/xlbw6rpJWQgSRZaKTuprtyqazp32SVtlxHxDIeqN/dPtXBXcFwzT210rLKhKsh7GuOriUldHZh6HO9TmvDt27KUJwRwQDxXa2ssaplj2zXB20T2GsSR4wrciurjLMFYDt+dc1nzpo9Gco8ljTXVbdJMc1ZbWrfHoRWLb2JmlOBVmbRzjJY16cW7HhTXvGlHrFqz9cmrq6rEQAorDt9GkA3Bdx+la0GkTFA2MH6VomyGXV1OPGCMD3oOqwoQMVXNk3ORjHWomsTMRg4qtSDRGrx9cVah1WHcCUI96xhpjoPvZ9q0rSwbady0wLFxrkSjC1Xj1VJDnHNI2kq0nfmqXiIxaNYr5Y/fP90VLdgLV7d+aVK9uazXZpH8wE4rnUutSZSxJ5HAzTI5tQUncTRcDro2YJyanjdV5JzXG/atRbpkfjSifUSvLHPtRcZ0jQI7gMBWha2ywpnPXtXA23ia7cgmA/XFayeKJhHgwMD9KzjZiOvndRFgCq0Slo3JGRXLyeI5buIqgWK5z8okO1JPx7H61HBrmrQW8jyaPqE5DbSsMedv1wCf0/GtE0Fi5dxqXfA6HrWPJACScZp58XyROftugGBeeZYJEP5n/Cnw69pVyu5GWMns6IwP4jGP503IaVjNntxK2eMng1mzWK5I2jANdBcXFqfmIjC9zGzKfxDdPyqiWhklwkwKscqT3qdCjn5dPRsjb+VWbA3ukO5sZiqEfPG3Kt+FaVzHsBCLleuR3pqRE5PQEdfSpkk1ZjTtsPtfEttI2LiGWG46HByhq20oEQmfgv02DA/GsJY9t0AkZIJ++R1rrbQKkAWRMjbycZH4iuWVBPY3jXlHcxZbgQuqs3zN0XPWoJNRWH70mM9q2bxNIZg8sGXXkMuVrjtVis42l+yBv3gwd5zge1YOhbqdEcRzdCa58WWluwSNZJZQeiDj86qv4yuDkrp6D6yH/CspbMIm/AA7k1C6Ag+wya0jTgDqTNuPxldOR/oMIHciQ1es/E89ywH2RVDcZ35/pXKfLbwLIw5foK19IiZdp79c0SpwtewRnK+50J1mYSGMQJgdTk1Edel3hRbo2PvEscVXdCqYHMj1A0YjTYoLt/Eajkj2NOdl4+IJiCDbxj8TTW8RXQQbYo89PmzWNI5Vto5Pt0FCRsTulGe/JwKpUo9he0sbSa/dhdxSIfng0n9v3e4EiJRnrt4rBkaSQ56oOm3nFSRRs4Zdx2nv2FP2Uewe0N19ZvGOFMeeoIWj+1NQKnM6g/7grJtVkhTLkkZwBnn61qWypLtBIyeualwRtCVydNSvXxiZRx/dHNL9vv85M4KjoCo5NTxWXd1O3t71EbfdKSxwAcAVPKiyCXVdRAOJ2GewUVF/auqEBRc8AZ+4KvSWYIyRxngCkisVW5UEgnBOO3Q01FBdGJeazraxsyX7g4zwo6flWTNr+vDIGpzADjsK6WS0jdzG5GG4z0rKu9MaPG5SCGKNkd+2a1io9jkq36MoWuuarLcosupXOG7h8DP0q5NqF+Zip1e9UEgYU9/wA6pz2PkSAlNseeWH8LeprUmshPafaACdgxJjqB61bjG+xmpO25ntqWqLLtTULpo/8AfJOa2LW/u57JnF1JvyASTyKx3tpIn4bDjoa1tP2um6TKP/FjoaiUV2KjJiXmoXyT7RdTDocBse1ZdzfaokgmTULoovHEhrfktd9+i43AgjJ/Ais9rOazu2GzfG8zgr6gZNCil0FKTMua5vpbYy/brpiByPMb5h+dMgmllj2/aJCvdTIcGtk2duW/dyFO5jcdQfSsS7sZtOndkjMkDnkAVVk1YSbCexlZg+JHUdCGYkVYt4btACkzxgd2kxTrGSZyGtZvMPeKUgEfQ1sw3N6vMlm3XkPHms5N7GkbCWN3PGwSVnk91PBrcguYkxK7LGQMbc/Nn69/yqnDI0oHmWsLHoBkjP4ZNbNhao+CVtY88BUjCgH61jKKb0NOZrclt3+1gO2Qsakgt9/HfmtOPy2jjlyZIicAFeQ39KpSyWmnxOkpbDA7+OT7Z6VQl8VN5vk2NuuwdGIJP5UlSkzKdaKOpiXy2ZZGX7OvOXPT8TVF9ehgi8mzIlkHBlP3F+nrWbarNqdu4vy456DnH1FMTSZomO7Y0R5jdPusP6fQ10wodzmlWb2IWv3lldpZNzs2SSe9X4bjzYwCcke9Yt3pxLllJzUSfaLIg5JFaOHYxUrnWsGEIxzWfcIJFOQAagttcQxiOX5TU/2iGbo680r2KuUFVomwa0bO52nGaY9uG5BFQCMI/wB4D8a3U0yGi/O4d+QPrTVPG0Hg0wuhUDIzTVIDEkgVQgI2vyc/Sh5mUVWmuY42yWFZGoa38myBTuNFxmrd6qltGcHMhHAzWPb/AGi5ufMbPJ71Vs4ZLt/MlJznvXVWdqEjGAOO+KqE7kNDYbQhQzjn0rVjBjUACq3O7BNXYcEc81fMFhVkkJ9qm+0EHHU04xhFyOKgIHnAilcosYaTl2xUTJg/eyKkKbh1/CoijKSDTETMx27RUUkHmRld2Peglxzim+aQfmUj8KBFNtOli+ZJCfao/tbIdslXmkP3gfwqtN5Ux/eDFLlsFyLzYZ/lODWFq+lAAzQjHtWldWixjfDJ+FVftTqu2XBWi/cRnaVcEy+XJhT71tZUHg5rFubdN3nQNz1Iq7Y3iTR7WPzrUlXNDDY3EfLTGCjpVWW4lbKqcCmtuWLJamgJXYnOKz7uWdRlHI/Grke1hw2DUFyB93dkUmgIPsVxMqsJGJNDaXcN8rM3Sut062t/scZYHOPWpVgZidq8e9ZOLL0OEXSJy5G4/jVoaJNsOXOfWuskWJHGeDRKAgDbAc0rMRws2juDhs/WqUulN0WQ13z2D3PzHao9KptpcY3bjk0gscCukyRyfPyPamx2bRXkbrkYYV3D2cafLtI/CqN1ZRh84GPWl1CxvQ6UJbSCYKDkcnFdBp+lKFX5R+VT+H7UT6PCmASRgV09joqyIQlxiRfbIqlFJ3EYQ0so+4D9KsR2w3YZcfhWtPbXVqD5iqf93uPWqpbd8x7VokhWKp06NWyACT7U7dHbLh+ccqe6mm3N6qAqpyawL/U1iUl3GfrSlJJamsKbk9DSNx58wjU/eNdLb+GrK+08xzoSWH31bBB9RXm+l3F5caotwFK2o4Lt0z7V65pd1G1sgB4xxWdOfP0NK0HTskeXaz4K1jSZJWjR761X5hKg+fHuvt7VlaZodzqThmBigP8AEw5P0r3jANY+o6TEf3seEBPzKOPxFZvDQcrmscbNR5WctYaVBZQiKBAB3Y9TV0IkA3MePX1pZbhIMxD5nH5Cqnzyvuc5NdKio6I53KUndj5Jnm+VflX09aRYgOW/WlLJEvJ5rOu9QCg/Nj2pNpDS7Fue6WIHbWRJfiW4SIN94+tUrm6klyASBVH/AFUqyqNzKc81hKtZ6G8aVz1bRLSLyF+QdPSsfXPA1nLPPeWkIUXAP2mBRw3+2vow/WrfhXVoru0XawB6EHsa6aOZX+UkB/StdJI5m5QlofP1/wCFbyyv2hY74SMxSgffX+hp9r4YTzAzDLfSvZPEGjx3Fu08aZZTuIA5+o/zzXNQ26ysFtk3MepHQVCpRWpt9YnJWZiWemx24G4YrT88RjYvGa6Kz0yGD/WKJJGGCT0H0qte6RbrGYY4QkvJUj+P/wCuKmVZRWhNr7j9M1aOJVgAAJ6+9X542Y792VPUCuUFtJBl3U+YnQ1BJql/d7o5JSgX7qrwK8+piOZ7G6pdjfmtrUTFhKsbuMEA557E1w+r2txHq8rSBjIcZLHJzWpaStFJ85LE/pWpeItzFG5XMicAjuvp+FVSoOe5SreyehxM+mwybJpExIODxWhawQrHgVuizRx86801tMiK7lG0jvXpwpKKSOSpWcnczrWxbziRwDW1DYRAfvDuPvS2sHlqCetWG67u1apWMWxQ0UAwEFWFdSoyBiqSJ5x5OBVy2CbthbPpVEj3jRozgDntWXc25EgCLitC8YwjK5xVeN3lIJX9KYD7S3DEF6uuoAKqMU2KMqORSu+zvg0mBWtyxu9hHHY1zXiOI3mtxIxysQzXZwKuN3euS1LH9tSMAfuis57Aik1ugOOKebJSmcCp4Y2muPlHFWJ1MUe1uDVrYZlpbqMjH6Vbj00NHycGrNnbecuRjOa0PsbRlSTQFjEg0OJBxEOPWmTWcZO0Riugk+VMr3rOOCxJqIwSQGY9mkaZjjjU/wB7bk/maoalDMYlI1ExkdAzOcfkK3LgjZtFY2ohdgzTsMzUbVJX3f21clFGM+TuT/x/A/Oqs0fh3Y5v7Vr24/56WgFuw+pUBT+GasSK8w+ZmbjA3HOBQlqphIZQMe1Kwyha3fh2LciWd/GD0+1TGVV/75A/UGm/YoboPJpl+iJ/FGFRUX352sP1pW0/fLtUZHoBz+FPutN3wtE8TGGPBMUX8TerN0/mfpUsaK82kajZlZEM19uGQodEQ+wJ+9+FTxRao48t9NCY6eTG7lv+BEbR+dO02QxkxWdu+4NtYK2VA9BkH354rp4zcfZx5wVGIxtRsgfX3rJzsUo3Ofj0homZ3GZByR12n6g4pJmYcLkn26VuXQIt8bdoPqTk1zt6km/DM3stZSkzaMEZd80wU7pgM8bQazk015SZH+6Oa00tVZy20EBvmY9B9PWqd7Ozjy4vu9M1mbLQzrpQ7YBCovGAaqSofLwvLOcVcaIJ8mMADcaaFz5bEAAHJ9h2q1oIyrsB71Ih0jAUD1rqtJtTsAP3QvNczZIbnUxK/IDnGO9dzYRGCyluCMux+Ufyqp9gp9yC7K24ChfnPVieFFYFxI8kwDNhW5VRwK2rmNnhYElpXIDA9hSwaO0z5K52nnI4xSWhWrMURwRyBS4dsZIBwqj1z3qOWVnZShJH8JI4/CulfRbBbhUldEGM4bjcan2aHbkGRoyV4DAZoUgcG9zmENxKNu5ypGMKP/rVds7Bkbe+V3cEEYrZGq6MgYByxH91AKmh1TSHxlzGD1LA8/jQ2yoxRk/YmaTgYZRg+/oavx20QjyiEtuPPpWr9ihlUSQMrgjgg5ojiVQVYYKnJHtU3LQ2OF5CG3Hjpmo5oNr4XH/160IGDMQMc8dKbNE0Z3nO0ntzSNEyq0J2qAAW74qE28n2+MBcIN24kf7J4rVWI7VJ644NJFGhvYiWyQ3Q/Q009QlscmYibUO6NyABzWhpnl6zYOkhU3cOFdT/ABL/AAk/yqWWB5YiC3Qfw1jQedomqR3USu8ZO2VcfeU9f8aq6MZRbRebTY5d6JhblVx5MvSVe4z/AHhVKyUWcxEqMkQyrRSdcdCAe9dZdw29xFHPHL82NyT4OPYnH61Wl05NRLRToIbtgMEEFJB6g9DVJ33MGmjIfTYQ2HAkt1PlkqcnYejfUd6y2sbzTL0xxqsoHReu9fUVsSaXf2EvzKDjgHlHH5Hn8BVqwvFkQws26XkfMmGH5iiTHFWKEcbyzxSRptB5HmcdOCCPX6e1XXht5blQ7ocM5ZhyuSD0/lWsumJJEV8gCTIY9jgjrVOLSYzqLxNaSbAcAcg1F2Voc7eaYJ7NChXevTDDIAHes/T7+WC3EN/JG3OFcgZHtz1H611k1k8FjKZbUgyEQr3C7g3PTnjFcBJpU4so2l3JtYjMgIPWrS7kX1sjo5dG01lS4jkdN5IPlL8wPsDjP4E1KumvbWbzW7STImAyyIRwTioruA7IZFIJVQHH49a7fws0U9rcQFAd0Yl2/wB9CMMP5/lWcvIp+Zymlzwq7CMkx52kN/CfSuuGnQXlqrRZTzFB3JjcB9O49+1chqmlppGv3Cbn+zyKNrdQT0AH5g13WhpNb29uGKsIwxww6jikl7wTtymdH4ZlnbdLNuZeEdWwcehFWbfw8LZiyxMcnBZxnP8AhXUJBEy+aECqTlCOg9qtraNkmBsE/wAOcE/h3rpSucb3Obt9PMJYLD1HJFOis9u9NuNxrdaDacbSpHXim+WGYBsfXuKtRJOau9MQONsYAChT7nHJqhNpO8H5RXaS2+58kA8c4qtJZ56rQ4hc8+udDJbgYqn/AGXcxn5C1ehyWYJ5HFRCzQAkL+lZuLKujhfst4q43kUDT7pjy5rt/sCSH7oo/swA5C0rMLnGLp11uA3GrP8AZs5ABY/hXYRaYCc7RUy6aqnJFUkxM4KfR5Qw6kHrVZ9F8v5wuTXo76erDhc/hVaXSgVPyitUhHGWlh0JGMVqQQlRjNaLacYTjFSw2eE3dKpKwMopakvuOc+lXUhRRnbg08REvlelTpDuXJqiSuwd8DB21GYDnKirzjGFHFCoCc4p6AVVQjG6nGPdVvy8DPWq7cyVQhMbWBxxSSbZBnaBipSuQBTfJz60AUJLfccjj2qrJGV6jPvWtImBioXhJGSKBmR5Cv3Iqnd2R5BGQa1poTnjIqABud3OKVkKxzb2TIDsY/SsyQSWs3mcjnPFddJApO5cA+lZt3aJIpyBmpcQIrW4S7hBXAPepyoC4JJFYB36fOGQnbnmtmC+hnjDKeT1FAxwRVUnPNVZVIbPfNOu5DHHuXr2qvDLJMyF/Wi4HbWKslrFv6YrUhwpzjg1DbQRNZRGVgOKcrKswQNlKkojuraOSVWVcH61JJboAMircghVARwfrUbbSmc5xRYDPdSMgcVUkglVt238c1pSDPoMVWkldflxUWKRmSqvO4c1n3UQIOBWrcowOexHeqslu7lML8jHHI4pNCOz8MkjSYmUYKYOcdPfHpXSzFoImvLQ7pFGWiB4P09qxtMxb6fHsDCFR0By0XuD3X2NWnv1sh5qsM9Cqn5T7j29qbbYJGkuvW89oPtCYbuD2rmdQ1FGkbyfkSs/UNSLMzsQqnsBisiP7brD7LUBIQfmmb7oHt61Ep8nqb06PNr0HXmqHf5UIMkrcBVGSTViw8OyTsLnU246rEDx+PrWhp+m21idkKl5m+/M3X/630rcgs2cb5m2Rjt61koSnrI2lUVNWgVoLMSYigiG0d8cCtm13afF5QPmc5P+z+NNimQr5MSbB6+tExW2XLkk+ldEY2OSU+YspqjRAl2GOxqte640kZjjG7cOuOlZMzmeYv0B7dqaSkS/MRVAojlXcdzn6k0yS7jj+UHA7mofNe4kCRjjpmrcvh26eyaeIeZKozs9fpUtlK3Uyb2WWOQq2ADyG7Ee1Zby5Py5J9TWtbxHVLCS2kyLmA5jzwfpWC06RnaAfMHBUdfxrlqyZ10ooew7k0kcDzOAB8vrVq0spLlhJKOOy1uwWeMDYAvsKKdJy1YqlZR0RQ061lsphJASM/eUHg10q6puhUyvsmj5U+tVUQBhFAnmSeg7fWrsGmRxN59ziSXsOy10NxgjlfvFmTU7q8iCopjjI5Y9T9Kjtmt4WES/IDzkdz702dyeDnB7CqU13aR4inlQOTgH+4e272riq4nWxpCkbyMbabzDtaBurk9KdqkJuLIzWpBdcMpHfHp71xD+JJoBc2+pROVjOyWOMfcHZh6/1q14f8VQ7BCLyKWA/dYMDV0mpqxM4uLuPi1Rr6YrLCqD0UEUPppeQsvSi9hdp3mgXG8lhirWnyTTRHzOtaU8Kk7sUq2lkZrWqxEqPxqVfkAA6+9T3LKsrfLzUZKtHnvXaopLQwbvuPhhLZJ/nUpjIHHSo7NC7bmYgCnzXCoSoNUTcpXLujAKpzVaWe7kQpDwa0YYzPJirhtYrdgzYFICjYWN20I81sHqafciW2kWRMNg81sxXEAXHNQXJjLZUZHvTEZcl+0jKHixWhEvQgcVXaMSuOOlWml8uLBHQUgHSHpioSnmSLSRvuBJp0QJYn09KTAvDCoFPTFcxdRIb+VsDkVvs+eCaxrhR9pkbHWlJXQyC3Jgfeoz7VX1O4kuZlCpjHWrsSgggdPSpDbq4BAovoMqWME8Lhw3XtWvFvd8yg4pYIgFA9KnZARgGmgMj7UgBVqpyEEnaRinizeRDIWIFVkCrNhjSuOxE5Jk2k9apalb5QentWjPGFmDhqq6lMGiAHJpdRmSkeBgLUTybcq2APWrCSEMTj8KbIAYy84UQkgfMOWPotAivvdk8q1Qsx5baOSewqtDbqlwzyy8RjJETcA9OW9fpmrX2u3eF4ws9tBklghDFvqTg1FZfZ7qd0QyFYwGKsgA4PTrUydospLU3LbyxCAkcUYxktt5P1NRyXanc0ZEaeuMlz7elNlbMXlsAqkcsOrDNNVIokMjoTGgzluf1rkv1N7Ee9kU3DsEj6b5Mk/h61jS3C3Dl2xHET8rN95vrnpU2p6m9yoZVd36BccKOwrGLIHD3D+W3dTyPxNK9ykrD5ZXl3MmSp4UHgKPWsKWUiXYGLyFj9BWrqdyRbiKHAj2YDKOp9hWdZwC0t5LqQFiAdmeSTTjYq72Ir07IxGuWd8BzTRHviZAuWY4x9BTgGBMkhO85P8AuirVuoisRPIDuY+nPPSi12N7FbT7dYrnOzLAEn0ziusljMVhBFGDkKWP17f1rE0S2Lly2FXORXSSod6EOABGAQRnNKT1LitCpZ2xkjZmTB8wfeOfeo9S1Q2yC3t2w5+8yjO0Vo7GazKYA3OOcH0qqdIUTh9/GPTv9KVjSNjm3u3eRP3Eibj808g3H607WtKEFxbMs3mpNGWBZupzXYR2cbnaVGMYwaiudGt7hAs0JZVOVKHGK0g0nqRUg5LRnI2VivmtbyaNZ3EL/wDLy5YNH+RqzomjJNc30UEgZY1DAD7ufTmt1tBs43YD7Xhu5JxU9jYxWELJatLHvOWLd61ck0YwpTTvcw7K5l02crGWMe754M/d9xW/b38F3nay5Ixgjmqc2ns85lVIpScnc2Q35inPayQRRyTbTOrcOnUj3rGUbHTc0IlMV1tzlTzxWrsVoyyhtp6r3FZ9tG8reYfl3HpW5Bbhj2JHGBURRb2KRiAQFSAfQio7eFftcL7MFXByRVy5H3gqkbevFVbyWRHgEEYZidzt0wBTtqS2yssSAEkKAT9KpXt5pcJ8uaVd552qNx/KsbUL5pg0PmkDOSqrtJ/GqllaxyxTmVXg+VtmATuOO7U+S4XVrm1ZavpcMnki5CpJlfLcY61durCe2aMwSJcW7fOqMcOv0P8AWvN4rSNrRmjSJ51PKyZ5roNLv3Wzj0y7uCE25iYHmJvTJ7E1fs7Lc5vapvVHYWuqlsJfQLKAcMJByffuKkfTtL1E7I5jBk8q8XK/8CH+Fcnc6te6Ncolw8c8LYBPcfjXS6Nq2laiqrlVYryD1qHdbmvIrXiadj4Yt8rHHO1x/CTHOTn6jOanl8NXKSyJatIoxgiQ4ZeQcg9xxXO3inStYj8t3lsbhlUhuSjZwD9KsajqGqWGoBIbmRrOcRzIrkskZGVfH4jp70JrqZyjIh8U6Be22hskm6SVH8wEj2x1z71xNjBvjSN1w0oUqPfB4rutemjunulmQSYHmRKJWjZR7E7h19MfSuVt9k62kkUNxC0T5bzJA+GHuAOOKp7aCj5mja25e1t5WxtYCJvzxWroO+wuOAC1uxOAeqH7w/r+dFjFGPNjUfu42Ei57I3RvoOfyqfJtlMjgrMjDoOuD+ox+YrC+ho1dk+t6b9ruSPvCTDW5PfaPlx74OD9K7DRYLe406ExKfNRdr5GCpwOD7VgGKK60YW7SiMg+ZBOCfkYf07EVk6brmqaPemOSZ2nRiWXIYOnXIP+fWiD6kNX0PR0tDGGaMhCT8yk4BJ9KURyrKFkjJzypU4OfbniotJ1+y1a0RgUjY5GwtwCOD9K1AiRp+7cPH0Ks2c/4/jXRGaOeUWZpVHPVyCeuOR9TSCEqMkZHqK1GjjcEyQEg9D0/lUIsMH91K2P7jjIz71upIzsykkTMDx0PGTStDgjdtP05qzNZNCoYFA/ck4/L/69Q4KttYcjqKpNMmxXeAN2qIWwxirzL3pFA7jmiwFEWoDYxxUohAOMcVbGOc4pAoPeiwXK/lAHgDFPZFVckVOseT1FPKDaKdguVkUelMkjBzxVnHI4/Khk5qkIxLiAAFm/AVSKsVOOBWzPbs8nPTNVZoBkDsKGMpRRH3NSqpAxjmrCxhe1OQBTlqEIreWW6ipFgqzxJyB0pfLOeBVAVmiPSq7xfPitID5SKiMe40CKTJtqVQm3GOKkaIlsYpDByQM5NAFaRVLcCq8oI7cVf8oxjDDFQzxkjApgZ8iqV5NUZom5KD61pG3bPOabJAcYoGYxhOcsapXMfPHWtuS2PU1UmgVs8UxHMXttvQgjtXOu8tjNuXoDXcXEA+72Peub1W0HOKloEOtb2O9T5m5HY1OihHGDxmuOd5bKfcpOM10GmXqXmz5sNnkVmM9NghM9lGFz0qW3s3Dj5hwe9LBIYtPjC88VNbQTyLuztB7k0xj57YFcmXn6VU8wx/L1FLeRsh+/mqRnYMAexosMnacCTaQQaZI/Gf0qw/kSIGYfMBVVIhM+D90dKllIh2SXT7VU47mtawg8tPJkXfEeqkfrUtpbCNemB61MXkmJjtkLsOpHQfjRbuFrks11HZReVFJuGODnpWZau+oXqxoCYweWHT6Vdh0bz33TP5rd1H3B/jWxBDFalVjT2JA6f4VLuy1ZI2rXRtPn04209pFIjLhlZetZupeGWhtwdP4RBzEO49q37KRDCoVgT6jvV0dOaOVEKcl1OIsoIYExgST9x2B96suGYZc89vQVqarYxws17Eu1v4wOjVzNxfmY4Hyg9hVxirCcmyxNdKg2Rdf71VmkeU5kYkD1qEMM85JPamSkrzI2B6UN2GkOefqsYyfWqc86IMyPlvSobi+42xD8qq/ZmceZcvsHp3rnnV6I6IU+5q6FefaL1kOBg9K9ItQPIUD0ryFbxoJl+xoAyn73r9a9C0bWFlt0aTKtjkH1p05X3IrRtqhdb8O/aJ/t9i3lXQHzqOBIPf3rkbzSoUuzcqmDNy4PZu9elR3EcgyGrn/EEUMjL9n2tcMfuDv71fKnuZwqSWxg2yRW8e58ACtCGGW8AbBhg/vfxH6U+y0pIR5ty3mSDt2WtyG23xkkBgRxUSq20iVbqyhDHFbr5cKgf7Xc1IEG0u5GB1JNU7q+h02YJKC5P3VHb61WuZZbsCUtxjIQdMVxVKjvY1jEL+9BRo7YlQRgyd/wriG02+hu5Q37zfyrNyHHoa65nHZc1BLeKoEcifLnIPpWccO6r1L9r7PYxWimktFjmG6aIbY3P3mT+43rjsayPDukW9v4rju4o1EMrfvImHAPQ130MVvcMswxnFVZNG/4mq3UGBC3DqB39a7ZUPZxTiZRqKTakac9q+mzLEctC5zE5649D706MouSAAa2rq0+2aQbfJ37Mox7MOlcqttceSHEp39xXXB3RzSVmRagJFugVTcDQttIqbscGrdldrKxilXEi9auNJHgrxnFaXJMmOQR1HPhuQKmljG9uM4qnlskc4oBFu1WVWGw4rWSxaTDSndWBAbh32x5JFbtl9p2ESsB+NAi40VtDGQQAarNcwxwlRGD7mpVSNgTI+T2qpeBQNqAc96QEEMgdiQMVMJQThhUATYvHFRxsxYgnJpgTHhvl4BqeLCrk4qvGjM5BWrRiwopDI2iMjkg1nTR7ZGDZ4rWxt/Ksu4fbK6mkBHAoBJqyOcHNMRQYOKbDGS+M07AXo+RipHwFpoAjX6VBcSbkypGaAMNLliCpbAqvOEByDyfeppDHtCL1qvLAwIwKgsrS7wcFuKryjcQCatPG7tjioZVMZAIy59O1CGRRxpFJvl5A/h96zdRkMlxG7c4YYA6DnoParF+7RyhFPCHB9z3qpNiXZkquGHLH+nWgRmeZuVYzIibjnBzzzx0FbekWMFt5rSzs8h+8scZIHocnFQ2Wnqlwsqgkxjh3XjgeldBpqpDEw3YDtllPKn/AAqJq6KjuRsLX7OjLGz4+Vix9+pA+tZd1PI8+xyvkpnaD0P/ANatS8SBbrejurfdxG4wSfUH/Gq80VpIpyWicDHIyM/h/hXIzoVjnJ71WhLLHsCn7xQFQPxxWJLO02ZfOt5eeFUbsfrXVT6PYyqReSjaD0IHP51RuIrO3Gy0QJx1IyaS0KsYkVtLn99tAK4C7Nv4028wuAPlRBwOpNX3MYhdvm3FTkueSa5vUNSADjgMB2PSna7HsSBmuZY41HBbkVt3kDQ2OWGAMKmT1NZvhtGuGjdwAWJYe/YfrXQa+qwvFD95whAQHqQM5/Q1oo2I5rsZoMe+1fK8/d/U1urCAyMFzJtwOelZHhpjLZhucsSTXTqgOFxlsckdqjqdCKphlWMbUDN1yaRfPzh3Uf7mB+prUZFIGV7YHNDWUEn3ou3p1p2NIpdTPKZOTOd3b5lJpUimU/IZX/4Dn9atf2XbEjmVCP7ueKDYpG2ElkPoGOc/nSsw0K8i35XalqTnuWAqr9ivZPvv5fbG0H+daCptJX5cjtirQjiQf6sluuad2hGKtg8eWaUuAPTFNe38w7iT9cVqSAyMf4R1xUckeEyB944pSk2NLqP03y9+0HJUfd9fetiCFt2SV/3RgZ/GsrTYFWTdgknqc1uQW8ZdWJ4U+lEUW9iveW4IP8JI61jzROjKSeuVNdCxMkm1QCCcYzyKrS2oYkMoBHejW5k1dHLX0e2IlkG0D722qtumQFXGc5z1NdZJaB4iNgYcA8cVUl0eA4KjDdzESpH4VTbLi7KxmLpEU/zNDBISQPnXBpf+ER0+ciUWKDGM85xV+K3ubdgvnCZc9Cu1v14NXYY2nk2pcrvA5hcGPPtzQmTJa3MtfDOnLD+8gV8nJOMVTvfBsaj7Zp48hkUsCDjIrrDa3UcBRUW3dvumUbgD9VqW2jvEhEV4YHB+782Cfoen50WTJ5mcGb95LVUuwGmjIww6HB65rbW2S+tjbSZDxP50TDnI/iH65/CrWqeF97yTRK6K3Ow4OD9O/wCFVraC5hAhjZTcR4aItwG9j/nvWVmmKVpLQybmDz1kt+GdcmIj73XJAHpXNG3XTrpgzMkLnfxn5M9a63ULdhPJcRW7W0+7IEuTsb0B/ke1Y999ru/muRH5pxucAYY9h9aG+gopj9K1ZbWMZXzZoyREc/fQ9VPseo9PxrobSD+0ra3Mu5UVtyd9uOxxzXH29hNazmQx/KGzux9010ulag9u2FdQvXnvjrjHWs0y3HTQ2bS2a2upYGAa0kXIl8zJD9OnBHoawdUt5U1JYgI4L+Jt0G7LLNH9cenp0z6dO2trVdRtzdRMnmH7wwefw61zGvjzzDCYFVrVyVA4kI9Ac4IrSOhz9SjcTGzu4IctbkJgHBIDE5IB/iAz+ldVp2tXUEKvdo8e3hpogenYlT1FYlliawKG22J90iRixQ9RgDgjr9KtWMstleCIxK8EuEO4FlxjOOTwPrTtqDeh2MWpzbPMjdZos4Lw/wBQO9WU1DzuEfZ1znBP69K4zzjpuphbVpI4LtS0bRnIB9CPX3roNOv5pd3mwwu3CgjAJJOOg6HrWkLXszKS0ujQe5Qg4O1vUqpz+OKhVysnl8bV6YUYOevSpZI9qgGMknoSB2+oqIqY1JIAJI7DgV0pGDZLuJHBH0xTc8/dINKDTg3ODyKsljSpY9KUKO/Wnnb1U5+oppOaAFxilUZFMYkCnqTwOhoAB96lbnoP0pe+etPIAHFCApSKSf8A61VJ0G/2q/IPn5qpMuW6VQEKpu68e9MYc1OVPrgelRAc4oAdEpIOBxUyr2NM5jQD1pcgdDQhD9nBxRswKYWOacCTTAjbgn0+lN25GalmkQD3qILvXOeKYEDgsCeTTfKLLu6YqyQAKjMqhcZoArBctjHFDwFh04q0AuN1AbL89KAMqWMqDkVnyQg5BFdHNH5rDsKz7m2If29qAOflhABB61h6halgxI/GusuIBwcGsi8gDZGKEM861S0xk4rBgklgvYwhIO8D9a7zVLTaDxnPpXE3kTQXkRH98Gs5oD3uxjJ0iAt97aKtK7iMKKj0tGk0O3J67BTlJHHpVICvcRMI8nJqqkaSyYIxWq4kePAXIqsbdiwREJkPZetIdyHyUZtp5FXLWzLuFijZj6DmtCy0Taga7fb32KefxNbVtbl49luixxjrgUmUjKFgif8AHy+T2jQ9atrbfKFZRFH2jXqfrV5o4LXvvl9ep/8ArVH88ykn93H3Pr/jWbZpGJQuLuK3xEgLOeFij5Y/4Vnz3jCRUmKszHHkRnhf949/5Vfvbby4y1gign75PVh/Ss1baC3X7QThGPIPJB9vX61K3LaSVzYs2uYvnMhYgZAHAq6niBMEEjcOvPSsVL1jCVxhOqjufrUPkNI29htWtEjBq5ev9emu8xR8RngnuaorafLuY7R6d6GkihB2cn1Naej2yXjB5PmHp2p83QpKy1MSadYAQo/E1RcyXA3Mdid2bv8ASu31fw3FPEZ7ONVuVHCk/K3/ANeuAuBMbho51ZZFOCh4wawqtm9FRYGaOA4gXcf77UwQy3Dhjkj1NOEQHLYY+gq9ZhmYbxx6Cs4023qaSmo7DY7VIxhF3N6npV6CJol3yNtPrVhRGGCxRl5D0VRmr0GnrkS3ZDMOQnYVu+WCOZtyZFaPe3KYQmKLu56n6VcjSOH5UOWP3nY5JqckuMDgegFY+r6pDo8JkmJZu0a/1rirYh9C4UzYgvREzQ3IUL/ebgEU7+0otNuIYw2+2n5WQmuLudXXVbcRXLCNs7oWXpG3YH1BrG1jXNU0m0Mhi+1wRnMsGcNGe5U+ntU0anUqcD0fxDaJdQLdwMhKkFh1yOxrHhMsUYjJIGeM9ayPDviRtU09Q0ZiibldxyT7ZrQlnYv1/Ouv2KlK5jz8qsXjCyKGC7qrXSM0R3xHH0qzDfIUUFhgVO91Cy4yDXVGKRi3cybO4AyinH1rf0KZZpXgfG4ciuYvgY5vMi4FS6Vf+TfROWxzg0SV0CPSdgCbRXEkG31S5R3IxIxA9s12sMgljVgRyK5PxBprzaikqPszkNjvURGyggSbUiyenUVYJCXGGP0p1pALfAHJ7k1JNAJJA+cGtCSu5LOcDrQLZTyw5qcxMvTBpBIB1XimIjiQWrl14JqZ5HfJJ6+lMkeOVMLnNNjDlSob9KAJEbHU0pUv07UgiMabi2SacOEyOlICNQ2SG7UxgA+AOfWpVxgkmiJA75oAlhQFST1p4P7zkcCkc7BgGmxvhiX70DFkwScVkSDfO4PatYsF3YwayC5a5c4oGAZkXA6VZs1LNnpVTPzdfwq5bAhqAHXUhjOOuarohYEtU9wmWB61HtIHINAGLaKjyAyEgj0qW6kiR+Gyfeoo/LcEjP41Ukw1wB3zUFEUsxSUlep/Smb3dwxwSvPNPni2ycU0RyHkjC0IZmXeDJjBLNzT4LWNcMy5bIq99nDSqAvLHjNXorGTaCsbdducc5oEV4oMOwI6ZwB/WrsSKkZPlowB4BHFWLazKsxbCsQR83anyxLHGdwH0RuKib0KjuYk08Ml35M0LKPvKyf55qvcWdlK+ZGf0UtwQfrU8r2/2soxZ2zyijI+vNVXtbQSblE3zNnPm4X8q5Vc6NCtdWqvuxK7gepXkVkSrNGmZBtXsqAZP1Nbd5FbWamZk3HHHOFP5/4VhXl9c3LP5aokSDknqPoKOUfNYxL+WRom3/IG+6M81zN0puGG0YUDmulvlMdv85Jk6v3x7Vz7DAJAwCeFrRKxLbZ1vheJYYvP652KvsBzU2rSGa8Mj5+V3AA65BA/rUuihYtNgJ6DqfoM1NZW/wDabsRt3K7NHu7ljwT9OTQmVYvaHAI1CAAADOBW9EoZODgscn6Vn2MQiZlDAsowfTj0rQt+HG7oRWexsncuoqYA28DgZqdYgB8oO41AGAYYBIx0qwjGRg6jGOoNNM0Dy2z1+boeaBbAHAxk+tWd2Tgjj2pHI3jAyOoGOaYFOOOSGYgov14qKUuGbbjHoauyFEbLDDEcetZdyqu+4Mcdx3qZbFaEkRVt33SQOcGoLg75cc8cUkVkFPynluvNDJsnYjknriiMRvctadCu7BySTjiuiiXZEA3XOBgis7T7Q+UvG0/3hWuhOQp+ZQeeOa1SInIoTqy3B3x7XJHIOQamWIyIcqD71dnskdD5Y2gfMd3f2qoqGJSp4Zjxik0ZuV9iIRMAwQYJ7GoGhHmFcE+4q2ZDkOecZxz0+tNS7hRiXYdOqqcH61Nxq5TbThP8pB49DjFImmNs2ykzIvH3uRWlErq/mIODz+NWEj3kMSwHQkd/rRa4c1jIigksmPk3E8aNx5bYZP1rQtYJ3O2RAFPden4jpVo2gkwVAOBnGM/nTWtJos+S5Ht/hVWJc1axZS3aIhonGO8R5U/T0rN1LT7XUITIkeyVOoHGasKXiYl2PHU1G8+6WKVeBKpOPcHBoepGq1OH1ZZlsniLs5z8m5icVlaLKZdTmsXUSxuoKqy5DeuDXTa5Gq20pAI4Yj1rN8P6XjWFuCpCMEZMdiyK5H6Vmo6lylaJYkS3vYHS3jPnQHazb8lQOzL1/HFQi0dEBeFGA53RruI98Cs/W7Yw+JPNimaGSZAUeJtpRlJQ/gcA++auxX+qKivNA93GvJlsmCSgepjPBP0xUyhrYlS0VjQsnWNlRp/s+cbTsIz9MVvmFLyAQXJSbjhgQM++4d/rXJyX9vdx747+VkXnyZoCHQ+h7/zFR219OmBEeD35/QYFS7RHZyOkl0m0tGUIXz/dDDY31wKkW0jjQ+SZNhU5VAcg+uev4dKoW99bRJ5t7clOc4Y84/DitOLUrG4VFs5ELjgEyhQfyP8AShSIcRtxC9/aorRB0iYMjsdjqenUdfpV3TrRbSV3UJvYfNJjHPt9Kb5/ytueMbFy2yXcR+BwadZXcE7BY2kZzlhnCgj2Aq7uUkQ1yovyAK7FSSR/Ef5VC+5gc9TUp5c/LjHTvTXzt6ck/wCf6V2o5QBPfNP59KYucjJ/CphVAJt5zS7QRT+KTjOaBDACKcMHk9aU89qAPwoARsr2pwzj5jTec808/d6UICGXI57VXfHUVYkUkVC3CYqhFY89OadtGM4waXyiDwaUk+lAA6gpjNRquGyaXOaHBHegAZ8HgVC8rlqlOQM4pVTIzimBGE34LZqRgAmBSgdqeAvTFAFfaGWo3h4yFqy4C9Kb564xQBCwwoNCru5FPVfMb2qXGw8CgBmMLyarS5PI5q6ckdKhYAcYxQBXhsPtUnz/ACpWknhPTph+9WQk9w+KjilCAe1XV1PZwprCU9TphSbVzivFfgK4soWvLBmuLcDLxkfOo9fcV5JqlkrX8GBwZBn86+oLXUkk+VznPrXmXxE8E/Z7pNa02NTaM4aeNf8AlmSeo9j+lUpX3IlBo3NP2rpMKjoEFWE0u5ntXuIYCyqM4HU/Qd6padmSyhSNdzBQM9hXW6Pq0aMljcMN+MK/QH2qr2MzFttOkdVaY+XGe3c1orFBDHiBAv8AtY5NbF7YeZmWEDd3X1/+vWPJPsOIR83Qu3Uf4Ur3GO2RwruuWKjsg+8aI7mW5UrbjytnOzqzCqWCzbiSSTyTTkl8t/kODnr3oauC0ZdYxqASMnuuf51XlleQjJ47AUtxPGAZjhGI+b0J/wAaypbuW5JWEFU7k8ZrLkZvGasS3N55WVT5nH8I6D61Sit5Z5DJIxJbqT0/KrEVqo5f5v5VJJJhdo/ADvWijYmU29hpMduvB3NjqaqzXTSEheT7dBTZ/lyZG/4CKozeaUOFKR+grOdVLQ0pUXLVizzKow53t/dHStvwtqe+fyZSFI6LXKvIsfBP0qS0guWuI7iNzGVORjqazhJt3NKkEo2Z7EpDLkVheIPDsepxmeEBLtRw3TePQ1X03Wn8pVmzuAq7NrkUcYHV24CjqTW9rnHdpnFJaCIssq7CvDA9jV61s3uOIk8uHu57/StB7M3N19pvlVWJ+WIf1rRdTEEDqFjPHFYzrJaI1Sb1ZWgt47JNsScnqx6mp0jDgyMQF9TVq4gV7QmMbmUcJ6+3+Fcib25e52yMdoPCA8CuOq5IuCTNe4vsbo4AR6sRz+FY91YpexvHONyt1zWi6+aoKkBu9RGKdG6ZFRHDSm9S3UUTjPI+zXL2Cx73A/dkjO5fQ0yXSNTjt3nlIeIDBj6kL/Wug0tUu9budyfNGQBnqK6tbNdm1gCuMYIrtjh1FWZjKrd3OU8F2dnPZ+S6LuLZT2rsG8P2kwIaL9axYNOi0vUi9qNsTnOB2NddBMXQE9fX1qqKlHRk1WpO6OA1vSZ9FuRgs9pL/q2PVT/dNUYJHMgIzj0r0+8tYb60eCdQyN69j61zkOkRKWRgNwOMjvXTF3MWYEmZeCtVmtCZAVyB3rqZrBYQNq5rG1O6gtoyWdc+lUSa+l6o1vCLeSTJX7pPpUt7eLdum1hnPPNcF/a7zZWJCx7Gnw3WqMwKrtFK2oztMY/i5oLnGN1cuZNTyN0oH405L+8tWzIhkX1FAHRM82cr0oR2J/eKMVjrrzyDaIWFRSazJGwEkZANUBvExKT8tMSRBJkE4NVrPV7dwFkGM+tXjJAxyMUhDbthuRQwwacVLJ8pyMUk1gbplIbGOeDQiNbt5bHPoaAEKlRzUsIIG6kY7jT1wq0ANkYZyDTzgR5IBNNjw7nd0qaXCpjtQMrghieOKzGAFzJzitKPLEkGsmbBuHbPNA0MB/fHmrsTbapBgx4FTwnnGCaQy1uBbk05l+XIqEff54qVzvTC0COXyYSR0JqAoyyh/MjPoMn/AApJ7vL9OaQM0vJ4qSkyZELS7pJIzjsGzVk4kIXMYH0JquiAADFWYU+frxQBZghIUBSWA6AL0+laEMPmQAP5kT7shnHU4x/hVVISRlTxViIsAV25yMZ7ik7jJUtNrlZnEjg8ZHX8aSSaOEjCBE77QGAP1xSNGNu3nGKgukDRAA4HfH+fpUSWlxrcytT1aCHluh6lUwf0A/nXMzaq8kxEUE0A3AGVxtJHt1NXNai/0W3QpOxkPSNu3XP6VnSWaWW2W4T9+zLwTuAB6ZPT8q51dvU6EkW7iwBDSSbycjYzNktn61l31urSJaR/cT55Xxy5HJ/CumCGZ/tci5O3KL2HYVkOm+W5lLDbjYvHqR/ga0SRFzl9RhCs+7O8tyTXPzxKs3TjJ/KusvYDKY27MDKfzrnpol+0IvXaBn3J/wD11QdDes5AdAzjkh8H6f8A1qveG3LvcjbnyjtXHbI5/LmsqEmLS/KBwcNx9Qf8Kt+EroTX5jAKl8hweACAAf8AGpRfQ6m1IfJAPOPmPerQYrIVAyRT/JSOI4GDnaqrz0piCRBudWHGCSMd6zluaxd0WkcrLwBgjrUysdx2nAHPFUi5wflwBURvkRiWAwP0qWzoiro1HuG+VgM8/lVefUkhBMvK9wTxWJdam0xKRDLDuBmoUsp7h1eR94HOztSvctRXU1o71rhwY4yY/Xd/SpGkJusOeMALkDP6U22haNJAicDjfjgH0zVTUS0Ryp3MOuD0qkS9XobMY+XKiqqqTfKy9M5Oa4e61DxBbzmWzvH8sdIygZa09J8SyXjiHUYDbXOcBx9xv8DTuEk4u56DBcFIyuOcdKspMrEYJz6ZzXOJflcBscDBFWINVAf5MbjxiqUyGrnSpckBsYHbPrVlYVliHTPYmubu9Zs9MtPtN7dRwxDu55P09ax4filobSiOM3DLnbvEPFPm7mag38J2V7ZL5DMQSVH8JxXPmSWzm3Bgy4ySBn/9Va0Gs219b7oGDKw4/EVl3SMsJBT6g85qXZq6LheLsy3bXyyBG3YB5ye4rXjuBsVgFPPIzXE293JFlYSq7f4OmDWtaagxVQ+V7nI6VMZFzp31R0sb+XkqcggHAqZLhSNud3cZrGglLlicAnoMdalZXjJc8g9gDwa05jnlA0ptjxsWO3PbFVGRBLCgONkTCoxOpT5jn9KnMZfZNlsBDgelK9yWrHN6hbPdTCFeAW5Y8gDvT7i8WC4uEhjCW8SBAxHMpxgnPYACp5MhxtGWlLg57ADj9cVXSJbiys4bj7l0rKjHjD8kZ/UU4kSd9zI8XIy6Pp+tKivJCkZkA6ujZDL+BwRUdlPHJDFIjsYZMNHMp+6fQ+hrobawbW/C91YyriVcsnqNpOB+n61w+lCXRdRZNqtZyttZH+7ntn0pT6MINbHVxMk6zwzxgXCtySAzMT/MEd/6iqdxaSKA0Q8lTnHl/MmPw6Vrw20RgYxI01sVw0OcSw/7p60r28dxEA8j7x92cLgv/vY71Nk1qCbWxwmpR3cT+dN++UdJkjGU/H/PvWOrJJMEFy0d0pyBKSu4nnIxwc9jXcXC31rceSJN464kOD9PfPYismVNI1Fo7e9tfs7l8Ryodm1ieh7YJ7etS4lqRv8AhjVY7gRxXJR5E4DE4Kkj19DXV2lqYZU3cY3Db0x3/lXnxjOlaxCbW2AhYfOI337s/wAWO2RXfaFd+aZdOmyZ4DmFj/Gh5H9RVR00ZE9ro0pkAnI+6euc5/z3/KoMkoCRwealuXBVSUO7Ozn/AD/nmkKDaEHQV1o5CEA1Ipx1oIxxSqoI60wHqAxwDSYxQBjpS9eppiDjsaQ+/FG33oxQAoPPepAMjimJyRxUhBHShAMIOMVXkA7cVYbOKi8vPPeqEV+PWmNk+tTsi8+1NAB7UAQqOaVgGHNSbQKYQc0AN2jbilXinD6UbcigBjUdRSMpDc04LnjNAEDk8jBqPy8DJq06ACgqCMUwIACiDHWpRnaM9aVUBOTSuNoGOaAFDjGKjbD59RTgu6lMJVS2OKBozpZxGcZqLzWHIPFF3Hvm+Wk2si89O9ebOXvM9alZRRYguyr1v2d9FcxPbToskTghw3TFckDvYlW2xjqx/pTZ9XSBAkZwP4Rnk1pTu9ia3JbU2Li1i0mP7PbNmE8q+cn6Gsa4k8wEkkAdOe9RrdPLGJpyQp+6vr9B/Wo2JkO9sBR0HYCu2K01PMbVzrPDnibzCtjfthz8sUzH73sfetvUdNEoM0HEvcdm/wDr15fI32hTjiHse7/T2rrfDXivayafqTgdopmPX2b396mUbajuSMpJOQVIOCCOhqCWZYW2hS79kH9fSul1XTPtcZltzsnHf+8PSuW2+USuwowOGB6g+9K9wsRmF5G3zvu9FHQVKiDGMbVpyLkcVIMKfU+tUMRVLMFPyipvs6upEfBHWolLCZXxuAPSr5CRqjxnMbn5G9D6H3rOo7FwV2Uo7NAcsMn3p81vG8ZjZRtPepZGPUVXll+U5OPrXLq2dl7HPT6J++IGdycnvuHqK0bOGNEG/AxSyz7HDBsEdDWbc3oVWIPX3reCUUYVJOeiNN5/Nk8iEgHsxNZ19YajHZtfSRlYkOchske9V7O6DsQe/INdNpt0jp5U2GRuGU9PrXPVxS2iEaTWrKfh7XYtetZILpil3CM78/fX1+tTjxKtnctY3St5GzcLg9HX+8v07jtXLa1psOma2BZNmFzlWX+A+gqwt618BHdx7TnOe8co6MPVSOCK4KU5ynqbzpxSutje0/XDZ3TxPIJ4WJ2OpyGFWJpLKWeSdQFJ5bHr3NeUapZXNvqUU2nzyQwu4Wa3VvlU+o9q9I8OaZNLb+VOCFIyrHuK9GklNWOWd46mgLyBUyDn0Ap0WsWykK4PPHNXRocUMO4jcB97jp71C2nQZHyjjpXZFJHPJ3Mq4a103Wo7zOyOfCuew9DXVyKdi46Yzmsa+06G9t/KccjpSQzyWdssDhtsYwre1Eo3GnYuzR98dDVm1nVUAY9KxXv/ADAQrZP1rPl1TySQxwfes7ND3Ovkv0UEE4HvXLah4kjtb5wGB/HvXLalr95OSludo/vGsm1tGuJyZpGZieTVxYmjqbzxXdzgpFHtU/xZrFNs1y3mTzMxJ5GaludLvIYgYMlahtbe889UdDVEWN60itbSAEIM4qG7vBk+SMYpz2F6Y8qOPTFSx2EgQbxz3pgYcuo3TtjaRik/taeEYdS1bMVjukOR0qO609CeV/SlqVYzk10Bf9Sc/Sp11GC6Ta64PvVqPRg64CDn2q+PDsQg5HzY7UXYmihbaf8AbB8j7QOeKvixmgj/ANazYqkILrTmKRgkGtazE0igyA0AVYLvU4pgFXcnbNXnmuXcGRcH3FWURg3TinsSWAYfjTAam4HJp7sAOuKURjPWmldpORmgB8UqKPc96bcviLrSRpmUE9KsTpFIPLOKAKts2EOec1lPGxu5Dj5c1pDdatsPK9jVB5fMuTjpQBUO9ZioU4qzEzI4yCBSyMPNBHWpJJdijK0MZcSRMdOtIXVW9qpRzgjI4okl+UtuGaQHPSxRO3C8+tTQQ5IGOBUcALc4rRgUKvI60mxkfk/MAOlW4oVC7cc1KiDbgrzU0MY3ZJpIbY2KM7tvQVaWLHzBgMU9FUDPU9s0/YAuD2p2ERheTnGelVL8iHT7lnPAUDgc8mr+Bk+p4FZ+tBTZiJuPNnVcg9B1Ofbg0prQcdzBvAVaZVj3LEg27hxk5rzuGWeW7v55XeTyyoQk5yxyAteiQ3ROgm7uJF8ueU+WR2XcQKxJ9Phtp5SijMkoKr/ChPv371x2dzpTsjcm22um24yBIUBfPqEBP6msO0T/AIls8zD5k2HHt85rT1ecJacN8wwMegI5rF052Zb6AnIFv8q+rq2T+h/WtiOhUvohBYxtxkwjn2LGucaNmu5OMLxg+wA/qa6e+mD2CRqoObfPAz3Yf0rk7yYqzhTycIoHfmkhlgzEMm1hsyoJx7GtDwgFXxPe5i3Nwy4HHQf0zXNvcZWUD7qTAEg+1bvg6ZpPE8cmC/7rcgz1wOQfyFCWo76HozHLMH+U46k4war58reSeOAue2e9W2H70oAzqcAbedzHqadd2cccBgRSxc8uzenpUSRpB9DB1G9aOBmX5sMEAHV2PYVVh02V0M1/IVU8iNeMfWra+Q+rrbhQfs6Fx/dB6fievNbOm6a+o3BluWzDjaF3DGc9B61koXdjq9pyK5TstNe6jjaOIJDI21Qo6j1rYjtbe1O+KBixBAL4KqBxk/X3rWuZLSxCiRRuRNkcbc7BjHGO/XnPeoZ7tIbcAWxLYUgBiij68/pzW8YJHLKvKTKy2ssoMsrJDEjcER7d3Hrmq82mLndJHtU8hF++359BU8qCScNcgsYlLJGv94ccD68ZNaTQwJiO4XcVQeYqg4LHnGfxH5VdkR7RpnEX+miSILAuJGbOEGQAOvNZVzpUlsjJdJGVI+7uw35V6IjwyupdNilW2rGMA4OAP0PNc7qWkj+05Lm6jNw0pURxI+Fj+UZJ9vSpcUawrN7mDb3tubZQJgXUbfnPNWNOaJpt7zIAvOS1Vb/RbSVfPt1nVmYgbuhA7j2q1o3h9jJDMiGRGbY3PR+oB/A1jyu5vzR5blXU9Gg1CUz3E0ly7eq/Kg9vSn6f4QhQl1gYAcHK9K7iDTbeeGI25WOd13IrkjJBwRgjpWpHbCBo542k+cZH7zgjuMHj/wDVWnJfcz+suOxk6Rp1tYRhAGGcgvIhCj0qzLayMVTYCWIA5z+Vb0mmiQedbZinZMgngZ+nT2/GqqGa4twl0n72M7tyLgqf8ME9PSq5ehk6zbuef6uk1pM1zBGXQnEnqPfFLa3CSJuVuD6GusurKQpKZG8yNB8u3gk89Rj2rj9Qt0sLwPBEVViQyAfr7VjOFtTspVVJWZ0VpcExrgDg4rWikacBSAQfU9DXKWF7G2VBxk5INdBaymOMnzMDrg0Jk1US3SGyRpGI5YAZ6ZNa8WHt4n2gEqM44zxz+tVbuKO70nk7iMEZ9QatWKqlrGcZGQCpPKnPUe3tVLc5JPQ5tpIm1J0cHYqfKffPNVkklj1KGHduYSh3xjaQc8VpavpXlzyypnY5CnknBJ9ux9ay9QkgguDJJIzHGdqqQvTqScf1q0rbk3vsQaPraQ3aeaoS8aNnlVRgOq5IcDpn1HfFamr6RZ3r/arYFluFDPD2b1wezA8/iO1edS6okurzXCqI/LgSLl9xbkA4x0wB6dTXaeF786jZ3+iXEim5tpj9nkUYyuSB0+mDTT7kyVtUN0/7Tp9x9mvFfyc4S4HDAds+npVx52srmYzHDkAjKbo5U/vdPTr1qm9xFeW00E4kmubY5bkLME9/7wHrycfSr+n3cV5bG3laO5RGwhA2vEfocZH0zS5QuMnjg1OBkKRg4BeNGDDB/iBB4rH1PR3fzJYXjmYnDJJj5vr7471tPoNzZXSXthtWdQxCt9x0PVfoffkVW1JZDcMDCGiuOVQcNG3R4z+PI+ppcoJ9jiJ7sW8iWsluVCsChzzG3Rlx6V2ukXXlT6ZfhiQ6tbyc/dKkkfoP1rjtWaK4NxFEzrIhBBf19M98102hoZNHuw3WPZcKAejKQD/Ks3qzVq0TvtvnP52/ORwF6A9zSsu1j6GqunyAxlFfOD8pPfGMfoR+VXHfcBuHB9K64PQ45bkeRnP5Ube+KUrhcmkD9u1UIdtzxnmjkUobBpTyKYB1pu0ng/pSjg0hJJ4oEPRSKkOSDxUalhxTxwOlCAYzYHSoCx7VO3PsagPU1QhnJJo4WjrS9aAGlc0wDBqXpTRyTQAgUn6UoGOlNz8xFPPNADWUE5oCjpSnjtRnjigBpwG5pmNxz0FOIJJJpQwyM0ANIwMYoRSVINOZgSKkyu3jGaAGoAo4xTpiTbNgcimkMTUkagffIA96BnGy6mkV5IspxtPerS3K3EQkk+SE9Oxb/wCtTdc8PJBrH26TLI4+WPPGfWs26ld/lXJJOBtGcn0A7muT2Dc2zslXSgrBfakACiYGOg7D61VSMRMJrsbpmGUhbjHu/oPb86CotX42vdA/7yxH/wBmb9B25pMxWsRubtyFB5J5LN7Dua6o00jlnNyLqM8jebM2c9c8YrSsvD93q0wNw3k2g5VMcufVvb2rP0SxvNSvI7y6j8u2X/VQZzj/AGm9TXpthFGsK8dqmc2nYajpdmLb+DrRTmdnk/HAFNu/AOl3g2sZ1j9FfvXV7hjHFODiouwuZuk2VxplutnLcvcwpxHJJy4HoT3+tGq6Sl6PNjwtwo49G9jWmCKDgmhOwjiCHRzHKpjdeCrUhb0rq9R02K/hII2ygfJIOorknjkgleGYbXQ/MOg+tWmMM8j1NWBcCKB1kxsbkhvX1+tZk+oxRcR4dh37Vj3epEndJJxSk0txxi3sbVxrCpkKdxHGTWPda0CTlxmsG81QtlY8msKeWWQne+0egrlnXhHY7aeGlL4jo5tfTJG/JrOn1GWfIXhe9YYVVcHP51oQb5SI0TcfauOrWqTdkd1PD04as6bwy8UymB3BYHoTyK6GVZLdsxc5rlNL0me3uEumOGHQD09K6wTl1yOPrRTwsnqzjr1IKWhC+ybKSr19exqRtOEkKZ+90z6io2uVwxZcHtRpDz31y4LYVelejToRgrnDKq3oVtZ0TZbJcRIXZCNwA6jNdd4bl820QSDBA+XPpVi2tF2YcbgRyDT7ey+zyZThc/lSdP3+dFe093lZtoByPzrn9U2abMpZsQufl9j6VuI+2MEnkCsjXIEvrTa4zhg1dEdzBnP3GsKHzGdx9q0Yi1/agsuCfamRaZbqoIUAirCsbYjBASrJKC6Y9vPvXkHqKi1C0WaP/V4b1xW+ZIWQSbxSFoZ4zheaAvY4EaP58+xuBWlZ6WltLs2hgO9aVzaGTiPgj0qhsuoJPmJIzU8q6Fc10ascKsNuOKjFool+7jB9KW3mYDJ6+9WVkJYZ4pkjiEwFBGajkhVkI70yaNi+e1CB4+S3HpQBRYGJjtFVzvmk+ZSAK1JI4pImkY4PpWdBGWlO08etBRoWx+QD0q35iheTVJVXorbTTZFkCnqSO9FhD5QJHzinq/lHpVKOWUsFIwM9TV3tgkUDLEMiNnd0+lRSzL5w2cr3polRUK9zWbOLmJGkVcgcigRuBCw3A5FQs/zEVmabqryKVk4PoRV/fu6CgETtIiR5HWqkjs7jBxQ0ZbAzgU8jBA60hihXI/eEGszGJ3C461fnZjHkHpWSsoS4YkmmCJGT96pP41ZmiSRR8361A0yFgAeTTkUtIBnrQBCYtrbQciqmoyiC3O3k1pXKBCAp5xXOatPticbsVLBFy1jwBkc1fQgsBjpUEIyu4irEIycigZaCM2V/Gpoo2Thue9CMSoHcVYVcjrimgEEe7nNPztbAPSlCEqVB5I4PpVexk8/zM/fSQhh+dK4iyhIbJHOB2rE8VGQwW9tFJtklYZb0ByP5bvyrdkcRRs0hwoA5xz7CuY1i5xe3HmZRreJff9646fgp/Opm1YqKdzMumSU2djHEv2azj3sCepI+UfgefwrLe6hN1bu02+NZMEN6j/Iq9eQmGyxJ8rMN8j98dAP8+tYdjb/aRM0h8uLIKe+PT3rlb6HSlpc0r65kNo3mHdtIBGeuRzWRY3X2O+WSbBiEmwt6g4zn8M0SSSopDK5HK5xyM+vvUclrI8EqzL5bEZUsODVRYmie6ha3dkJLCPcoI9M5H865DUgY5HdVb90pyp9f/wBVdSk5mwgk3SIg3sx46YOQaytatongk3wvIrEcxuFwfXnrWiRD2OOtJW83IJ2SSEtn6V13goi01hZNyoJp1wW5ynO5R7k/yrip1Vp2MTwxqv3It2GHuc966DRbmd50Vlw0cUrwiIfdOw5JYdznArSxFz2m3DeeLWEsqGTBYtyR7/jxS3lmsaFjlmJxw3PXqaraNKbiwtZHbdI8EayHG35tvJHpya0gsUsiRuSUbaNye/H9KxkjeDMi1toxq8ipbxh5RwSG6ZwM81t2skOn2MiKuZBzgDHPrx0H+NV1ktorySfEryqAi4UAEDnA557VbWFltnlEZ3zAOcHBOSePwGDSiralTldWMW41y0t7jz75JjMMJEkZyF/AnH61LDrsBnTZFvmkJaJZGL45IGTkgfhXNa1aRQJ55fz5ZHAVmydo7muYa01O4uHNrJOoDZBUlQPwqed3LjSTR6pDrdkryfZ2RppPkMzg/MV5Y49B2+tXU1aG8eaG0cuYyI8SKBvc4OSSfTrivKbQ65A4YxiRFyq9sAjGMVfhudatzLOtsoklkDHYcY/Pp2qlNg8P5ndG+hl1DCPvWFSFYnq54H4e1RyXIjt3gDPJkqjF8ZcZHHtzx9Aa4tr+7h1W2l+yzmGIqZNifnU39vk3dzISYwTvztI3Me/Ppk0cw/q8kdJd2zK8864MpbfbqTgYU4wMex/HmpbGZnsmkwU8p908SjDZC8Y/DP0rOttTtZtOs8ToXjd06biflyOP+A5/Cq+na/DbTwbrln6fe5LEeueoIOOvFF9QdOTVrHUaejw6hcWMoxGS0kLnJyv8XHbqDWlZTyQ26wKV2BmjjVmPzPjdgHkj2FczY6tFcXMnlXTL5btsYg5VT/Cynr6e/StuS9t7a5tYTINiMxAUElmPAC/hjnPFNSRlKD7GxZ6hJe2X2uHKlCBsfORjsf15+lX5GjkjjuY8BJCrbl52nuP8+lcdNqksRmNrnjYHcHGSpG48Vt6bq6LEViQNG8h3IpzsPcD2zz+NUpLYzlTaVyeQmUbIYQlxCcvCejL04NZ9/pUd5EEV0SQbtjPnseM+46H1BrbkkSaaOaFtj8qQ3HHuO47H61HcFTcvbqpjlQCSIgEZ9cEdR2I68d6HG4oyaOFGlTQSedFBIFyVkjIzsPf6itplMdkjkBm3jOPTvnNX2jZNUlibe6sMh89OehH14zUGoKfIGz/lkfMIHPGMH/P1rncLPQ63UckrmjbqY7NPL+f5sqw6kEZx6Z5qdY1bbGrjDEMFJ64z+P8A+r86+klWtY0I+R1CkZ6ccHPtg/pU8kTP5YVi2EKB8/MDkHofYZrWK0Oeb1sVNSvRZW7ySOsR2kxSZCg5xwSe+T9Oua8e8U+IDaq0Em83aqGcvwqZzyT/AJzXpfxKaG08G3UzKSYdrJuGe4B+oxzXy/qOp3Gp3DSXEzMvREzwoHQD2rRxuRGXLqjcg1T/AE2IpkxrkfN1ck8k/Wu7ju7jTPE908U2E+2MSScEKxPf615hoaLLrNmk8yxwiQSSO54Cr8x/HAxXZ2F2+pvLMfvTl3KtzjLFh/h+FRNcpUXzPU9RvRaXMltq8EiLd8lwrrjd356bT3GfyrK1BxYTvewQE2soBdFIO35gGX3Kk/lVDSXlihlgPyosfmYxnByRWtHcQ+THDdri1vZBCxDcRSjIVvYEYH5elEXcHGxtaPqElzYo9lM7w7AyAnIx3H4VVmvheibzUEV1BJlXjbIkXsT7isnRPOtIbm3PyT28zLtGQCeh/Wr1vuTUJXI+SR2QE5GAeR/OiT0ElqY2vWyf2xcbBkSKrDHc4/xroPC0Zl025wh3GAo3v15qvqTp9qi2xJuEI+YjJHJrU8Mq6aVNO27cxyCT9cVklaRq37pr6btNjFIjN8km3r3wAf51qStlyCMfOWAPpVSzRTpsW3hm/elR39qsswOTjnPHHaumK0OWW4ZHQHNN4oORSdeaskeMClzmmqcn2p2BmgBMnNKG55ox70nfrTESD1p+ciodxHWjzDjAFADjjBqDoelS/wAODUJOelMAxmjgdRTc/NxQeDyaYgPWkHFLwaCcUAIMUuce1Jk+lKACPegBCflptOxzzS5A6UAIq5FNKgcd6U7gaFwHFACImaeFHIp2OcgU5V44GTQAY6D9PWmNlDt4Zz6dBTbi6S1jLs3PTP8AhSWTBny4yzdE/wAaUnYpK4v2GW7ge3vHBt3/ANWy/fRvUe1UF8GSbXUXZjkYkeYFz8n91fTPfua6uJUTBcgk1Z8wBcgcVlzsvlscDP4GubQb47mOQDoCCKzrfwTqVxeNcXs8LSpxCiglEHt7+9enrKrgggZpsbKGxjHpT52KyOU0/TrnTYx5qb1XqUrSTUYwMKcAdq3WRG+bHIrG1TRUu0aW1YRTDnA71lNPc1hKOzHLqAbvxUgvR/erjVv5ba6a2uQY517Hv7irYvz61kqnc19kdYL4DHNTR3yE4JrkF1AMOTzTlvW7E5p+1QnQudusisMg1z3inTGvbI3Nv/x8QDOB/GvcU6w1BiMM1aW/cjc1op3Whk6bizyN5pZW2xqTnpSjR5p/9dJj2FdEbBI9RuVCgDeTxVgRJ6DihUnLWRo6yhpE55fDIKArg0h8Mxt1gB966POFO3oKjW9kXI7VaoQ7EPETfUwR4XtRy0QFX7TRoIcERDHbitWK5BPzrxUjyR7cR9T2q1TiuhHtZvqRR28KDJXimSNBjG0D3pZCwGMVUki3LnNXYzZFNAnJDZB7Ve0fbBdKvRX4/GqCrh8GrWdq7h/DRbQWx2ijoKJHVBkmsKx1+CaLypX2yoMc9xRPrNuikPKBUWKubiXCscZ+lUryXYMN93PWuaPiSNZikeTVm+nubuBDyqnvVRJZea9iTv8AlWdfXFzOm2BWHvVjT7NFA8w7j71sxW8Mh2jFWI5vSLl438m8Jyema6WDYrfLyhqndafHvyyjjvUCXy20nlu3yj1NAGrLaq5LRnBrNmtpEbLruGetXvtkXlBojuNOjnklXDKDQKxSjhjZcd6fJDhR7VJ5TRy5I4NSSKSvSkBRkc+UQOtROyiHk1O0XBFUZiUyCMimMpsd8nynI9KntwyNjHWquQrZzg1aCv5W/PPbmkBYlKpt45NSrKOA9U0ZpJFLc4rRAjcgMvSgCKWOORtynH0oNq7J8rfnUpiUN8uRmgOU47UCIGt9mCzAmpwA8JzzxUc4ZoiRUcHmIdxyF9DQMoraqk7FlIUngjtVxEePvkVdykiE7Rn6VDGBvAY8g0AhHzs3d6j3bV3E5+taM8SrFkY5rOOBkFeKYxBIJFOelYUpzeMAeM1ufu1jYjrjpWEGQ3DE9j0qQLXloSpVeRSlh5o55FQPcjd8vam7mlfP607gWJpQqFyTmuQ1qXzi4Uke9dHfTKtvgctXLXe91bAqWCOvjzgKKvW6Y61StRvIz1FaQwFCgUhkqgE5z9KtRgYxVWJTkbqtpxjGKoRKDhDjv1rn9WkudJ8QW+o2kfmxXAMdzEOM46Nj15rosjHpVK/8todjIruBuGe471EloVFmVLr1qjJI5kmuAci3MZjCZGAQDycGorbTGaRtR1AgyyytIIgc8kY59/5UX80ttbLOVV12lQxXO0+hPb61zEfiadJnZ8Kc4buD7/Wudy6SN1HS8R/iG9e4m+zwpuwxzGoyB7k1nw3b2VqNqIJJRkyA8gD09BWo6l7+O3jXJk2mQD+L2J9Oa5LxDcyzvPaW8qIsTrGzn+I5wVH6UKPUbehn3moeZHchXBOAS/Xdkis+LUMKJFJYj7x3Y/8A11faGFbeVWwFMeMkbeQR0965u8nitJWWJQ3Y46UcocyNv+0Yi3mwIRg8sOv5Vpw6ghtvs0qq8EvJVwOc+noa8/ku2ac+WGH8TAdABSfbZXJUnrwBzxVxjJCckb2radYxgSRgI/OCVyv0z6+9YtkZ7e8ZILiOFpVKNI/QKSD1/CrNtNLHEVkYSI38LDIphdCy3At4xsyxUjIPp+FWmyLXPW/AesHVY7myE26aCJH8zZtA+g9Bx19a660njW9iiRQUG7j3zxivPfAmqSxwPFfSwRG8JCxQxhCwA4zgdMYOPfmu8tU8gmZ1Bd+UDD06YpSRUH0L0vlw2nmEFkQAlBxknsfQADp7U4TzzaRFPJgDHzEdB8xGPp0/EmmvKbmON2/1chwEAzjryf0rGkvbmWzey80CSM+eCOSQTz9eualuxSVw1a2a5uo0iO/fzkDgAYX+n602GwhP7lmY85I9Pzq3aQyX4YLHKVByCODkDAA/PP4VZlsZVuCwdCiL8qoQx/Gs+W+pspW0K6rHhwkYOTkYJ4FKI4kyX2kemcmoE+0OxjRdiH/WMvTHpTobad3JdfKRBkoeo/rQmx3sX4YIDtzH17Y4qYW9jcSeWYhk5yTTFtZpArKrAd3YYCgdSB3OK0Ut44IDNGqgq+JWYZwDjGPzx+FaRvYTqmXL4Z0dpQQiBj82fwqnN4A0qd8+Un+9yK3XtWadkDEloVZGPGGGOPyOalGIZ7sS/LtHJJwNpx8319qBqs+5yjfDu0MhdJrgNkYInP4dain8BywDdBeTq6jgswauvWR4N++PjcG64wCe3+e1FtKZ5HR2BG3crE9MVN1sW60tzy/UPD2v28TRQ3eVY5Bx0PrWZL/wkVgVN4XkIPyTqm05Hqe9evXSbZXhADrjrjBFc9qGmxtMAZSkbfxen1Hes5ND5+bdFXw14oN3bvBfRNBKrAhh8wfPUEHoO/Fd5BcCW3URMjG3YqoJIOD2OfY8fzrzOzsmtrxS6fMDw4PXH/1q72BCsEE8WXgICSo4zlSTz9Bn8OKqnO+hz1oJbGi53XYjaT96C6FcY6qOg+hB/Cs7UrYz3YuYiCFt2DgDowIzn/PrU00LvPa/uiPs6DazN82cDIP04HNXTbqbo7QiPIwywPTp+hwR+XrVtXM0+WzIdPif7CignKAHII5Byf0II/CtKCVZoyDhnBDHHAyCQcfl+tUtKlJdFlI3K23BUjgZ/wAfyqSEyGaPOVQnc6gc4GAB+macVZaEybbuzmvH94qeHpEeOJxIFKoSfnHzZx+GOK+X763ghvpltpQ9uWzEQc8Ht+HSvdvipqjPZzqjeV5BE1pcH7pbcUkib0bgEA/3TXi+oWtvLcR3NhHtt5lBaMn/AFL/AMS/TPT2rVMhEWkWEl5fxpztLDk9hXoXhW0aW7cBTtDMgz0Kjg/41F4S0lf7IN1IuJVeSSB8D5wiZI/McV1vgXR3tbJzOpMrYwD/AHf/ANeT9Kwm7s3irItzRLb2Vw6ld0siwp77QM/59qzYr2GHTY4ZVMluJGjlUd8dMH1+XI+taPiMPbW0aN8sNqjSSMB8zO2eB74JPtXP2kd3d6StqYjveVJ4xjBP3v6fzo6CWp181v5d204fd50LSSSDozgAZ/FVDfiabGWl0+WQOoMcgmAx/Ccf4U+4JTQYUj5+zrLE7DkEKAy8/QsKjsmLWNy7EACIHgdQCMj8RkfjUzeqCNrXG3MqSzCSbJiSNVZVUbjkdPbOOtdLpSsuiZfAZkMhA7DIAH5CsDRdJlvJTLOkkcMjmZw452j7q8+w/Wuzjg22CLjgoVJP+fX+dCTbCTS0CNAtjBGcE4UcfTn9ad5xOMgN2z3oeQqsXGFUBh/wHio5VxKwB4yTXStjnY8vnowP14pCwPXFQ8j3zSbiPpTETArnJJqVcYyGFVB1zTg2OaALQ9CaDjrniq4f3pwOT1piJCcnGacBUZwKXdQA4k9Cc1GwC96XOKax9qAEJHWkZsjFNB4opoAzikz0oABFLsoEJuJPFLyc0qrinBeaGMaB604KetOI5FOwcYoQDW+YcUmw5GKlSI96cVAJ6gDqaBDQvYfifSqt3ex2keM5J6Du1Mvb8ofJtozJJj7o6L7k1zV3Bf3Ds8lvI8ZOMKcGQ+hP8Kfqfanp1HZvYZd6hc3UnmxAHDbVbtkdlH8RHc9BXRaJ9oSLzGicseST3NT6HoB2JNMFMm3HAwFH91R2ArpEs0iAUDisajcnobRaitTKee4P/LF6dDfTLlJIXHvitbyolNO8mM1mosbkjNF2FO7BA75HSnfagGxuB7itMRIRggEEd6xtU0mVENxYcuvJiPRh7e9N3BNNltL3BPP4U9pwfmXrXM22oCXnkMDhgeoPpWnHcBh14qFIp0yr4h0mHV7bI+SdRlJB1U15tJrVxpeotpmpJsmH3H7SD1FerGTdkEYFcx4t8LweI9PMTfu7mP54Jh1RvT6GoqQ5tTopVOXR7GRZ3IlwQc5rUjbJGa4vQ57i0leyvkKXUB2up7+49q6yGYNjFc6utDombdk+HH1rdR8wn6VzNq5DD0rfgfdC2OuK2gzkqIyHObubK5OetRyBdvSlLk3MoPBzipN4AAxXdHY45blWOdUR1I61V8zceBU84Bc+9QwowfgZFUxExy8G4jAFRoQ2DkCpLh3ZduML3pIUg253EH0oQXJjgjHaq8hO3CjinNcIBtXk1Czvgk9KBIjZzuwgy1OluPKtyG5bFNDL/CPm96JIWAzICc0gZhSCW4nG1TgnrWnDpSsA0matJCigFVrViEbwjnpTsCMiXS4kUPGOQa6WxMdzYLGQAwGKzJJ4UIBIqSG5gtmDq+AaaBmi1qY1+lS2uFcZNVZ5p7mDMBGMVmxreeePNfA9qYjoL2VGj2ry1c7caUbhy7Mw9q2ImjjHzHJ96l3ozdqBGVpyNZDZJkp2zWtHLjDJ0qGaNXjxkVHApgOGPy0hmmlyGwTjinuUk9B7VntIu3chBp6z71AHBoAJRl8Dr6VVuIQRzUxcpLk8mmzMGXrzQIyJrQbtwqeFgUC+lPbJJp6RhoyQOaCiNwEAwOanjJ2jPWqT7wCDVqJsIuRQIsB/bmpSQ8Z45qLIK8c00c9KBDYCZZ2hzipJB5JMbmojbOJPMRsNVa7+0+YGMZoGX43jDdcUyezkkkEkb4qugkKhyhH0qyJWCgUAPcyRoFJzxVXfjOQMVakKyBQTis+4gkBIVuKYD/LDoze1c+XCXL7h8uetbQidYm+btWIQhdssOtSND3RWbcp4xSRPsOKFYKCAOadABK/zcUAMuVVx9fasK/zjCit+8AUY61kyxFzkCgDorZV25FaEK5IJ7Vm2rZXFaSMVUYoQyRy27ipomHNQ7i1SKpFAiwpwaju4Uniwx2sD8jj+E+/sehoUk9TwKnUqw5247gmpauNHKXMt1aSSF4lIPDRP9w+4Nc/5K3eqQFVO15QGEjZwASeAOOceldrqNi1ykn2WcxkdvvBj6YxnFckllfxazAXigKocFo2xjjuCBXNJNM6ItND7OTAu7gKRtUEZOSeTuPt0rj5dODElSFWSYsS3pgHI/nXXrLEkTLAfkJCHI6j5h+Wf51jT73to43jAZS4PYnt+eMVSsBy2r3IEhkPywpGAoA7j+p61zl/YkQrIQd+OQPSuk1GIoQjDKKu4j1I6VWO1bcGT51zlXPbPUUXG0coLV47hpMZTkEeoI5FIsA6KnzE4XNdBf2SoURceWyghl6n2ot7FTOGcKqoOSzdP/r0+YOVGc9tsiEQJ29arTbSojA4rTvXzIxZgB2A5wOw/rWbGvzSNyCBjPpQmJqxqeG52F3EjTPIyLIVUkhYlIG5ifXAH/wCuvaLe4imMPLbbdFOCDwD2/pXgttujuovnaNHyHbHbr079K9O8G66NVW4RiIowgV4z1GM85HXORVN6C5ex2t7cKscEUWVVhjJOcHPGf896x/s3nXsLI3doVweh2gdfQdz9acUmitoWyzFZFMpYcrtK4H0OagCGC8RbVogNzhGlOApOcE/nUN9zRbaHV2mI0W2sHaRcYLcDexHJ9cDrV+W1VUZGCRxbDhchSeOp/wAO1ZehyPawvNcXCzXKphVjOVJyBxgflWquBDJ9ond5D8rFVA56lR0z6ZqzG7uYk9klsUm83BWMkbWycnI7fTpVKG9SytZkESPNLKPlOQMD6/8A1hXQ3kJmEhOI1UYCjAOTyM9T+ZrnjYB78NI3OeE65PYe+azldbG8GnuXmuc20csk4MMx3O7vtAw2NvqenQVc064FxFcgnfE7B1B6k7gSeD04rKFhcyoscq5eI7jkHapY9DnqfbtRbtLblZInl8ySQISDkKobn2FUnYHC60OkglzqFskhXYuRPnhgVTj9M/gKqm/i+zpDej5JWdH2jlHBJ/UHI+hrLgt57WyJ3EylvN+Yn5V3EYyfYYP1qe2s5LrzUjlcs0SYBwcuowGx69c0OQlT6mhLIkSBN0vlY3xTggqVPIPTp7Gq0BltlkHylWAw3b5j1/z61nxu9vaLFMpxFvgOOgRuePXn8sVoWRkllMMEh2lM8nIHBGCPTpWb1ZaTSuSAviQ43vjkg1Fc2nm2shkxgjcsg5xjqDWmlrHGwXYds75MZbjhc8Z7c5xVlLP7JCzRJkq21o5OjL3pqBLqdjln04LbB418u6ACo7fNGSSMZ9j0z71env49NurWEBsHbvjByyA8FTj0z+grWu4IEhnECojxkSKjLxgeo+veuevLfzNQvJ/LO5HO/d3BAOQfT/A0+Wy0Ep8z1NyxlmNwzPMjRsdyuFyGzgEH06VfujE4MMjGLJXy3UEnIYHH6DFY8OY4XMZw6TKMZ+6MAt9f/wBVTyN9oSdo5cS7jGWU4B+4cj6A5/OrRlJXZoLLvupYhGVeT94ACORjjv6Yqt4g1Q6RoDXhYrn5POx9xSCQx/SrU+23T7W3zbEIIX73AJxn6g/mK8o+Kviy9stKgt7OaWCO9nVxJG3DRhcnBH/AT+JFUjNvocl4p8VXmrzpIc295CslteRlB5Tru447kEtz9CK5GztpZJkigIVUOGLHAYj1NbmtyXmoeRJczvI7bXcnHT/9ZzWXLDh0lViVmmywHbpUOZuoWPUbA6dZabaQ3YjSKG3VHKsSdz8sOOO/6V0cetWVpZmWzPmzSA4XkcY689BxgGuW0nSllgvJGLMbeQMQD2VgD+hrSW0/0EXSuTJZCLeDydikq3/jp5rK5bj0Lc63T6TfruQu8YnT5Q+U6ng5ycFhz1zXIL4p1EapDpczhUA+eSFFj2r/AMBA4C4/I16Jp/kJZwAEeZC0kRPqAMjP0HFeaeJtMGmzyTWi7FmZokd24jbAbI/2XRunYg1a1RnZXO30TVg+n3ryXG+CTDRmKTcVByGHscY/Wr0Oo6bGpMEJIC4yW+c/XAI59cV5l4cuZbUw71McrTbni37N4xtOPzNeg2kFp5cIg2CclgrONnT1Pr9ai7ehfKlqzooLsPaxyTERIxKKCcsw9v8AHvWzCVaNB5rFkITbjA6H+n8q5CCaG51B2vWdQ48tflOEwegwMdfetKyv4A8ltYzy3EoynmsMKOxY+p64qob6mcjdDiUlUH3cZ74zzilK+xHAB/AYp9vD5USRg52oBwe+Oee9OKtgjNdCMSu0dN2g8VaEX1zTSgVsAZpiKxjHal2ELViVAADxTQhxxQBXKkDNSR4z81PAAOGFDRg0AMzg4xmgGn+WcZHNJszTEAGKay07aR1pME0ANAA4wDRjilAI4NGM+tAAUB6YpOOnenhSRQIjwaAEGSMUdOBUiQndmplhBOTQBCiE9uKkWE+tWBGFHPFI7KiZbAA55oAiKYXJ4A/Wq0t9DqW+xjuFivVGI3I+Vj/d9zWRq2tFz5MBY7uAF6v9PQeprlry7Mb7o33XC8eYnSL2T39T1NVysDrtNtrhJXgniKMrfOCclj6k11EEUG3awFYOkax9usoZrlP36jaZP73196uPc7WBXOK55S1N4x0NyMJGML0qYEMuKyYbkuuc1YScrz0PtQpEuI24lMEhSTjP3W7GmR3gzjOauOsV5CY5BkH9K5/ULK508GQMZIR/F3X6/wCNTJtLQqKT0Zsrdgnrj8akS7ycNXKxX7AgFiff1rUhnEuDn5hSjO5bplTxFpjRk6pZoSy8zov8Sj+L6iqNndiRFdWDAjrXVRSErtI/+vXJ6pph0i5NzbLmxlblR/yyb0+lTJW1Q4P7LNWKQOQDUpAP1FZUE2QOa0YpVYD1pJ3G0YPiPw4mohbuDEd3H0cd/r61i2Ezb2hmTy54+HQ16CpU8EZHQ1lav4dj1ECWAiO8T/Vv/e9j7VM4X1RpGpbSRmwuARzW7YSgsB2PFcpH9oicxzRskinDL6VuadIQVB6VEXrYqa0uhmoxyW+oOoU4YcH1qIQSvHvDAY9a6DULcT2qTAAtH1+lZMjrnAwM16EHdHnz3Mh1G8l2NEWoJACARWottbup3AH2qrLZWjPlVAI9qpkkC3JnkDDkfStCS3VoA8aDdioUjijG0DHvT0ujEdoJIoQFJlKc7MH3qNst16VNczNJLwOKhMmxR8tDQ0W3s4mtxJEfnHNR+Y7IuRuNVorva5DZ2ntUkNwPPOBgUIAuZWgjyF49Kz0urhm+QnBrYCGVjvGRVcwpDLnGBmgRQ+wSSPmRzzV2LSmxuMpKj3qxPdIIgEXmpLeZfK5IyaYGppTIsfl/hVmewQktyD25rD+3RWr/AHh9BVt9Wmnt8wxn64oEy55KgYfr600BI87jx2rJR725HzPtIoNhfu2DNlKYF29uRBHmNdx9q5q+vNSvHCpmJfauiFo8Kgt831pxt0kwSBmgQzSVkFoqTHMlXQQO2D7Vm3k62bKxbgelXIrsXNuHjHXvSGWNjyLkDmqV3azqhYg/UVeiE5QEtinXLS/ZWBO6gDFTzQo3N+NXolKDJ71TjXz/AJHODVvy3t4cD5z2pgRzgM2cHFNhJZtuw496fG0zlfMQKKtMQpyBQIakQBxnrUnkLHypyaYrZJoZzjANIAJdCGwRStM0n3gMVHJlkAJxUIYjjJNAyy022HYBk0xGDKN3WoRKAasK4J6cfSgBkjg4A7VG8gU80+RFAyo61A4BOKAInmLowx24rmC8Tzsu/LBuRXRXO6GNiMYIrnYYoS7tt+YseakZdESFeH5pypJG2VIP1qm0TgjBP1q1CHIHHPrVCGzNI/VarFWPGMVpMkijkZqrJkHniiwFq1cdRV8OSorHs3wg5rQWRiBjNShmhEwBGanznleazhJ0yanjkHQGncC4jenFTDgHO7ms+RiCCKSaWR7dgJNny4zmpeg0R3uqLbIIQ8nmOGJdRkhe5Hv2/GuF1XXYbSZfLcghsgE8/ifoKvaxqXlmW4JIkbaijHbnA/HFea30r3FwisCWb7m3qCTXPKTbsdMIpI7db3b5gAy0OHAB4ZSAf0P8jUd9LvkaRecgbMHv1H6ZrnkuxbBybhNkYAXLH7wHr3GR+tXU1WG6iRnjwExuCfwg88e3BqWUrDNYAlsGO3cwG7d0bArAeTBRlIKHIKsOCcVu38gjuVVRuwgkD+qkZrngyrcTrIv7tgZFx6YyRQmMmDMiMpGUC7gvpUUsqxx527S36n1qMSnYoyPnJB56CoLhvtBXH8JIyDTF0EmRHO5txCDIUfxGoro+XHbW6qFklfJA7D3p7SQxyAuS3P3R1p9in23U/MlbeSGC+3Bx/SrRLInjC2kU78GVRhR6mtvwVI8moRxO4WIOAI14L88/h3J9qzb0I1pbIuAI37dxjH86m8NEQanM7puTY4JyRgYwelIaPVrUMNUlkeVzHL8owfvLjjg/Wob2wuJ4WdAEwcK2OBj+I/ypNLu/taQOBsxGFAz93BH9Oa2p58ouGeTHQZyEwefoaq1yeZpljSLua2ijtGkE0qqNzABVGDjjgc9K02XZMpYv5cR5xglm6cE96oaWLdI5GYsP3rPuducdR1rThiRrNZAWw0m8ljjd+VUiG9RsqmaeCCdCWKhiqk45B6/gDViGGCIQzGICaQYiTaAQf736io9widfLBEkpVXbHPA469O9WGliDl1jeUg7EPoT3+vGc9qLC5imY825aW3l3tk7AcGQ9QD7VltNHbk2/kv8AukaR5NwJ3HqDxjH4VtXDwWenLczT+SoQouSWx9FB5PfOe9ULXYun3TvHkvCHC4UOQSMYHoBj/IpNG1N21LUTf2jZKBNtJHlnzRncfvDnHOQaf9k+zasnl7UkCBip53Z4449e/vTbNfO0y1e3Kt5uGQkYyQnHHqD/AJ4pdwa9MLo42XBAY84DDII9jjBHuKLaE82rSH3FiLlTOsaXEeMMOVeM9x+tVrKySzkkdExGiMxD4JCkHPI9CP1res7hSN0gDRyKWVwuML0weeTUUgdJ8TLuWM4JxgkY+9nuMcEH0pcqFzvYq+XFdQ20W6KRPK3hnJyPQg/SrMcrx2zFo0KZywLbgc9OfQ8VHFZx+bJbxO3mRj5CFwCOcYPrzRp9wblCvG4Do4wwx2I9QR1pklfWwohiukJV2QIEz178n8CPxrlUuXvHiErnz1tzDJ1VX3Nu7dCOa6/XbX7TY3G35We32gnjnqPpzx+Nc8tmsUsMpSQ4ZEY9eMjH8jzUyv0Kha2pNE6za4kEbkqqeaso55HUMO/1rYjjiW8QgL5RkZ3Cc/OQB/ICszyhpscUMSB53Yp8vQjdj8uv5U/7WlnpgvJXVUjw8pJ6qh55Psf0poU32Mzxr4istHlj03UZZIIrtB5cqnGJkfcDn0PGfY18/wCqarfXaXttJetPbNcsdp5Xg/KVyPl9OO1amv8AiO51/TwmqE7o7mSW2wcuyEcKR2APIPuRWBFFgAbRsLCqbsEYnUSxP54iI6WwNRi18t7V1AdXRXZCODyePyxWvBsGoWu1Qd8YDZPPIBH9aS7U2d1H8hVEYAbu4XiuZvU6UjrfDksTXl3CznyrtWRh3G7HP54rSdktLlCwOyWNoZ0PqVxk/X+tcwbhbPULe5jbapUMCeh9q3dTcXMayQMSxAzzyf8AI/lSb0E1qR6VdMmtW9q4ZcqpI6ZK/IT75BBqLVLSS402OKLkwsFO4D94gyoYj2yB9DVQ3nnaja3UgEcluRG74+8rfLu+vAFbFvLG2qfZivDFiA/YNkMo/A/pTT0Jas9DnrjRluXRTiIJhd4GNueccdutamipIjmw1RPMtZPlRxyYz2bP8/b6Vtadphvraa3kbEuzZuxj5h90n8f51DpkzG6kiv7V45B8rLuypPqD2qLNalXvobmmeHbdUCG6vAA24Ks2Ac/59a6OGO2gAWFVQ4yXOCWPuaoaYHtsRZ3pkMspPY9iP0rRkUBiQme7bQM/X6V0wt2OWbZKHO3JHHc4FNB3dBw3SoScgBQu3H3Rzmnp5hO88E9RmtjMlAGaaY8tkGnZIxkUpOKAGFD0NKq7RSFn64pQxc8r+NAAyhh0pvk8VNgDtThjNAECwmhoMdqsgg9KVsdutAip5GR7037OR2q0G55HFP4NAFMQe1O8gYxirWBjOKMdKAKywrmn+VjpU5GKOO9AyIRY7U8RhUyf0p7MF7VTvb6K0i3OSWPQDqfYU0IfcXCW8TPIwUDua5DVdae4kaGLhR1BOAB6t/h1NVtT1aW7dmLhEQ4LZyF9h6t+grnZ7lpyIYlOwHp3J9SauMRXLFxe7t0cLMS/DyH7z+3sPao2aDTbcXd6c7h+7iX7zn29veop7mDRE3TAS3jD5IvQereg/nWdBaXGp3JvtQkLbvXjPoB6CtLCLul6pqVxftdM/l22MCMfdX6D+td3p+prcxGOT5ZF6iuHeREjJ4jiT8qrweJD5pKxlREPlf8Avj0Nc1endc0Tooz+zI9St5dp46Vehl3H2rk9I1aHULVJ4X3K36H0raW6CsOcVzRZtKDRuo20Ag8d6uKyzR7WAIIwQec1jJcqy5Bpy3mw5zWnMZuFzD1ex/sm/XA/0aYkof7p/u1LbS7SCP8A9dbl5DHrGnS2rkByMo3ow6GuPsblxuhlBSaNijrnoRWUrJ3RrFuSszq4Zg4DKeKskJIjJIoaNxhlIyCK56O6MbZByO9a1vdLKmVPBqlImUTFu9PbSbgKpLWkh/dsedp/un+lTJIR06VuMkdxbvbzDdE4wR/WuauY5tNnMEwLJ1jlxww/xqWraoE76M1rWXccE81pRqcBT17GsC0nSQ8Ng1vWUyyfu369qqNmKRDe6dFd4dlAmHAb19jWctt5b4xtI7V0rQAjBH41n3kIZTvGGHQ05R6kxnrYiilHlGNucisK5XBIx0qVLxlmZSPu/rTHnWUE4rWlsRV3KKyFXyM4qRmQ/M1NePIJXFR7C4wRWpkSLLEG6g1KJIOWxVMW7RvlhkGnFTkALxQgHTMjN8nSq0jblwMcVI8TK2SQBTGiQYIJ5pjIo4SzZzU8ajzQMYpw/dr8oyat2NoXPmy0ATwRFFJbkVn3rguwRcn2rTl9FPFQGPcu5VxQIwis8x2j5cUjeeg2s2PpWtIqp8/Q96imEEyfeG6gDOWElwxJY+9dho3lPbbHUA1ygKRkksOKiOvGxYOh3AdQKAdjtZbQQyEr3pqyALy3ArmIvEc+oYMfFaEMc9wuXc0CLs19BypkGfrWZLf5O23yas/2ZAWy4JJ9anis4YGwqdfamBmfYZLpDJLnPpWjpaqqGEgAirRCohBxisk3AhvuuAaTA31GPXAqQ4ZcGqgn+QHPUVILqIqFVwGNAGbcW7QXHmL93rVpZ1kUADmrE+02+Dyaxo5Sku0GgDTKHIOaVlGAc0xHZ4+TTUb5sZzQIV+Px71Gnynk5qYgt1ph2rxQAhjaQEDFVxHKjYCgipsuGynIqRWbnPemMrqFLcjmrYwIqqMpDE+tTxMnl4LUANMbbc54qrOccg1czwR2qlIv7w88UADwCe1fe2OK5bKwSnByM810s8uyJhkYx0rmkw8j4Xv6VDGXDcCRAo6VZhyFCg1mhNsnOF+lXrZcck/nTTBk8jSIcdqpThj2rQPzYAqNo8ttqhHJ6VqfmxL83IrfhvGZe1eXafevbzhQTiuvs9R3qMtXPCaaKOqE7MoAqWKYqeaxLa7JJwcgVcW5R8fMAfStLga/2nccBsZqRpV8oqRnJzj1rHE6g9atR3KEA5y1DdxnJeInbH2R2wVUOCTycZH9a52ziL3AiDhivz7AAM5/z+tdh4lsDMIbuMZVFYSEckc8VzWjTQWeuwyXozFu2Sk9QCeD+HX8K5pK0jpjrHQ5i9Ik82NTyWJ/HNOsZgmjvcnIMv7kc8Ec5P8An1q3rmlT6XqskDKWR2byJM8SKT1BFYssg2fZVkAt4/lQH+Ln734nn8ae4jbN2sumxMOTFHtBPpx/hVC2cPPkqQEyMHqQRzWdZzyYdGTKDIGecj0+tSRzmWAsmQQMden1qbWKuTeR5U5jblGG5CO9VXcQBwmAmc/MeTVmC4eWIgsokjOee1ULwpcL5iYOOHU9QfX6VSRLI5LhXaRwEUnGSeavaHzdNc5XbErKuO5Nc5cHadqjBr0KHRBpujwSFcnaC5HqRzXRCFzKU7GBcuhnjj58tVwefyqbTLpZLkRiVS0mUyQQWyfyzUF+iwy+U20+Z84YfoKj0OVTeRh7dDgkqSfunB5PriolGxpBnp2lvJDCRGcRL98kYJ/yK3UJZAWOYFjMhHbOeF/En+dYWhzi50iH5sSCbEn+2oXj8ea2UmIsyJ13ANuZB6c4z64qVsKb1LEWoSR2+6YLgq23Lbdxz90D8ua3dHNxJbrsxG7LyRzsJ9z0rjr4CeBwxDAkHceFUdgB37VvaXdrDZxxyuzCFSsqgEbv8ewqkyWtDfjEaynyUMvybt5+6F6AD1JI/SrDM8kTRNEUywV1VcbhwSTms+yvxIHdjsjK7cLjOfUdxgetPupLe3jAjdsj+IAsTk9iaZI6/jt1tkkuseVECyxDnJ7DA9MmiAJKkd6UaONYtjxN1KkA59zk9/asiaH7c9ud0rOCQSTjIz0q+k62N1FaKGkdyAwTBAABYn8hipL2RoaV+4to4bfEsUPmRqD/ABDI7+oq/HHE0qSqFlUOCr9ccd/bOax7KYxzrGj7o1dwx67srg/+PVctopEtxbQkk20gwQOox0/nTEx0ShdGaFpvmJk8oiLoNw4wO3ar9vMs8BjkG5lXacDGRVCWXybRFAUSDDybuQDtzketVJJ5ojbvDiNzEucqSGYgnB/LH40C6G3cHyZXI+XzAdm09COevb/69Vr60e5VJ4neOZHDgp1VhjI/3SKfcyrPYpK64GcSIw65x0/Kqgv/ACAyyShSoZyGXsB0/LFAkR3t63kwb3fzJJWjGBlQSM/lkcH1qtaytJAtwkamU7E3Djfwcg/TiqctyzRWskKqFBIKFsknIJ/Un9K0IQllB8uUSNsEbeCOgOPXr+VIroNkkVUW4klTyhvBf3LZwM+2cfWuE8a+MXtobvT7VIxbrEMk9d2fugenPP412NxdR2VtNcPKJE3fuEC7QWHTHNeG+LLhW1ZBvJIBLH/aJzSbLjHTU5ht/wBqDMNzZ5/GtYW+2ESAbgRwO2ayUfMryMOSf1rSsboiAxyD5Tk+4PrUyRUWdNBMCLWcKWKw4OD/AHMf0qzrcgkQyrzHId4Hueo/GsFbvyLVnhf94Djb6A9/pWhBeRXFiLadj5RO1H/uE8jP41kzVF8ypJpy+YzbFYqW6belaWm37XNoYQcSxende31rn7YOkOoWtzkH5X3dRj7pP5EVWivrmwv7EjGYiecZ3KTzn1qRnR6kiSSRTrI5RwY3VDtK59R7HBrd01hqf2ec4FwkZSbHUkcB/wBRmuUur2SSeSQvsDkSIy9GB9P8K0tNvfIAljlCCRthI5xkD9MgUuuoNOx6NaTRybpsHzC4WYD34J/MZqK7tIRqCyFmTjAaM4J9M+orN0++Md/LM+BCThlHoT/ga3bhQhVnfpgZxkEdjkdOvWrvdGWsWSW9zJEqLKSjsAFcdOmM/Tvj61oQXZm3RSR7HzjYx6H/AAPY1kGIzeXl/lUgjbwO/wDj+lSSwSND5seS6OTuXGF9s1UZESijbVRtDhMHupYdR+NSZ3M/XPSqcRYjdKuX2qAe2eufyxVpcNjBI7810rYwZIpyCp4NSIARgnntUJcAn1o356cUxEpYAkGnIeM1VlbYdx5zQlwF4PSgRcPTOKUEHrUaurdDmkdiOnFAE/QUm4dTUInyADS7xigCTIPSjIzioHcE4HFM3/Ng5oAtZyD0oDY61X3bckGlSYEEEUAWN2fekJx06/yqBZD/AAE4rL1PWltkZY2GR95+oX29z7UWuDLtzrFtYN5c53K33gD90f3j6CuZ8RwzWri6eYzWEwyky9Wz0XI6D9TWTfXm7c0/c5EbHOT6t6/ToKn8O61IzzafqEX2jS5gd+f+WXuD6VdraoV7mO7y38qxxrwvCqo4UfhUF9fRaRm3tSs18Rhm6iP/ABNaXim1uvD1vEulRl7K7ztvUO7g9FB7HHesjTdNitYxcXXzORlR71pFpq4rWK9lpZZjd3zMSx3fN1Y+pq5c3CRxmWRgkQ4Ud2+lO1C7SBBJP95h+7hHU+59BWbFby3sguLs/L/Co6Y9qa1BuwwrNqcm5wY7Zfur2/8A11K9iJ4zDGuEA5bpj3NaMUG8FiRFAg+Zz0H+JplzLvQQxpiPqsfQv7t6UxXOU03W5fCOtldzyaZOcOT2P94e1eqQajFe2qzQSK6EZBU15fqtut0GRMOW4L4/RfapPB2ozaZcnTJJNyEkx5/kK5MRRt70TsoVb+7I9Rg1FkO0n86vRXfmHrzXPxss+GU89xVqGRoWB5rjUjpaOospmVw2elZ3iCzEOoxX0QxHcDD47OKs2NzHLg5ArQvbM6jpc1qrASkboiezjpV7oyvyyuc8pIPzDrUkcskDh0yR6VR0bV4r6JoLlfKu4WKSxNwVYcGtcRIfutlTUxKlpuadpciVRg/hVt0juIzDMuVPTPY1j2+YXx0Ga24h5seB96tEZSXVHP3mlPaTeZETjrTobtgQTwwrXuVLRFGHI6ViOQrEMMGlaw4u51NherdRDn5h1FJqaf6Izjt1Nc9aXJt5g6HjPNdMsiXVqwPRlINXGV1Zmco8rujgrWdmnnBHAYj6VNHG4B/umq1mws7m9S4wDHKy59R2p8WoxTZjjYdcjNbrRGLd2TlMISM5qKKR1bkUqyHeQ5zQrYJDnA7ZpisOdw7dRkUbgR1FQNHklgajaN2PDU0AXEpd9oNIiFvlz0pGjZW6c1KqsCGPFMZat4Q0gBOQK0SCVwowKyPtDQygjpWvDcrLbkKOfagTKskLO3GcVIi+XHg0+SdYYyWGDWaJ5bqUhAcUCGX1u80ZCEgZ7VitZtDJhnauhcOE2k81WuYomUBiN1JjMN41LAFm596v2em2srgOMg1FLAg4z0qW2bySCDQBJNpJ06bzbYEp1xV231eJAA/yt6GtKPbPbqxA6VSu9PglBJTn1FNASNqcG3duH51B/bEJyFOTUVtpcJbBJx6Gri6RbqSwFAjPudRumjJjjNc9Nc38t2v7s5JrtDYh12g4FRxaPEsgctyD3oAitoLqa2QSHacVZTQpG+dZmzWgwRMAYNWIGKHigLHMy3N5ZXP2acZU9GNKBucMpPvitTV7fz3Rm7Go/IjSIbeuKLDCFSUzkinhdrZHWiCVihAUE0gZjkMuDQSTqcDJqNpEbPFMBIzk0h+ZeKBiqdgOOhpd2eKgLOUIxSQ7wCWB+tABK+HC9RUi4DfWq0uS4IHerAU4BoAlIIGarXBZcELwasg5IBPSo7lx0pgV3MH2dt684rn0kAkYBRjPWt2V1aJsjHFc4LiJJmz/AHqljLc0EbqDn5qbE5RthNOWRThsU1mVpRhcd6EIvp2I5pDuJyBSxOCKmjAGSSMVSBniSRAyE5q7b3DQEDPFXm8H61DMRJHapJ/zxa7jD/luqhf6dd6dIIr6CS3dhlfMH3voehrz1dF2OhttVjjhEakEnvVyO5B+YHg157JcSwOGVjXR+FZZNd1q1035syNlyOyDk1spgkdhZJdX+fs1vLMAcEovH51eGmXkLfv5LeH2eXkflW/daqLUrpmiWtuVtwFfznZUU9wMDJNcxrtzJPOzSRG2mj+WSDfnn1B7g9jUudjRQuaG6CGIxzXKMJP7qkiuQ1XTLCS7Y20h9CSD161O91I77QpYhcfM5BHtzU9pok13uuJ2kgtAdxdlxn6ADk9sColJyNIrlOa1PTp73ThbREtLAD5Z3E9ew781wEqGFiJVdWj4ZehFeyzwakuYdLEel2xHNzOoedvz4X6CuW1bwrbTxu32m4e6GSZnXh/w9Ka0KbTPP5LuSFwyttA4wO//ANenwXBiukRRuRyQQOwNWbnTmI8gLukU4Jqey05bQb2w0jD7wPSrclYizuU2xFIdnOeCKqyybzudWV+gYd62zYEHcSu7+dZ13auRnGB3GKIy1GzI2GS6iQdWkA/WvXGkWTTlgPzMRjB7YrzLTLcya5ZK3IMoz9BzXqHlAxncMHtiu6grpnLU3OG1SF3uYIxHkjdwPpWVpk8h3BGwTw3HOK6XUYj/AGnGFBDLFKfrxxXNaeP+JhJtAGWJxWdaJpTep6RoreXGGVxtxyM456A10lpegxhAgRjzJhSxHt71yemfNbo24EA/dxgmtq3nky7EEnO0/L2A65+tc8djeZt3AUSRsYpMN1OQu4+4/wAmoPtk0MzxI0OW+XZk59/85qgkrtHIzMu4E7i0jEfXFV2Au4lCyBghJJUH5SelNkJHRadqi+W3m3IRA+4hYckkeh9KvXN/bXLkJIcAE7nBznHAHb/9dciHGxY0Q424LKQCPrWZJfFM2zZaNHDqM4P0z6VPMP2Z28Or7VW1jd43SPcdyEHpkkkjqfT6VJpM8rahczvGFJiXyVb7zcckjt1xXDRahcxXJullmcSMRsYhkAxzwev41oP4svXgJWCO3iXGCqAMRnocUcyHyPod9a3UFhEIpIOxLiPGVJOc59fars1+djSWJEswI+RjtADHkn1I6V5zZ+IZnV2mjijIIY4+ct6klhk1fOtAQ+bbrHCRg71XByxwWPsKpSRDg+p2byrbQzzXTNNczYAjxjCdBxngdTRdXCTrbsG2bJkZh79cj2xXGC9nudZURzFrYMC8hXlgDyc9elaiXQuvkZHRJGAkOOqjvntnk0XE4s3V1IajYiBtqlZMRu4yDliPx7VFcB/7PZSoMrcLxzICoJHHTqSKz4pVkuowWVLeMnZzkKo6n8atR2xu7hHRZGhVf3aqdoCj+Ki47WLmm2AZ13xsgiY7VK8c9fz4/KmXc/n+cbYIscanMjqGwR/k9KmkuEijaLzWVFAGOvQVl6pqjWaIkYXAHzKr7SD2G0frSY1qzC8SaihVlWUuyqGZsY7dPzrxbV7tptSkZupPSvR9anJjmLEAkFzXmK5l1Nptu7b0HqTRCN2XUdokltYtNe7Cxx5ayc+/appLFod2xm4HQ961p45FGi3aRrumiaEqOMlHx/UV1S6El6F3RqD5e5h6V1Kkmjm52jz2yvFYhHAGPlOav20ywq8JbcjEFc+oNZ/irSpdF1hB/wAs5RuX8KhiumMDynk4JANclSnZ2OiFS50seprb3K3PytC+IJ0xklScE4+n8qj3pJeRumXIkwG/2R0H41kQTCWSJJQo5GWAxWhpfyt+9bAMgJP41laxte5atbqKGeO0mDMiyHkn7q1pW0yRXEsYXCq/QHuO4+orHvrdba8EnmLIkgJ4HKnPSnwXAN1DIMknap96hoq53ejXKJHDCk/nRsflyOQeMA12ljdmWA+WSZEUxbcAjgdvbNecaBd+RfruYbWJCjHIYqQD+ddrpzmBiVkDgSZO0bc59fQ0o6MmaubmNiefanMRwHQ/wexHer63CzWuwDkrng9azrQRSeZgsryf3s7D9ferywC1ixGmxRyQevv+FaxMJWLceFUFsksODQbgDgdKp+fuGQF9AR6UzzcMQeFNbpmDLLXQ3Y3VKsgZcg5+lUXgSRdyNzUcCTxluc4p3Ea32gmIgrz2qENuByMVRivn3EMo61djYTKdtO4EqSlCMVN5u4c1ms7byueRTg7qAc0XAv8Am8YNM84g89KqrJk5JpxfqSRii4Fhpt2COtIZGfjIzUDyxiPIPNQ+aAQQ1FwLDyyJk9QKlRjJHuztXqahcNbktckIuMjngisfUNW80+VEMIRkRnj8W9B7dTVJXFcs6lrIRDHCTtPAK/ec+i/41y13f7TuYgyDO0DomfT396hvb7azYYtIwwWPH0HsPaq8NqqQNf38nlWy+vVj6AdzWqViLjre2e8LTTP5cCDLyNwAKztS1Zr8f2dpSMlp0dwMNL9fQe3emXV7deIJ0tbWJorRThIV7+7ep/lWxa2kWjgQQIJ79h26L/n1qrWA1PDl2mhacukay5uLGc4EZ5MOfT2/lWd4psJ/Ddwsqj7VBcH/AEaXGUX6+9Zd/qnkytb2b+fetxJcDonsnv7/AJVseF9XSzs20XXCbnTJzhWfkwE+h9M/lUONtSr3OftrZ3lNzeMXlbn5j3rWjiUxedMSsPQYHzSH0UVd1XQ30K6Xzc3VtKf9FKc+b3wx7VnyXBYtM8oG0bTIo+WMf3Ix6+9aJ32ItrqOnlZ2wQi+XyqE/JEPVvVqzJXMoaOItsPLO3Bf3PoPans7XJCgbIVOQp559T6mmyFUUqOPY/1p2AqzxqibRz+hb/AVlQWU8moJOFIVTw3T8q67S9Ha6bzZRnPTPet4aNGsOSoBHtXPVqdDopU9bsxbWaWIjd3HNb1tMkygGs27t8oJIh93gj2qK3mKEFSea856M9DdHQxgwncnTuK39Pvidqv1Fc3bXPmLg+lX7d9rgbsDtTXciSvuS+IPDMd/cjUrE+RegfMy9H+tZ9tLcx/u7hCsi8HHSustpd0IzVW9tonG8AZ+lU4p6kKTtZlGKfcAD1rUsLkKwU1hn925BPGaswy/OPWmnYTjdHUTRCVNw6965vUYNpJHBrct7ndCCT25rE1a5AJxVNkRTTMmK4ZG2mt201Dy7faWGetcw1ypOc81XudSMMLMD2xUxTbNKjVjdVYLk3MzKGJbnNVpdNt7hd0A2SKP4aqaG7S2Ry/LEmrsCvBMdz5B7V1paHE3qVLe0uYtzS/MB6VaZQ4BPar0kmEOAMGqEuCMjjHWmAi42kVE3yvkHmnDkA54p+2Ipzgt700BEZT1PWo3kkk4AP5VLj5uPyqfzfJwWAxQBUG4J8wyatWV+sLBSPwp0bxSsdwyKSKKBpPlTp3ouJl26ha8j3rwtV4lMKEKuDWhbsFUr/DVSWTExAHFNiM2SdxJhgRVO7fy1L5rWukTbuI5FcxrF2SvlI3JqWMgkneQ8Pz7Uuy4CblkJrMhZopAr1vw7WhGTihagW9O1K5ii2sCcVdi1pmBV4j9arWbRrkNjFaEKQS5xtpgVV1FEcnacVaGtoF+VCae8UJGNgP4UrWcW0bUANNCIH1WdkLRRdO1VY9ZklJWVCprVSyAXA4FMis4FucMmc+ooYEI1SIKu5juFXbfWbZiB5gB96lawtGb/VKaZdeH7WW2LRKFYDPFABfXscqAKwJNRD/Vj5hzWdbWToSjc7fersiBEHJ4oAntyUJI61I25mGeKqwS85zxUpnJb2oAsYRfc0wBSeOtRmQEZyDUZnweKBEpDBsEU+Mk5B6UwyGVQRwRUImdHw6nnuKBiy4830FTghR14NQOAzg1LuQj2oC4e4qGdS2CeKsb1AwPzqGRiTxzQBSuFxCx56Vz6LGXJK9TXSXDr5bg+lc7G6I58zkZpDLTGNVXFPjVW5AqFmtiN27H1NIlxkYi5FAGgmBjirDKPLxjFVLeZsgOPyq87KV61SJNlUtbSEQwWEEKfw7I1/wqtcR2k6LFdww3MPXZcIGA+nHFUptR2kYcux52njAqOPUkMexlVee3FcHMdfKUbzwT4SvBIJNKWA92t5XQj3Azj9Kb4a8JaN4a1Ce7067nkeZdga4AYIB2BHqcdR2rVV4JU/dbC4HKkHmoZEKxNGsiLk4LDNLmDlSKtpp1zYO5uWSQvI0jNE4IJJz3qXUdLXV7VVkTZMuDHIRzx2OOookjuIogAxMagE+lUnv72LiEOIsdR0P4UrjKltYLbTLbCJLy/kOVhDfJGMfekx29s1pra/ZL15bm8mnuNgDsY/kXPRUGflA/OoNP1uaQyQBgFzuOBjPscdarxzlknPO6WX5QGyWA9qpC1I7yRLk7UdQy5wGByRXO6jL8uzgnG0v/AA/hWxdERo4RdpPLk4O30H0rDaIpvZnOecBW+YChjRzktkY5mfzAA/VqI7XdEAqBnHTnHFaZtnuPl2kxcMScc1KsCIwC5GDzz3qSjNFpGwRWHB4OB933zVC5gURFgu485ft+FbUjS+U2xPKYnbk89KpXVqyQq8hw2CzEjH600tRGFY2bJ4lstyAFmLdfY13mxUwTl8jpXCaK6P4oiZGDhVck/QV6ChAjZ4gu4njccAV6eGXuHJW+I5nVIwdaiJXapgkwR/u//XrirQtDqzhs5WQgiu+1kObxeFUGCRQQcjJAGK4K4YnUy7jBYgtj1or7DpnoenkRQhs8PgkY5FX1uI4MLtZmbplsYHv/AIVmaFcRzQRZUkjpuwQSK29qblkkg8znI2jaVNcaOp6hChl2P50isvK87Qfapn84jcWWIHr5ZBBP1B4NW2uYVjTfECpGd5JO31zTFlsyA22Z1Y4Hl4K/iRTJRVm/0gBDKryt8zOSAB7e5rLuUihY+RbvOWYb2J449BW9MluYt/lgKeATg5PvWTII3JMjqWHXAZf0qGXEpR3lwMxIGTqcCMfj71Wl+ZtwjfCEkKenPckirwtLZZPMMjZYjDluhpV047nMDrgtyE4OfpUlEVrC08q7miVwOCepA9K1oY5HzI4VEK5KlsE88VU8uO2y87AMTgKByPqBVqHe0IjjncqX3MSp3N6AfrSuDNQ4trIyTAhpOCF7D0BI/lUll5t0znyygUM8aDn5+31qCGJ57dXMwEaLzhfm/wB3A5/KtaxLQ258yIMUZQpzhgOpx1OMev6VotzN7F2KFljWOeNTCqhBuwq/iT1NakixNahBdqkbjBVASzZIPHHPSucmgtHuo5bu6lnkf/VQ5ACIPY5I/wA81FKsskqyWsTqY12I7tnYO54xg81V7EWua85KlyQY4xkru+UA9R1Arlxgq80gOeTGmeOe59a05IQ0EOVDgs+0ZyDhsbiT1NY2pXIVGUN93qyjgVEnc2grI5DxRd7YXiXBOMkg1yFiGx+5GZpW2r7Vp+J7rbiMH5sZOKdosEdrbxzO5VhxnHI+nvW9KJjVlc2jZmDQ9AWRcSJd3COQc4Pyn+tdnpsMRVZDKGYjAxmubkl83wpE6KR5GprtB64eM/8AxFdHoMtuqEzSiKUdN1dkdjlZznxW0kNoFpqCDLQT7GOOisP8QK8rhbkZ6V9C+LdP/tHwVqdsm138nzkIOcleePyNfPWwDB7GuestTWkzRRXdyxAz14NadvcfMA2ST1PrWXbOAgDjIx1zzVsKFKtu2nqprikdkWbE728yDMpAZQVBHTj1qCFf3YJY7gwwwHQ0sdu01sr7VLg9M9fpVu0jinQwhNu7BznuP5Vk2aWLGmbiZJOWaKQNkDnqeK7eeciOUxN97blG/iDcg/nx+FcTCr2lw6En5u4GMj/9YrUt78Sx+XJg3Cp5ZZU+8ucik9UI7nw5eLLKYGllRsggBsHNdRdmGOZtp/eYxtjxtJ9Tjp+Rrz/RZLqC7huEiICHqxwR2roLq/jH7u1mZweWU54Pf2q6T01MKytsaX2jZIQkRA6HjIFRzSsTnOAa5w3LAsVyADzirH27dbAk5I61qmc5rrd7TjcB+NWI9RQAhmH1rmxdxMfvDPTrVPUtYissK33j0p3A6Fb4LOwbpng1Zh1PyX3rmuGj8TQlgjRnnvV6HVYpZPLAOe2aabEdO+qFpGbGM1E+rN0Brn59SWBtpUkmqsepG4kKbdppXYzr4NQOASc0HUDuIzwaxLCSWC5VZx8r9CaNYgvvtsSWa7jIccdB71Si7CN83G+3+Tl+wFWoIxbQC4u2yx+6g5J9gKqWNquk26tO3nXjDO3OMe59BVC7v2mdpDIcEcyDjI9F9F9+/b1rSMBNm9BrFtfM2m6htRC2IpV5ELdgT3Ncxrtvd6Rd/Y5QfnO5Jevme+e5rMuJ2usQQpx0AFdZp2qWpgtNB8QXEX2tzm1d+WjPYN/T1xWjXLqhXuc15VtplqL7Uidx/wBVBn5pD/hWMV1DxRqC7htjX7ka8LGv+e9aOoeGtXbxBOurScLz9obhNnYj29quPNAlm8Nm/wBl06Pia6YfNIfQep9AK0TT2J2EhWGwjez04qZEXM923CoO/PYViXeoGcPZabu8t+Jrk8NL7ey+1RXd1JqeLa2QwWCNkLnlz/eY9z/KrNrAsQWGNCznooHJppCuMtrVLZRgZJ7jufatERCBsOiS3ONwjb7kS/3n/wAKQYgLmN085f8AWTnlIfZfVqrzyxwKEZCQx3rCx+Zz/fkP9KdgudBo2v262n9j627TaZcsUiuJDhlY9wOy+/asvXdCutF1JYp38yzI/wBGlQYUr6AevrWSY2uWMtwd5b1Hb0HoK6TRfEVmbL/hH9fkH2GX5YJ2PMTdhnsPes2nF3RSaehgSzJBFuZgqgflSaLbyarc+e6kQKfkB7+5rD8UW19pfiI6Pc5IyDC6/dkjPRh/nrXpHhmwWOxjAUAACorVVbQ0p07u7NG0iW0QM3T0qSSZWk3DlCOlJdHdwvbtVLa7KSvHtXE2dsUiC4U2VxuIzBJ0PoaiktYyd8ZwD2FXVuA0RimXKn1rPmU2zHy2yh7elZSLuPgLRsM1pwuGFYYuQTVu3uVDYBoQM6qynIXaT25ouLkLkg8ViG98tQwbFUrnVwx4OTVcxPJdl64udzEg8ikgveQufpWKbtnfPY9qsRsW4A61NyrJHTR6kFQrntWPfXZln29V9areYwG0dR1FM8xQpBHzVtCDZhOaWwyRNo4asnUJQActwe1XpHJByD7VkXkZkBOMYroSSOdyvudd4Y8ltLJK5PrWi0fmHMfymsbwvOU04xsOOa1mwDlSRVolkxgl8vIOSKrO6rGdwO6rUc23hnxSJLGGwcEE0MRQiAlbK5HqKlxGCQVINWZvIRg6YB601isw7ZoQXKayBJTgZFSEeb1FSSQ7kwMAjvUaBgME0DHQMsQbIFOty0rtjiqc0T5zu/KpIA8Z3B+KEBsRQMF+9zSTWrxjfkEYrCn1toZSu4VINQuL6EIJAEPei4itqN5KztFEuT3IrJNmzfvHYFvStgxeUcBgxPU037OrgncPekxox2tRcOFVQGHerKWE4AUVIgWCYnIPNbFtPESCSCaaQFKPSboKMtwadHZSxPhZSDXQQ3MRQ4IJ9KaRDIQ+MNTsJsxJBexjcoLVCmoX4PzRt1710hYEYHP0FUJoJy5O35fpQIqvd3zx5UYOKbaXt4k+Zoyw9qmcyRJ91ifpU+nzhpCsilfqKAIptZeKfckLEelWYfEaMm2RWQn1q5J9m3gnZjuc1W1FbFljI2de1AXFhlEoLrzmmtJyylTU9ultHCCjdulKxidTjGaYFWKNFb0zSyAMSAKtxxQkgsRxUk3koARQFzMEUinkE1JsO37pzVkzLt4Gfwqu0uDkA/lQA5VkRchTipIpGLYMeR606C5D/L/SpCyr0oAVotwyB+FQm2OemPrUyTgDrzTwyOQS+DSEUZLaZDkgAVGdwPJxWu0kZGGORWfdNAOQaBozrxBLbuqthsda5WGORi6lt204rpL2VfIYLkEjrXLafDLBLIRISGbPNS9xl02i3CBTkGp49OkhULGeKuW8XmKPmArQjt9pG5gaaQmypb2rZG9smrUgCDuasfZ9rAqwxUhjTYQWH51SFc5zVbpLcbo95bBDK38R7CsiHVI2fDgKvUkMSfpWjrKrPH5gYbsDIY4x71zUaiJwpXc+cnK15Z3o6axvInk67Dj+L/61aKakkSgFfMOf4TwK5qKONRvZmjUjqCOT+PNXodjFAZFGemFzgeuKLjsbjzmaQbXCgDP3gcGqt7JiItK4JxgnG3+VVJE8uQNtLH0HH/6/w4oe4MluQwIXOChHX8adybGDqOpmyvbaWQPKZBhEjPPFbMd0RESRiQ43ENny+OnrXOazGqXkBzu+Y4ReoGOa0bffHbbZfu4zheM1otiWaDpEqhWAckZzk8j/AD9KpvaysrGOEDuMdPoTUkMiBlZQ2QOFI7/4Ukl4VAMvybxnGevp07U9AMM+aVcyFgAx2qOmKHicBVVmDNgOAPuj1P51buAshJWIEjkbu1VIzc3krpbsqqH2yOeMe3vUlEPzy4t7aPftwN3QDHU5qld20bj/AErc75yUY4XPYY71vOkVrb+RbqqKG+5gMSe/OM1j3fzO4kZNpU5bdkgdqVwMewkSHU5XWONUWJjhF6dq6/RdDuNYSRjC08oXO1SQqZ9feuW0Gxl1HWZYYyPLC/O3ZRnvTPGXjq4s4pPD2iTiKyA2zyRjDzP3Ynr+FenQk40jkq6ysdVr/gy90zTWv1RBEoKyeXKJAuRwcA8c15Td5N47475rd8DR6pqE8jf2mY7cjZKkshO9T6DoelU7/RNUtZ5ZJtOukj3HD+WSpGfUUql3G4QsnY0fDk+1thz83Q9/wrubC5WZfJlJVmGAx5/OvNNNmMcynB+U/dPBrtbO6R4trEleuccr9K5WdS2sb0SlR8rhwpOdpzgd/rU8Qgiw0UiRKTgqeQx9/T86zkkMULmRWVW486M5yPcUbmWNZkYMqDh0+ZT9QehouOxti3tHPHmSSISWCMQoz7Y9u9K9rCyh2RYW6AjBLfTr+lZVleZmItpJNzjgHsf8K37WR3XdNbrkcebtC/p3NJq4tjJk00Sk4dwPR8fzzUZ0tEXfPHuUcbtw+b8q3XSF4yEQlvVuB+lVGhnEpeIbRnghQAPxxWdkjTczUs7aURhIBu/hWQ4H5gc/pWrDpzBEDWkCjIORLyvv1OagS3nBPnO23PA8zA/GtGKzhn2kSHevIU87voacbCldbEtsILSCVY2E06hmiEjAsSOoAAGKZDIt6JnaK3SdQQrqCM56jJJH8qsR2sZUS+U6MeCzYUDHYDrTZ18lZFDID/E6qGI9fbP/AOqtDKxQXTH3STTlZpZf9Z5koBXn+E1P5cFoAiXWzByIT8zEY9BxVWSW8nAW3ne2gPLuwUySY9/4QPaopJ4bR/3EbTP/ABO7EsfzqbouKbHSfZo18u3lmAHQFcfnXK61dMqOmDj+Vat3Owzub96eoHQVyGs3OIyoJx6k9aEi5aI5W/InvQuc5bJ+lbdnbPIiBVzgjr0yaxbVPNvDk5rvPBEAuNfsYHtpZoBJ5sgjXOABnn9K6qeiucc3qXdb0ebT/D+paeWZ7mP7LdsAMY+Yqcf99CtrSLbQLawtre91PRre7lIZ45ZQ789ia7LSPDEmp3erX2vWsDpdSMtruHzpF257V8reJLCTSfEupadI5Zra4eLJ7gEgH8qv2nYzsfTsOnwxWpubSWGezOVcwSB4yp4OMdDXzxqmiPbXVzAinNvK0Y+gOB+lTeA/HGo+FdUBSctay4WWB+VcZ6e31ruPFGm2ra01xYNus79BdwkZOQTyPwINZVpXhc0pL3rHl8RZTsYEHNXLZJJmMBHU8e1bN5oytK23jB4IPWk06wK3gUk7gPvVyOaZ0pMsWET2LGK9jka3cYLxtyh7EVu6VZWdo3m3Uo+xzyAQ3yrlUbtuXrg9DnpRYwpfSNay/KuOD61W06+/4RbWJNM1CBpdIu2wy/3G6Z+o9O4qLXLb0Oq1Dwyy6kiyRg5GCYz8vAG0jJ6GrsHhXTLa+guZJnhwPmAAYZzwMVpeGmk+0XGiTFJ1hiF1p8pOS0R+8mepwcGo73LyQrEfmdyiquThhz6ehp26kc72LFzpMtvKJUUCCQHDoMLk/wAqx0RrWWWVxlFzzXZ6TAWBiuJYncr80SuCenpnqK5/V7I291JpxB5BZW/vL/nitoWZhNNM4t/EP/HwqjI3HFUItbmdSoB5q4/h+UTygLwDnrSQ6c+GXZjHHSm1qQUbS4uJr1FBOSwrpNV0iSUwtIhLEcYrIt7Rre4Dkcqc16OjRT2UEpAJUU4iZ5nJp0sEpR49pHTNaOm2okulZ+GFdJrVus5EqqARWdYwFbkZWi2oFO8Hl3nPIFSpbGYGWJeAOTU+oQBrnIGQa0vD2nXFzIRsH2YHLFuh9qqwhmnh9UtFiiBMyt1x0rpHli063CBkadAN8rcqn+J9qtXNtb2eltc6PGotgT5vlDcynvjPb3rj7y+BUOxHH3VU5C/4t7mtYq4noS3t9u3FyQhOSH6sf9r+i/nzWV5k+oz+XEC2TTYYLjVJwij5R1PYCmX+sx2CNYaOQ0p+WS6H8l/xrVdkST3uo2/h9DBalZ9SIwzdVh/xNUdN0VtQZ9S1WZo7dW3PO/3mb0X1P8ql0zRYLW3XUdXLLE3McQP7yY+3oPVqs6rqAjWObUY13Af6LpycKi9i2Og/U0vJAdVaanY+IrBdK1XNsjuE0+WSTDy4HQ+v16c1xWt2GpQ6u1jqMQgih4hjT7m3sV9c9zWcy3OqXAu7yRmk6pj5dmOgGOgFd/pl9D4t07+x9UbZqUS4trzHD+2fWp+B+RW5yUMWCIoVBYD14X61NlY4z5LssZ+V51HzSn+7H/jU17ZzafdPYXMTIUOPKB+af3J7LWfPdEsVhcNLjaZFHyoP7qD+taruZvsPmuhFtjVE8yP7kS8rD9fVqhSDBMkuWcnJLHOT702OARDcfvdagvNQS2Q85cjgelUBNd3kdvGWbr2HrXHavqZnD7jnsB6UzUdUZ3bLZJrOitpLiQF84Nc1asoqx0UaLmza0K8vdZv7MX0zSpagrCW6hfTNe3acBDaKB0IryPRLIQujqMY716Tpt/uiVW6ivPU7vU7ZQUVoa0oOdyjmoSvO5evcU/zlZcg1GHVunBptkoZKqOORzWZcxHkA8VqsytkdKo3A5wDxUtIpGG4dHzipo2PBHFSyAEnPWmbQBkdKk0uStKWj2nrVUxlzwKeoLHvVuCDcaCWyGC2OR3xWnHbcZLYNRFhCwBHFPeQlMgHHUVvCn1Zz1Kj2JVWCNvmPzetDxW7/AMRBqqrFjuYVJ5TMCxGBXQjn3I5vs44DZNZVwbWVthcqfrVqYEOTjArJuIcsWOaGFjrvDr2ttb7CN3ua3HuIXUHYPyrlPD8i+RgrkV0aokiAqcU0ImcoyblizUH7sNny8Go55ZIUChuPWoRcFj8xzTCxcaaIr/qhj6ULLHxtUYqGOVWUqVOTUUqtGm4AgZpoC+00aEZApslxakHcmPSs2QkhTk81HI5bj0piJprtIuAuRViG5iaHd5dUjEkhG6pQyqAg6UDLQtbO4Ql4l/KoBJbW58kIMVbhQGPOcGsy5hIuSaBE7SRHPyVXUxBj8vWpREcc4xSPGqjd0NAynMil8CM81ctLVYV3tGcVNZos7cgDBrdS1UIM4IosI5ua9WGTdFEx/CnQax5rhNgU+hFbklvGvJQY+lZl5p0bnzIQFcelIC5DN8hJXGatxEPySDWBDfNG/lTrj0NX1m8pC6sCOtAh91exwSYZazbzVbdZoyAOTziqGoXktwx2rgdOayGjYne3OD61nKWozrbkQ3USujHpzUMcaMuzBP1NVbNpJYlVeFras9Nc5fcDx0rRBYW28pY+nao5J40c7cYqaS3MYIxtpv2eIjB6+tUIhMrN8yglfapTchlChfmqeB7eI7SBikne3EgZBQIiQsowVqveGXcNq8VdkZduRUkISRfmAoApQTJGoyPmqz9pVxnFLc2C43oOKrKNoI20BckDbpAQMVYCxY3ZqghdWy33anEsZI9DSHYmaeJcjFVLrypE3elOmQEZTNVipKnNDYxjbJImUqCAOK5nzMXDqFxg10QUru9K53reSAr361LGalpcAkJ/KtTzUjUE+lY9ssQcZOK0f3bDGc1SYh6T78nOB2pu0ytkk4p0cQK4AxVhIgg65P0oFY590juYWAlTp1xkn6elc7e232aZUJOF5JB5NXLaSUFRuClOBlcipNUQz2YkQLvj+9gfr7V5h3FPz42VA+d2PlAAqzbtIm07SGPc8VkwsjkSOcsnFWPMJhWNQxkZsD39sUFG4ryPG7l1XOF68nj8sUx/LEUkZKyxAghSeh9cU+KPbA0Ge37xSOAPpSSxyrHtRtkZIOTwSPpSA4jx3M0VvY3cMkkc6Tfez7Va8O+JItVAsndY7o/8syMhz/s5PH0rYn8LReLoLyOa5mjFmokjEGCWPcnPbFeZ+IdEGh6kkUN08sbIJI5Nu1h+XQiuiCTiYy3PTpklimEMTMzZAeJlIZVxnNZs8hcmXIUMxKorcrzjnNc/oPjj7YsWk+I5pAB8sV+BlgOwfpke9dY9haiNBaTKYWZVM2GzKvfZz+v86mUXEqMkyvGkt1JIIiQiDDNn8x7mrQQW9t5ESGOHPAznn1Pv71JDdwRFbe3jWCHO3aOfxJqq10PPMavjrja3Ge1Q5DsRXayeUx3hwF+YIdp3A9e2eKxtQcxQbtqkleQfetOae4eFmbOAQSS/TtxzmsW6lEyvGx6DAHpTSAZZX50vwtqtxESLm5ljgUjjCbSW/pXmUrtJKzMcljnJr0hEJ0CWMEs3nglSOnGBXnMy7ZXB7MRXoR/ho5H8TOi8O7riMRRPtZAdzFsAD1rSttf1GwdzZX1xGSu07ZDWFpETCzkkidUdmwXYZCADOauXbx/YXlLI0sbAh1PJB/vVtGXuktHRWHiNNQure31uwiuzI+xrsAJKqnvuHXHPXNbV3pjaTdbUczWso3283Tcv+Irg7e4Bkic/LznPpXeyubzR7EiYkohKbjz19fxNTVpqUGzSnNxkkPiaeMFopWG4ZI3cf/Xp1vdSxMSGCcf8sx/MdKispARsc7ZB1FT3FoVAdRnPIOMVwao7dC5bP5hL28scMrYXPl7h1/StC21mWCURXQjLDhRGvB+oxj8q5wK2RIvystaK3UFxF5dwWjfuV6E+uKq4nFHVrcR3aIjBg7n5djYH44HFPltREwVZPL5+4AzY9yMYNZ2mwt5IjSQFcZyibSfqavw2TYxC7Y7kyc5/nUMaViddnLOE/wBlXAH4+tWSBGvnvGmAPlBPBHsKppbTorRQwEMedzjLN7+wqKWVY4D57NPIv8K/KoP9fzpoljTLe3UTvLNcqjfdVeAc+2eKjLQ21qW+VvLOwysOpHOAP4j71SR7q8vAWYxw/wAQjPAHp7fWpniVmVHIAj+4qjCrnsPb+dFw5SvLPJIu1g5d/mZgANo7Dn86gkmVH3M5JIwFPf3q3Ioh4ZlQHooNZ0pNwxMS7x/fbvSRV0ijfShonI6nk4rjtVlLk/3cda6rUFjT75LMB0A4JrktSbMnlKu6RzwoGcVojOTGaFYvd3ttArBWnlWMH03MFyfbmvYPCE0GmazNpNoUa2JMktx1IVeMZ/3gQR9K810dPsVtEdp80sHYjqMcgfnXoPgSG3utVvdfktXstOtV3SI8m4STEkkgenOceprrStE5JO7O9vtamtJg0okXeuYok+6FzjLE9/pXzL8UkX/hZ2uFOQ0yuPxRT/Wvcmv4dcvLnU7+d7aFFJzuwEiHOT+HNfPnirU4dZ8ZapqFuS1vNcN5JPdB8qn8gKTja3clO5k2VuJrlFbpkc/jXs9hZNL4c0VXLMIxcbB/stLx/KvMtHj+z3Mc/l7xCdzgrkE9h+eK9+tdFWHQ7aBcvLaRJG5PXkZP61jiPdp27mtLWRwklijDGCrK3c4xVWHTGedQZNr7j759q7K7si06oBjcM7sDn2FOXS4pnAVgzcAqck5+uPpXAmddzH03Tylwk3HynB4H6YpvjKKO4ig+SHLH5mK8oR3rqjax2NojgK4LdcYya4TW5nneYLn5vmPbH0qiEReDtdubXX7PSryciYSEadc43eWWwDGcfwNxn0IzWx4g1LUV1pNDFlJYXNxISqKTlwx5PsvB6dcVxvh278jxtonnxkxC8jDELzknH8yK9r8SwRHxXok0rot1FbylmIzhSw/+vWnS5D3Lmk+EdMjso4ZraNnUfNKCd4b1DdQRVPXIpkSSGdjJd6egljmPWe3JwSfdT1/OulsLkSxdcADHOB+VQarZiea1uYkEmwtBLt6+TIME/gdppxetyWeZtdM9yx6BqVP3b5BBrdk8HX3mBIxDtU4EhkABHrWnY+BoVbfqF60ijgpAMAfVjWl0zPlZx7orNuYVo2lyyRhQ2VFdq3hPSnRVggiUgciTc2T+DCsa/wDD0Vku6SOS3X/ntETLFj/aH3l+vIoTSBxZiySG4Vhkcc4qtBIELE9qtS28unXCefGNkozHIh3JIPUGtTSdFVQ97fDZDn5I8cmtFrsS9CppujNff6Tc/urZeSW4zWhf6lFDELa1j2x4ysY+UsP7zHsv86i1PVjIzQxbUWM4x1WL6/3m9ug71zN3fbSVQkuxyxY5JPqT61rCBLZp2/iKbRr3z1PnK/E0RGAy+gHYDtVnVtAtrtU1vTJh/Zko3Sof+WJ7/QVhWtkghfUNRlEVtHyxbqfYep9qfpHjK7j12OK1st+ly/uns8ZZweN319qbXVAnfRmbqeti5U6fpKtHadHkAw0v+Aq5ZaXBoixy3sP2i9kx5FmOevQv6fTvXQap4dg0GRtR0S188TyERliCtqe+ffOevArkrvVfs7yQ2MxuLyXPnXucnnqqe3YnvVJ82wmrFnUdTezuWlndbrVW42nBjtvbHQsPToKyoLWSaY3Fy5klY7mZznn1NOtLIRDe55/vHnFXwi7Q0ikKfuxDq5q0rEtgiAxlmOyEcFu7ewp7bty8eW0fzxoDgR+jOfX2odtoMjsoZO/8MXsPU1QeRro7EBWEnOCeXPqadhHaWl9a+OdObSrmbydZhX9zckBftAHUfT2rlJbOTTZ5La5j2XER2sp7f/WqJQ0DLLE5SZDuWRTgqfauml1C38eaPJboyQ+JbNMjsLhR6fWsrOD8i/iRxt/qK26kAgtj8q4+7vpbmfZHlmY1DeXs11ceQisJd20qex966fRvDZtikjsJJSMk46e1TUq9Il06fWRW0fwwbqJmuOXYce1LFp5t5nt3HKHFdtDFJDAVhiZmA/hGawXGzUQZRyeua4a0dLnbQnq0P06Exv5bHgjiuhgJjHvWY8KxYB+43KOOx9Ks+cyqA3Ud6wjoay11NBLySOTrx6VaNyGG4HGaxfPHrmplnBX+lUI1PPJI5pC5aqSyZAqymDyKLiI5Bk1Dg9KsOhbikROelIB1vGWfGOta0lp5FuCv3hzS6ba7ySV5HIq1dSqISvVh1FaU43ZlOVkYNw/nR5A6HmpY2JhGfSmSSGVtsaj6VX3yRHaetdSOZvUnk3ADPTNWPtJkAQ8DFU0ZnPzZNPdscelUiR80anOWzWXMI9pBq8s/lxuW61lXd0ApGzrTsBs6HtMJ29s1vwhhFx1rmvDW9ix28GupjY7yNuBQgIwwd9sg4FNZohlQBURkIu9p6GnzRoGypxTsBKioMFTmnXlwJIBEq8+uKhVAFyCaeCpYKwoAhCkgAikCoud1TSIAemBUUkBkHDdKBDQFH0o2KeB9abtKfK3500EI/wB7rQhlrzTGgAzkU2QmX5iADT1GUz1p/lq0fPFMRXYlVyTxUccq3D+Wo+anzxELwTiksrJ4nM4GT6UIDQjstkYAO1vWomN9btkPuX0qwupBCFmiK+9TGRLjDRkEUxFVr/eAsgwfSrFuRIBtHWq93aJMCcYbFULS6eyuCjv8vvSAuarZExFiPm7GudKXy5CyEL6ZrqnuEu12q4JrJu42AfBGQOMUpbDOFv8AxBJaXhtnBLHjitPRrK6uv3srMEbkA1RtdKWbWnmkG5ge4rtLVCgC42gdqxgm3djSJbZRCFGMVp2tyUfIPFUTFu71ZhhWNc5ya3EzWaSKdMMOay5dqsVPapcF0JU4xUflF+9MRXVAadtjXqeatwWYOctzSSaepGSaBEKNFjBNWAoMe5Kqm0QE4anxRSA7VY0ATC5k24IyBUQuRuIKY/CmYmhn2lcirMsf7nft5oApSSllZQKnsoEdcseRVYoyHOOtOt2dZCM4pDLsyqvygVRmIBq3I2Fyazp5N5OBSY0MYMysQe1c+jKJ33f3ua3FkGCM1jSRKZHK9c0hlqJEDBscGrIjwcqagtwWh6VaiU5HrVCLETlh0qdFY8io1/d5BHJqQBlXimhM4Yq8bIB/BwysashiyESIilgcrg9Keqb7mXdESQc5BpdpYEbSjd8ZxXlXO4yfJBkWPaSvYKn9O9CBFmIfICjK4FLgfamSR+eTjGKsRweWm7078Aigs0LKNyBhn5AbP3SfQGrSmaLO0nczEHDZA9cVDZstykn71jtwCw4x7Va8xVAVEdyPk3cr/kUMlFbQL1LXxnbW7zbRdQyRAOcbj1x+lcb4x0d5rmCNIzuiLhmZgBjPHX2rqFiLeKrO8liR1s0kl5O3DbcKM/U1zmsanEdYCuhXylI5+YZP1rZOyM7amVpXg+wglSe+Ivp3B8mFc+UpHdmHXHpXRGYrFulmEl6E8vAIVVGeAB7cVR83bBHHEuwFs7V/mKWe8IRRImZhxnb+ppN3HawR4SRvMLs56nPJ/wAKjfCJ8jB3fr7UiAYZ/TvnGag81PPXcxCjrspWG2NuiwYIZNqY/iAyazbhmKlI8bT1INXpljNwhYlieMg8qKheEl2EaEMTxzkVSERwI0WlfKnmT3dysEaL1JGK82uVZbiVWGGVyD9c163oUUaeJNCDgun9ojcuOmV9q858WWr2fizVoHADLdSdBjgnNd0P4aRyyVpFXS7p7YSAAMjdVPQ1fuIJ9QtXuYtmwHDhQB0HoKyrUgqVPWpozOHKQtg91z1qk3awieKU7FUgcdDXeeGJVu9FuNwIeFjtbPUEenpXn8ROSGGCOK9D0KFtM0Bw8W2W4Te2Sc7SRjj3HP41ab5WC3RoxqQ6F0DIw4YCtM2ztBuhbg/wms+xkIZQCWXPArehVcK6ZYd1Need5hJhnIHykdVNSOmBlQFI7g9Ks3toDIZIv3bjt61R82VWIkUBh1HQ0FLU07PUfJj8rC4/6Zjbn64rTi1QgIWdUCnIyD/k1yq8sWj3D681YjJJA8w59MVLbuXyI6ttVVgxDn5/vHdy3/1qrSTSXUoJ/wBXjCqoPArNSLKgttCj8/rV2F/l/dofq2R/+unqRsWDcbQF4AX+7SCSSbLRoAvd/wD65qSK1UAMU3nr8wp0q7lKGXb6haCTPlgi3ZZfMb3OaivJGgtzwcdlAxmrjhEAVByOpPU1mXx5LMRgcYHJNMWnUxb6VpCAkQaaThVHOTUSaWtmjLt8y5lBDyAdM+noK2o7I2582Xm4ccD/AJ5j0p6Qnbdag+WisYmkkx1LEbUH58/QV004WV2c9SfM9Dk7WU7sjJHRVAyT2Fej69rGh+Dvh4ukX8yDUblFkeJBlgxIJJ+grgtMdNKtH1adtsdqm9fUsOQB6EnAB9T7V5lqmqXWsahLe3cheWQ5PPA+lbVJWsjBHSa/451HWLKXTbZ3ttMcrmEHl8HjJ9O+KxLS2KXJQgFgAenc/wD66oxfPtQcHPU11miQy6hfpHBEou76YQRsRny0HVh7jHWknd3Y/I7PwP4eSW5aS5G61hlDHGCHm5AB9l6n1Neo6bPJ9qNrd5eR0yXQZSRf7wP8x2rndOto7aOC1g2CGIeXgj06kn19/eugtWR440+Ty9+5Ap+4w6fUY64rz61V1JeR1QgoogvbLbO6s+GbkE/Xt/ntVCNlS7YSIOTgMeVPHGc96275WeCSUlXkTAkXdnGME/hzXLS3R8yFdiqqtltp5YjnPXgVgaLVGpqFwr6aAo2dQSOxrz3UJTCzZYsWbPJ9Paun1PzJbd12SqCAcgcDn/A1naf4XvNWvhaxwOWQLulPKkE8n+dVuwSSWofDXw1/bHiEavcMBa6c4kBI+9Jzj6AAZqa68Sr4h8V6hqMMzJaRMIIMH7yrxn8Tk10fiDUf7KtB4Z8NrDO65N8ZOjgjlcjHJ7+3FVfDnhPw9qGhT3dtDPZtG7IY/NLKhAyT6kexrRK65UZ315nsWLG8mdYpSML9eMdK6Gyu9yqdzjP8Hf8AGuRs7iQQwgPlX/gHGPw/Ount2EdujBiNuQo+nODULQbVzZjBOMHGMAgGpkcqFBbpjGD1zWTFLuJkQ/JxwDwcdamN2/lqWTaOBnoMf5P6VSYmjWSQPllypB6gVYSf5QDg8ZrIS7WSHbC5aTIHHf1zT7zUodMtzJPInnIuTuPCfX/CtIrmIloGoWNppzvPs3QTkFrfsH/vrn7p9a5PUdWe5yY5SIeQJV43D0T0Hq35VetvEkV08tlq6j7Bc8AyfeXP8Teg9vzrA8Q6VfabqAg5kt5eYZh0YentiuqEVF2ZhJ3My5vC5ENuMKOAo6D6VOsFrpVp9v1JsA/6uIfekPoP8aWaWz8OW4luQJrx1zHbg9vVvQViW1lf+Jb+S7upQkSDMkz/ACpCvp7ewHWtiBJH1PxXqKRhCEXOyJThYx3JPb3Jrbt0isYpLXSpEyq/6XqTfKsY7hT2Hv1Pak823TT5IrZms9HTia5YfvLlh/CB/wCy9B3rAvL6XU9ttbxfZtPjPyRA9T/eY92otcGze0Xxbb6XeDTo7Uz6HMCtyZBlnJ4L46Ae39ak1vwvDojrf2DG40m5+aKReSuei59KxYLdIUCBdzH+H+prpfDutjSy+m6j+/0y4/1gPSHPcVLi4u6GmnozFVCrKWXe/wDDHngD1NLJIsQMjOSTxvHVvZfatTxHpB8PuskZM9hc8wyjnfnorGubAkuH3yHJ9ugHtWsXzK6Iaa3FZpLpgSNqL91B0H/16m+WJMj86RnWKPGcCsHU9WCKVBGB+tFwsS6nqqxoyqwHv61y0c99famh05mWZTnzFONv1poS71q9EFspYsccdq6/RvDj6dMIpOGIy3vXNVq30R0U6aSvId4e8KlroyynzJXbcz46k9a9Bt9Pit/ldRgdO2ar6OwE4jReF6mrXiS/h03TZLqVgBGpK/UdqyirA5ORf1P/AIlmmrqMLK1sB86qM4Pp9a4S+ntdauBdWKsm5cjd1z6YrFg8b6jc2ly9sySRyqfPhfkbR3HoR61e06QMsU0ePmGc+tTWjZG2H3ZrWbrNAbacYYdjSS2s9v0/eR9jVlYo7hQcbXHcVKrSRfK4yK5bHUzHLNuxtI/Cpo854rRcRMemKRY4wcjP5UguRQKxrUghYjGM/Wi2gBwVU1qRQYHznH0oSJkUWhUdTzT4YN5AA5FS3Lxxn5QCwODmtPSbQXbkGRYmHUH1q1G5DkkWbSP7PGJgOV5NTTWNnrKedZypFdYwV/hf2I7Uk+YraWJuJF4K+9eTXXiq70bVhcW7F7SSQrz03A8j2IrWN0ZS1OpnjnsLuSC4iaOYdQ3f3HrUWQ3Lmuj0nXdL8baYsE0ii4A/dy/xK3of881g31lLY3z2t0myReh7MPUVqncxs1oxsGCSOTVsRxEHctRxSRRptGCadLMAoOKtCZVnjjRSAcmsi6iYrnHvV24lLSllOKqXbv5OQcCmhG74b2+VyeTXQoQSRXIeFpt0rAnIHFdaqjOScUIGUboiKboCc08sXALDHpT7hkZhtXJHWns4IXjpTAbAhzk1NJCC2RT1IcKw6jtSSZLZxxQIiYZBUnmmMQExzmmsshYlB0qJS2SGbmgYSHaM5zUWwTODjpU0kLHALDb3NSwxoso28igCSJdgGelJLIrMoXirMpRVHFVRBvO9e9MRGhZ5u5UVswFGUFSBjtUUVptXp1qGW3a3JdCT7UAXrq1SWDkDP0rJBNlKCn3e4qcaquNr5B96Y4jnbcGzntTFctm9glhzuAbHesa9tReHIPI7ii4sSz8MRVK4eXTxuDZFIBlxBNp8BmjYnAqGy1Se/iJZCv1qyt//AGhAF2H3zVyG1SNBsUfSosOxWhswj7woBq/CpPahAS2DxirKjacU0rDuMdScYqWHAHzGnMMrSBgEPrTFcsxFdppPNCDpjJql5+04NS7wy5qibFsnowyM0EuRwSajhZnwD0q9EQo6A0gsZwjaRjnIqaIBWxjkd6syqvLrgGqxzIePzpgFxPtYADJpTdlo9pAqF1wcsaifLLkcYoBCCUiTkZFJJMBICBUMjhBkdagBkf5ielAy1NMcDHIxyKhLBlLAVMFQx/PxxVUgIxwcipY0QuOpUVnwATSOMYwetaLMPLbbwazYHMSuQMsTSGWowyHaDkVbjJDZxVOIyE524q5GGxkmqQiVd7Nk9BVgSDbjHSoYyc1MMA9Pzp9RM5e2fZdzZbv1weKW4fYSSA+BhWB4/KqsN1u1GcyRK56EZOKtzbJrc4CoR2PQ15R3swblg98hXAIGGxxU24hzuH5c5FUdSmb7dEUXG7IwMU0Syk4UliOpLdKdho3LCYW8LorgAuWYsM49q0EuoyjqT5jDktuA/lzWXpkO5X8whmfk9vxrQ8kqT5aktx1HH40E3MvUb1Bcq6AhVUkrznpx39RXDTt597I7P5jE5PtXYavgOCiiNvug4G0muUudguFc7d7A5wcCtI7Esu2y7xGFYMOxx0xVoojKx3hnPAA6AVSskdUR0OAW6Grfm7txYDjg8daQxtwmyNYwV575quoQD5sj6DNWIo2lkAHzMx4FVrverHaBvGeE9KYhkPDOY8bj93jP/wCqmFHKlncgKeSRnHrREXiTaH3ZXkHnFLcsFZQGLAdwMUANtLoQ6jBcbiotrmKcsQBkBwM/ka5v4ivHceONTni6SPlue/8AkCtmfa9pqCqCDJEAmR0KnJrl/ELyXGqPdydbhFk/MCu+lrTOap8ZiwnY4q1GchiSQxPBqGCMyS4q5HGm4I4bHopwapIkXS7eWe/6HaHA5HU+lej3pjEc1zGfmeRIRj0UY7cdq5nw3GJNRDspZLYGYjoWCqT3+ldItvL/AGZEkqhWLlxznJ7/AK5qp+7TKpq8x9u+wgPnbjqO1dJaSyKB8wKkVz8EDPBt6kdOa2dKk8xgjHketeez0Ei9IyStslHPb3qnPZ+aCEXcR0IHNXbmLA3MDntiqLzbDknOO/Si4KN9igy7GIJYEdcjFPVsHIjdj7iryTxvgbIyT1JwSKmVEySu4N7ACoLKsUc8hyQQp+gratYYwoLM0px3HAqoq7eDj2we9XbZQoJZiCfX/GqIZaeVVXaOp4Bqu78jp9MVYWHALEY+o7VUmZVPHB9h/SgkrO0jvhFLE9AOtFrbCH/TLpHWXlYIyOB6t9a6/wALaKxzdXC/OynaD2rotQ0mCazZFiTeBgHHStYaPUxqPojyi7DOd7nLnk57D3rP1W8t/wDhC4BA/wC6vrraXB4fyy2f1K/lUHiu7nhW6s1U4iJEpA5Y+n0qjcCx1H4f+ELMThbiGaaSRR2Tdl8/gBXalszkOX8caoq6VpelxfI+GuJwPQ4EYz9AWx/tVwqgswA6mtPXr86nrd3d4wrv8i+ijgD8gKo2rBLhGIyAayerYy1Z2ruwfohcR5PrXq/gDRwwl1ZvlyPIssg/dB+Z/wASMVw2h2D3kx0+Bd0txKFjbH3ePmb8BmvbtO0+C3WG3gyIYIhGgQ8bcYBPuev1NZYifJCy6mtKPMyVbPZskYuQGAJUgZ7H8a27LiYlVVMNkLxyOPX6etZ8NvGyo0hGw7tzA5we/wBauW+0neoVkZSAeSMjPPPuRxXAjpdi3d2MU0y3aM0FxtEIAYhZAexH1HWuWa3NlcMsgQOucFhlh+Vbk8kiODGpZVIJIP1J78fjVDXryGC7+1XdqtzAsYSWVR+8TOMbQOvXmm9SVoW2tBfWoSCFVKLgySgrHkjkH+99BXK+I/H66VFHoXh5A7NiO61FMdRwQmP59q0tV8RaVqlqIbfV7i1j+7LiAbiv90ZIC++KwLr/AIRG3ke6Rr265CtEqrGrPjhgQCQfyzWiaRLu2SaBJlpDDCrMcvLIxG3AGcknoBz9a67T4X8P+E9buZJxM0rPIAgPybkCqDnvlga4a8vm+zQpbWosLZ5VPlLyZfdyevfjpzXpRv47PStUaWBZY8RRKuPvsYxjP0pwavcJ7HOWMRQRsQcsQDznp1OK3EjEyMyZKAfKQMZP+RWPZQGaUYHOeoPB9vatSG58u48qRWTaBjjgLyP8DWRdtCVV8sqPMO3+P6ZqdlkvboJFGCrA7iP4TnnNKlk8uyVdgiHDSHp7/wD1qhv9WgsIFs7FTI7jhQcM/wDtMf4V962p0nIznUUSa5vrbRYWETbpXO0uBks391B3Pv0rk9Qv5Hk825IypykecrGfUn+Jvft2qK6vfLZpZJPMuCNvmAYCj+6g7D36mqVtaTanMCQQp6YrvhBRRyOTbIwJtRm2rnax5zXXabr2nW4h8Mapd7pW4hlIz5DdgT6+1cjqetxacjWOlMGnxte4UZC+y+/vUOm6HDbW6anrYfy5Dugtwf3k5/mB705K+4J2Ld54SurHWbqbXbnbao277UTkzZ6BR3P6Cpr26hWyie6jNppif8e1jGfnnP8AeY9fqx/CultdSttaSLRfEAtYdQYmSxQjPlgD5Vf39j1rhNT0rU4Ncmh1cl7kHrnhl7Eei0oO+jG9NUVbme51qdZJfkhjG2KFBhUX0UVdhhEWFjA3fotLGgX5Uxju+P5VOqArgZCfqa2RmCLjODwfvSdzUN1cJEvlIuXPRfT3NNubvaTFDjcOMjov/wBeoIoSSWcnJ656mnYDo/DGvJFA+i6+fP0q4OFd/wDlix9/T+VVPEejy+G7kI532snME3Zh7+9Y1zMiREHGOgqey8a2N1olz4b8RMTbFCbK5H3oWHQZrFrkd0aL3tDnNT1ZVyNxH0rM07SL7xNf7bVSYhy79gPSs+3tJ9Sn/eE7AcZ6Zr1TwZFbadaiFB856gVjKrzvlWxqqfIuZ7nPHR20C5TaQjL6V0WnCTUA024ZUck0niiHN/G5HynrmqcOow2kbRKSrH0qOWzJcrnY6Pb7ITK3U8tXlvxS8RNdSrZQyEKMhh616nbSbdHMoPBTHHavnjxhIT4luULEgNx6VUd7gylpeoXGn3i3MDYdex5DDuCPQ12dp4ns4pI3t1KW7ctAesR7gHuPSuDiHybgeaN+GqpRUtwjJxd0e46fqVteQrJBKDntmtJL3yxhxla8NsNUubNgYZCB6V1mn+MmACXSk+/aueVF9DpjWvuenLdWsgzkA1YSW1z95a4q11myvACrhT3Ga1Iraecg2waUEZGwZrJwa6Gikn1OoW7t0HDqKUXxmbZbxSTMeyLmqPh7RXn16CHV7eSO2Klvn4DEdBXqaafbWkG20hSJAPuoMZq4wbM51Utjzv8A4RnWtTb98EtIT18xsHH0Fdf4c8OvpKKZrw3TAYDbMcdvritJYQVLsxJXnA5OKkt7xN4jK7VIypJ/nWqgo7GDqOW5NcWVvcqRLErZGOnNeaeIfh3apd3CWcLtZ6gcTQh8lJO0qE9GHp3HFegXPiHSrSXypr6JX/ug5I/Kue8QX1tf2rTaZfK8ij5o1cg+xxVpE3PA1m1PwZ4lltJsiaBsEdFkXsfx/SvatL1C08caFHGzgXsa5glPXPdW9/59a8r+IOvabrywFlePW7IFZX24WZO3PrjtUHg7XpNHvIpg7CByN4Xqp/vClKNtSk77no0dkIWkW5ys0bFWX0IpkrBlIU1v6tEusacuq2uDcRqPPVekidnH+f5Vz5IaMYHXvVR1JZmu2yTnmoJf3gIOavzw7fm4x61nXMgUd6YGh4VjIunHbNddNFlSQSDXMeFnxI2OprqZY2ZDtNNCZT8psZzQ7FAKlhTGVY5pJ4iVwKBE0Y+QMGAyKPM7dTUKKy4p6zBHwyUAJcSMseE4zWcNwPOfetG4IkYBeKjlWNYwo5Y0DKpjmfGzJHpVqAshAYYNTWkiRHkZNJIhlkLJwaEhNks4ITcaZAr7d4PGelPiDH5X5FXktt6ccCqERrqA4Qjmp48SYBGQapTQhHxj8ajf7RHgxvkUgLl5p8WM7RWLPFLbsHiyQOcVffUnjXbODike8tni4Yc+tO4FWDUY5ztkwrelUr5Vnl2A5FU57CW4vDKshRB2FXYAoA5yRUIdh0Ft5cYCjirEbhT1qwiq0PpVfyTk7RuqrATAKTkGnA9cnmoYIXk3AHaR2NMkjmGeDxSC5bR8vgnIqYoG6CqNnuV+T+dayKCu4mqQmZ2wIxyMmpo22pyOKleEH5s09Yt0eCOKBEaSfNkVZV8nIPNVUTa2M8VMpAOfTtQMe+c4zTgGVOOlNdWdRgcU6Nxna/GKQhQqsvI5qGVRggDFWEaNW45okQPkdKYGWyoTtPJpBEGJ28CpLiMImVOWBqIMwUHFIaEYErjriq0h5Cgc1cIwu41SlbEoYUFCPEoRsg5xWXaOEdw/rxWu85MRyB0rEhbMjEjvSEzRMg7NVlOIs55qtBAJOehqzs2jBzVIB8TbjVwLkCqMWQ2DxirqOTwOlFhM4uzZTqtwpI4Y4+UHH+FW5rlURs4Q9Bk449eO9Z9lIXaadSADIc4/i/GrE0gCM4TPHJ7V5XU7znrwN9qi2qMDJyRimF8t8oAUkdsVNOC9zhtpyMjnNR7UjQHeWQnkAdPwpjRt6YwEi7sAHOR0GK0JG3SFlSMoMfvd2M1mWKmWVPuhcc9BxWqrQxA+ZI6gkbVUZ/WmyUc3qx8mWMLCkiM/OASKwb0JNOmItuOrV02tTebJGj7tpY8oBnp345rn0jC/LyE7k84px2E9QiYIuOemACeKuoR5O5gMEZ+U5qJI1KkqQccbvWo1DFAeFCnApgWIpfLVv4WPY8cfWqExJcBRwxwSOtWJhgHgegOKhUAYkYfN1AB4piGQtum+ZBwvBI6VLcRNIoiJABXnsDj3qRTE0QlOd3TAOOaRrcvbNJvVnQ53EZ/zikBnfZ/LuI12q27hSDjg1x2sktFakBVEamIgeqk8/rXcXC+X80gL+WuFOcZP4VzeoaXNLp2ozR8x28qSlfZx1/Ou3DO6cTCqtbmBpsfm3OMcBa1ZLErglRk96o6Gu/UCuP4ScV2i2JlUhVyT6V2U4poxbKnhpIl+0XNw8gLbbdVUcMTz1/D3rpZyJjtHCqAq59P/AK9Gh6TeaJK093dQRWUo3SWzrukkwOMD+E9OakRV2qScAnv2Fc2IdvdR14WN7yCzTa2Dz61qWkQFzkLgE1FDbhWYgd8irwhZGVl6da42zqaNsWQkgyy9eoqnPo0L87APbHFaVhKGRVJ5xnFaXH3to/wotcm7Rx50nY+AVAqWPS3J+VsH/PeuodI2GflH0qHZH5nyncc+mc0uUfMzDXTHGBJyfoDWhBYiH720nuRWlFZyzylSCi+uK149FjIySx4707EOVjl5wzYjjGcntWhpugkyLLKBkdBiuhttHhhfcq/iRV9I1jAGKpIh1Ow+0iSCMADHFTthlPrVVpcZqNLjMoUdzTbsjGzbueHeMdRjtvG+qWhskeKN13Nu5bKgn+dchfWelW+mObP7W15NKM+YcLDGM5X3ycfTHvXaeJLM3fibVro9JLlgMjsOB/KsqLSfOuDEAGMg6H1r0qcPcSZhJ+9oeQ3XFzLkfxGpbS1814lBwzn8hUVyS9zKe7Of510Oh6Ob3UIIGcIknLyN0jiH3m/pXP1KO9+H+jqlo2pyrzNuityR/wAswfmYD/aPH0r0O0j2Q5QENyRx1/zmue0qJzGpK+WiYSNVGNq9BxXXW6tHEh+YbW75OD3x/ntXnVp887nXBcsS5aWsc0O8MpiY4IIGAemf5Gm3SrBakkGMMd4A6oMjNaduFFhsDKRgeo698Vi6srTQAghM43Mw646jP+etS0CepnX06RXShXG5iNqlj8x459+MVjXFy32t1lkEiKSGx/EMcD3pl3cqJInkX5kfhQOfrmq0cVuqTSvNl94YyHjPPAqDRIc8yfaCT5ccZGYw3Qk8Z/A81nXFzE6/Z1VXKuQXAxnHf2pbmVjdwkoJFKllC9T7GnNErmQKFXeCSD/OmKxnbvtt9br5bLFvVQF5Kj2r0XXnAg07TVOQQ07sOpP3Vz+RrmND0ZpNWtlgctFGA8hx1x2rrLlEbUijAbobaOJjnkMOSPrzWi+FkS1lYWwt/K2qSEwxwT06d604rL7S5u5m2Qdd+MEnHQCnW1jHDbpPecRn50iPU1hatr0ups0dpL5NpGSrXCD81j9T6t2rWlRctWZVKltjVk8UW1rf/YltxLaKNtwoxiIdix/ve1YfiXTzo8f22zJnsLw7/Ozk5PQMfT0rAuLxQq2ttHhV+6o559T6n3rofDWoDS9Pnt9YkVtJl+/5nSMn0/wrs5eXY5733MOy02S8Yz3DBY1G8ljgKPU+1Z+ra75q/wBn6UGWFvleUDDS+w9F/nWr4z0vVYb620+zRptNuSDA0PPmn/aI7il0/T49Df7PZ+Xd6yVJkmzmK0Hc56Ej1q009RWK1ho8Oi+VJewfatUl/wCPexHIT/ak/wAPzqPU9XNhcySNILvWn4aXqlt7L6sPyHaqt/q62zTWmmzNNPNxcXzfekPcL6D3qjZ2QQGSTj3/AMKpR6slsZDaSTym4mkYzbt5kJ5B65J9a9C0+7g8baYNM1A+VqsC/wCj3B484e/9RXHAdBjAHRf6mphmBkuA5SWM7kYHBU+tKcb6rcadiSa0ms7mSC6j8uSI4Kf57Vn3N4ZCY4icd2/oK7EXFv8AETSHiBFvr1ovHYXCj+h/SuO+ytayPFOhjmjJDIeCDRCV9GDj1Q2KEKMmmz3SxLkkVFcXYjB55rm9Q1M5YKct0q3JRV2KMXLYdquq7dwB59Ky7XT5dRlEkw+UngGrNhpjXU3m3H3Rzg1evtXs7KDyoBmQda4alV1HaOx1xgqau9y5DELXbEq8j0rZ0WaRJWIJ3bumaxvB8kupXMsjrkAcZpILi6tPFwhLYiZsY9aIxUTOUnLc6u81CPUNShtHB3Y5qLVLOEXkUEKAOaW5aC38SQSMAS3cfSpdbuo4tWhlQAEL0q9LEJamyryQWLQE4IUbfcV4R4zQf8JJOy8bgCfrXuGkz/2pp9wp5mjOcdxXkXi/SLie5nv7YebHESJVXqnvj0ohZlSVmclG+BTiu8571FgjBHINLu5qiSaMFT7VbDcVVjfPWpwwzRsBMkzRHKuQfbrXYeEfGN1pM2ydy0JODz2rilG56uIADGh6MwWmPU+i/DmuWGru0UUjSofmVgv3T9a77T3aZizP8qDaF9fevLPBmj/2PEoQ7kk5U11Nz4hXR7tXc/Iv3hnqKjR7Br1Oi1vUYNGg+2TSBQOAM/ePpXkOo/EGbVb6S2Qm2tiTtUHnPvWN8RvFl5rGoMHytnGcRKvQj1rzaa/me4ABIctwc1S2Edxq+uRyyiAM3mxZ+fd19qyNP124XWIVR3Ks2GG7tWTY2i6ql1asWTUyfMt33fLJjqmPU9jUuiQStqVsdpGD83H3SD0NDYDfFCPDrcoc5LDduPcGrekybrdT1xxip/HkAS8spQPvKR/n86ztFk+ZoT9RSkNHsHw+8RtbXC6fcMShH7osc8d0NbuvacNNug0X/HrPl4vb1X8K8ls53gkBDEMhDKfevbNBu4vFnhtraUbZQNynrtcd6hOzGckzbxgk49KgktQwJAyDVqSB45XRxtZSQw9DVWe4eJSvFWBZ8P5W/ZB0FdbM4C/LxXF+Hpm+3MT69a66SQO44qkSyNSWbgkU+RmRRjrSuojIIFMkkJT7tACiVzgHGaVk3OM4+tMjK4BxT2GVyOtIBZNoG0dajSEjLZBqMkk9ak3EAAUDGeZiQ54p8NwpLHHNRNGGb5jg1LBaFkJT86BFhZiyEgVIupPBH8yEin2sagBGHNSSqisUCg0xEK6hFdcYx9atoIVUE1lzWoRsjApLiU2sSyKSx9KALl2kbnoDntWPdaUJpldXMeOwqSTV1kKHyyDUwn80g80MaIlhxHtJ5Hei3h5INWVUYJPWkOVGRSGSQx9R29BTh+6JKjFNSQqNx70FhKDQIAdz7+mfSphMiqRioUjPHpUc06W+BKwXccDNAhyyIJOBj2qwZWaI7RUKQiRtw796srBIsZAxVIBIJDIu1uKmuCYYPl6YqtDlGw4I96fcOWUozYBoAiUsQMc0jM0cgOCfanwAR9Tn3qUlMnnNAhEuHY4AwKGO9sdKBGfvA05OuWpAWYAsa4xmnyAuhOAKZFKhGMUrF+ijg0DMi5WQybQeKeqMIxnp60653CTkYpTITFgg4FADZ9uzANUWAHBq0o3k4pksbLkkcUDRUkjDI2Djisq2RhKcdM1rlN0bnPQVlWjYd8+tSM0ogBKAOKuvF8mc1VhjDsDmrbgj5e1WiblZMeZ61bUgLmq7R7RkVLGCy9KYjgNMI+yIS4Vi2eVySc1eulUIG3fMepzyawtNuA0IjLFiFBzjoK00lUoTISW6KP8A9VeVY9BmdOu248wKSh7Gq84Z5gu35fY8VZmdjNsIyhXmq7v5L/uwoyvUHP8AOnYDe08/uUVTtB6kCrk5lUlUDByMAdc4qDRVZoYWwpByWzjtVy4SVULgMfMJ5Lfy54/SlISOZvnkEiuW2SZwcnheKyluHc7WcnB6ha09TWVZ1RFD5J3AnIPHXNUo4tyKxG1u4A/rVLYT3Go7PlAOV5AxUsbE5J+uDyaVULPvGN3IwpqzBCI5lMbduSf5UwIf4MdfQdMfWqkke+4baw+XkVr7AgdiHLE4zvAB+lVWtSZRlMj7xK96L2BlKKKVnPTaBuq8sDSoQ8hKKuNo9asy2TLcLtVlRucZwMDr1NOLAbo8lW3bkCL1/L+tFwMO8iKhvvkjg8j9axri8ntoDPBGBFKptpd4yCvUf/rrqb1DC5jd8bhnnBwTXMXybftNu+CJ1BQ56MORXRh5csjOqrxMDw1E0mtsFXaXQgL6HNet+GIbKLWjpk8iy3xjL7VPyof7mfXHWvPPBSCPXb24wGkgs3ljUjOHyAPy5rWsJpNN1i21JGJljkDuT1bnn+teil7tjlaPSPFtqWtrC4AC7XaI4HHYisSC2C8MvzDsa7LVYW1HRd0A3BnSRM+h/wDrGqVn4XuJ4x5zlWPPHUV59bSR34ea5DJit1UgevPXirQRjxsY5PBArrrLwxbwlSylm7kmtmHSo1JxGoH0rJK5cqqRw9hbTh22RsPwxWxDZXUnJXavautWwjC42ini0QVXKZOsjnYNJJA8wlvbFXI9MSM5VAD9K21hRRUchVBwMU+Uj2jexRhtgG5AH1q+gVfSqM1yqmqxvsDg0XBxcjUknRFOKoyXGTVCW8ycZ6+lV3uwCST0pORcaRoPP71Ua8FvFNOT9xTis+a92oTnJNAtGvrMxOzASdSOoqVecrFSShG5xyN9pWaPb5lxGxYN3ZCc5/Co4o1iX7UB/wAe4Mp99oJrP8R66NA1bT7y0lRtNglME21fmlDcFj7cVtanCLfStSlglD2sljJJBIO4KEg160HpY89rW588WqCWYyEHAOTXpXhzSTDbpHKrrLOFkkxg7VHKJ+XzH6iuK0W1M1xZxcKWcde9ex6RYpbWi5YiQ4VGB+vJrhrz5VZdTopRu7mzaDyIooo4vmUfebnd74rYjIVyoIaRhvHpjP8AP/69Ukt5Elx5jMhw27cAAeQOBz0q3CWZ1LYEu7BIzXn2Og6Bp1iRF4bc2Ccd+1cZq99slkUNJ5sbEMueBnnkYrp5mZ1I3kcYCnoCOhHFcRq9xG8pBVfmID5XqeeD7U2wSKUV9DO022Q73BKsMnJ7mm3EZFvGI23MVDM0hGenX269Kba26+Y8zpEAvRk4wD+NF7MtvtVXjPmABmPQDPX8aRZCdgjBdVO3KhgeST6/lSwxM7SSyZOVwqKOnof1poLtLMYlTY0mee/HatnRrGfUJ47aJ97b90hUfdFNK+wm+pueH7I2li18yB5j9xDxuboo/E4rUt4IdGtGutUkjN1zJIGb5Q2c5P50Xd/Z+HdPVJpA0kR4OMnf2AHc81VSSLxbYiC9gS31aHMsETtncO2/HGfUdq64UrJNnJKpduxi6pq02r5knaSKwbomdr3A9/7qfqawri7ku5BFAAFA2gKMBR6D2pbpb6e/ltp0aN422yBhyKsTy2mgWwkmAedxmOEdW9z6CuxbaGDbuEcNrpNoby+fA6KP4pD6KP61isdT8ZaisEEQWFOQgOEhX+8x9fenWWn6j4svJLy6mENnH/rJ24SNf7qit6Sezg0swWxex0RThpOkt43t7UbeoeZu6BqVhaWB8PtcTTafGhR9Rd9qxueNqE9vSuR8U2l/oV1/YqRmKycb1mHP2j3Zv6Vkahfzaxtt0iFvZR/6uFei+59WrtfD+o2+taanhvXnBlA/0O4bqpHQE1LXK7lXucba2iRICwOT0Hdv/rVaALEevYDoPard/pd3peoyWd2pEqnhuzjsR7VWlmjto8k/N6VqnfUzaHM6W6l3Iz71nSSyXTc5Cdl/xpCXuZNzfgvYVOAsQJPJNUA+2aWwnivLWTy7uE7kcfy+ntXU6m9v430CXVdPRY9cs1/0m1Xq4HcDvx0/KuEu74ICA3NYsGu32n6otxpkzRz42ll7g9jWNW0feNKactEQX2os5KICXJxirNr4fvEhivLmBwkn3WwSBXQeHfCpubg3t2pDOS+D0Ga9M0Z4tPRLbf8AMT0xnNcFSs6j8jthTVNeZ5KYGt7OR1wTiuIETSXEjHn3r6I8Z+GbfUdDu7zTrdYr6BS7rGMCVR1GPXHOfavCdPtzOJpO1XBq2hzzvfU0fDF5/Z7P82M1LqNwlzeLMjfvgcgiqthbF5fLA5Y1bfTmgu1Vhhs5q9bEGhbSXLLHcyqzGMggkVa1C+N/dRybcEDFWZwyWCDGFIANVEiV3UA0m9LDW6JtG1n+wtdimuCfsk37uY/3R6/hT/GGmyeGvEsGsQ/vNKvh5c5HKBj0P0IrJ1aMbfLfrW94V8RWk2nN4b8SASWEo8uKZxnywex9v5VnTqcrszoqQ5tUeaeKNDGmXontVzZ3HzKB0BrnTHnlfy71654r8PXPhu0a0u1a50iQ5t7ofMYj/CGPofWuL1HQkuNJGp2DBinEsY6j3rstdXRyX7nLDKHuKkEnOD0pwZXGGpkkRHK8ikxlm3O5sjpV23YPqECE8bgcVm2hO+rcDH+0ISOzCh7AfRfh+9T+yYFLAlV6iuY8f6gUs0VCNzOA/wDs1l6fqEsaxRoxGcEVh+LNVlF+GkUNlSrKehH/AOus4RKk7mpLowutIje7mxx91DliPrWAPDh1R3t7aQf2rbDfDC2B9pj7hf8AaHp3qxbaw404wQkO+MxRk9fUf1H0Nc5eanqD3UN6k5jnt2DxmMbdp7VdjNNkouGtZYH2lJYiTg8FSOoNdX4VjSa+kmUl1uADyeh/xpz3Fl8QLVp47eO11xFH2tFGFmX/AJ6r6Edx3H0rS0PRpdCjIn4kz+FNRvoO5k+O4RJLHGBkx4wa5ayVorlMghhXWatMl5dSFeWzk1z05Bm+UYZf1qJu0rGkY+7c3JEyiuv416B8MtQ8u9eEt+FefW8pntV9QMGtzwbdPbeIogueSAahgmd94qt2t9ckdeVlUOPTPQ1zd1+8TJBHvXdeLEBtbe5I6fL+BrhbuQKCP4auOqJeha8NRgyvkjrXYW6p5vzdhXH+HyGm2AYPrXWBSH/CrESzlGY+3SqjK2MYOD3qSQEt/WkaRiApOQO9AhUXaMHmllbfgIuDTVPzDmnklWJHSgZXaMqcHrSqCWxmldt3OeTTIhmXHrSGLPtGMnmp4zsjGx+KbLaqqFmOfSoYTn5aEJokS8kWfkdKluNQGMhTmoDExb7tSeRluQKYFY6gZ5ApQgVos0DQDchJxR5EYUEr9a3ILOFoVYKCMUgOOvnt/L3IMOKnsXjlXJI3CtHXNMhK70wp9qyrKMLuXvQCL7YbpxUW4Dgt0pyEg7WFTRWsfm7nOBTAjRRLwuaUwyxHlMirjmOEApip0kWVQePpRYRURlGMcGqWs6MNVtAUkKSKcgj2rVZI2OAMGoyskPHUUAVbK3ktrRUdsuByasbndcbsUDcck01dy5NAAVyQCadOkbAAcmnLtKkmoZSQPl/CmA1QdpBB4qNjtIAB5qaKU/dI5p7onfrQIajYTGaCGznrQY0iQnNPjkBTpSGLG4HGKm8x5BhTioGdF5AyamgKyDONtAind7mwDnipEQeSBjJqSeME4zTVyigUDGYYdB+VVbqUhCrVeyR261DMkCZaUEk9qTGZQB8tyD2rKtHVpHU8HNbM7KIXKDHFc/bkm5YjGQc0DOhtlHGK0Yog3vWRBPyB+taEFyFON1WiGSyW5DY55qRLfI2g08sHAO4Ux5hGMqRQI8d0Y4s4EVNzSrwCetbTAhQW2Lt7ZJ5+g7Vj2UY+w2mNw2IDwcVqD7qhXbJ65AHHpXltanoFC/lVIwQMueeOB+tUjJui+fCEenJarV8y+egIyBx0qs58tixGRnimgOq01vs+mWjsoVWHAPUmrTyiWZg74iAPJHC/hUKKWtIAQQ4UFB7eop09u0wfARH7Nu+9UMcTJvFQzR74i6sw+VBhse2KqtIELKkeOflGDkfWrDxPb3kaEmINnDKeeO9WoLMTP5XOxWLKcDc2e5Pp3qlsLqVbdF3K/lkqByCe9XlhVmYtEFReeCKRU/eMi8DI46Z/KrqQIz4Kl2GO/QH9aAKNyIRChVELHkkryPpVVrRobhVLEkjIXH860pVWdcYCndgjBBNQyBY5VdmyBwvy5AFAENvA0hYSqjMDhGUd/wAacJonO1EBmLYLdwvfAqe2imlk3IjyEnOVXH4D2rUtvDk085kY+WrDgDqKaQHJXarLcSbN/meiru/nWXeeFdb1OKMW0AQq24M4x9K9j0zwtbW4MhQF2PLHkmtmPS4wM7RWkbrUl26nkfhnwDe2l19ouZI1Zgwwq9Qw+YH+ldbaeCLBI1Z4vMkDEgtzgelduLKJQMADFBCx4AUZrb2s2rEcsStY2KpZrCU4UYH0zxWhDCijsBUQY7frQODUu7D0LylATgVMjADpVKNsAU9pgKZDRb3rnFAbJrN+0cnA/E1NDcZHNFxcpexmopF3CnRsGHWn4BqkxbGHfWpYnacH2rEuTLb5Dgn3FdhLCGFZ9xaBlIKgis3E2hUOHn1VA+N2Me9VzqLTfLHkkntWjqfhlLi6DRkoc847ipo9KNseYht61nGm5HTKtCK0ILW2klKbuSe1M8R6utk9toNo2b67GXCnHlx9/wATzWwJbfT7Ga+nwqwrkj1J6D8a5DTdLln8VTajOzzz3YLuSowoxwgz0A4/Ku2lTUTgqVHN6mL4r8JR3mlX0ksxiigi3pj5VUj1/pWV4X1k33wv1+ynfM2m2zPET3jYEY/A13nxAj+x+CrszsuZl+Ybskn/AA6ce4ryvQLN4fAfifVGZljkh+yKPVuCf5gfjW13y3M0rmf4D037dM9/ch/LVhGpX+EdzXr8SKLBZIlVkVsKRyVAIB4+hrl/BmkrY6VA0QO5QA3HUnr9a6zeGR0IbJXcACOT6Adu1eXUk5SuzrhGyJvMSYiSPhGP3V9M+lXrZipTzADgMeP4vYmsqOMKyhdpkUBg2efy/Grdi8kERilVWjfow7E84/P+dZGiLmoS7IDsPzbPk3fdBH86428ckuBgr94cHBPYL+ddNfSMuAu4rs2jcMBW759RmuNvZZJcTgsoXkdgMfjxyKBlSPfLHKrKAwOEDHA69akmIaFWuAoOdqso6HpSWh8wO2cgHGWrd0Hw/deJJfMSTyrOPqcZ3c9B71ajfYlytqyro2lTaveBLVHVoxteR/uj1J/A118moaf4RsEs7FTcX8vG1B88rf0X3qvqerx6YDoui2wFwoy4YYCf7ch/pXLzzx2PmMJWuLuX/W3Dfeb2HovtXbRopK7OWrVbZLPdPFKby+mWe+527eUgz1CDufVqq2jXlxfQ3kMjxNG+6NlPOf60y0spruZXnBJJ+VKNW1+LTkNpp5DXONrTAcIfRff3rpt0Mbnc3rp4gs5pbL7P/wAJDaxZkgJ+/wC5964DTtBm1CSXVtfmeC0RjvL8SSkfwqP0q94e0q40GeLX9Qmmju2z9mtFJ3zZ/vj0PpXV63GNX09tcsIBJqNouZrFmyI2/vbe5xzWV3B26FWTOc1PUIIbSI3MIt7BB/ommpwz/wC0/wD9euWubq71m7E1wflHypGowqD0UUm251K5a4uXZ5XOSW/zwKugLEuEz6FvX6VukkQxIo1gGFI3Dv8A3f8A69SrFvxjKnOQQefrRHFu5PA/lUV3eCIeVF94/wCeadriTO3sr+28Waf/AGLezJHrEKE2s7ceYB2rhLuwvLW/ltr5ClxG2GB6D6e1RQpKJ1uElZJ0bcsoPKn2rvlkg8d6UYvkh8QWifTzlH+fwrPWD8i17yOG3LCuOprOvL4JkD881HqFy8EssEimOWJirq3BUjsawWee+nEUIPNOdWMVcdOm5OyHTXMt3L5UOWJOCRXW+GfCbMBPIm4jnB/OrfhbwrsCyyoOmST616NBCtvbbEAUjggDORmvLnWdSV3sdypqnHTczbcwW1m0IAR9pIz069Kk0e2e5ma4IjTBKK7+me1WXsre6kUKjLGoycjr7VqxQ+VHH5MS4U4wPSmSy/DshZQx3dieoNeDS+GZ9O1LULeLHlrcOqj0UMcfpXtcchDeUzYY9PrzXFX8ay6rfvnO64kIIPuauFzOZw9npN5Bcq4A2g1em0q9kvVmbaVNbyxFjgVdWwbbu35xzirSMjnLrTr6RVjBAT0qu2l3sMqEAFR6V0t0xJBIwB1phlU8e3JpuzQ1ucTqj732MMMvB+tZ+A8e1/StLW4hHebx0c81mnIzXM0dd9DsvBnjKARf8I54jVbjTZhsjklGdgP8J9qpa/4Rn8A6qL23Vrvw1dH5sfN5IPY+3oa42WIsxPavQfA/j4WsB0PXgLnTnG1Wk+baD2Oe1b0qnKzGpTvqjlfFPw7Qad/beguJrdhvaJTnj2rzxP8A9Yr6as/Di6QzzaLOLnRZ/mFuTnyc9h/s+1eWePPAZspptV0pP3DsWlgA5TPce1dekldHM7rc8/s4Ve6CBgu/gE9BW9F4enhR3nVRKfmhZWBBA681z2wngZBrasvE09lbm3uIfOX+Ft2CpqXEo1LXVhbiLef9WeT6UvisA3NtOADFPGWQ1yRun3u2cq5OR9a19M1WG5046RqeTEr+ZbTZ5ib0+h70krMG7lCOVoZdyNgpgg+hq3YLcatqBRIN6zHEhUYAz3rV0fT9Ng1WKS/U3EGcMmeMV6ZNY6dpduHtI4YYXGUYAciqJKngzwxBpttLAygXYOWkHUj2p3inUobSzliX5pYxhWFD62kKBbQkvj5mFcJreptcTNGzk/NzmtYRsrk7sXTJS6zPIcufWoRZmS5J7E8e1PRSlss6dDw2KuWsnHPfmuO122dDdlYbaxPDcCPoCeK6zTNHn03xDbuQWglA2t7+lZunQLc3sW5e9ekw2pFqFZQSuHUH+lNkI6HVYBd6BLHwXQZUGvPJbZ5iMrwfevSLa6h1PSzLAR5qDDpmvP3maO7mjzja5GPSim90OSLGlWf2ebd610EfzPzWJpzPJJgnJrctgpyDywrQgWQfI23moo2DJ05qeR1jjbA5NQWfyFmYcUAGDGtNIJTOeTU8jK+QOKgbKHPUUAMEbN07Uqq8LhyvFWluhtGI+ahllZgQRxQBDNKTySTntUKyBHDc/Spd8ccRLYz2qnLMHkUgcU7DuakF5G0qqwA+tS3VzEmWU8+grEvIpSBJHkYqzbR+dbZc5cdaBFwXbmHcEzWlpF/LcxGLG0jjNUbVNse1hxT7S5S0u8AgAmgRo3umvNAcSHdWJChim2twwrqFuATkDg1mX9lumM0Y5oAozgpHu/KoZpZFtw6kn2FPu2b7MUwd1Q2t5GiCG4+U9s0wMe+10qoXD7h2AqfS9dabC5PHXNX5bG2clwqnNZE+niKcPEMc84qXcDrbecSANgVZYeYKxtNvohH5bA5rXtpkZiF5pgRoTuKtxTpI/lyDUM8gExHf1pd5bgmgBu7jFPHHXBpGiCc560vIA70wZXKP52RVkplR0zUbzBXx3pyyHcPSgVhDh/lIwakWNVXrzUFxOFIIXrQGDANu5oAlVNr5qc89BioGBZMg9qdG4CcmkBFIrAEls0gLKuSM05myRnpUyeWVFAEJyQCOKgn5ALCrbHBOKqztlcGgZnzKDE5B7Vz0M8KSNg/Nurop8JA/uK5KK3L3LuB3qSjTF2c4XNSLdPjJzxUKxcjHBzU0oaEBeCp700xWLkV87LjJPtUwmfGGGaoQR/MGFW/4sGqQWOMgEcG1ZHwEUAj2pXlhKfO4Xn5QRya7uz8EQ3e2acOqZ5B/irXTRtM09AIreLcO5GTXncjbudfOkeK6tLh1CMEYDIAqraMbi8hjblndRjPXmvY77QdN1Rd1xaIT0DBcEfjXGN4Qt7HxPC1i8rRhS7BxnB7AVfs5Eqoi5O4trrBVJFAIyCML70pkBiZiqFWHBAwQa2LrRjEsSTMXnmG7y1H3V9/0q/ZeHYWCjyQFHU9aToS3Y1UXQ42+QT6ppZ+UFS4yADkY6cVfbT72d9y75C4z6BeMAV2segQLJEyxJlTnIWtRLJEH3flAwBikodB8xwVr4fvS++WT52/i7itGLw7ISd0pwTggDrXYLAoycDNKERc1XIhcyOZ/4Ru2JDFTuUYz3pYvDlvGeIRknOSK6JmXBxmlUqD04HFHKg5ihBpUUeAFHHtV1LaNMcU9pOM8800OeuRk8CqSQm2T5wABwKZ+NNaQY+p4ppkxTJsx7d8VFtycmozNyeRSGcIDyM0FWLAA/CkUqBkmqTXOVPNMNwSMUXHysvGUckVE0wY4zgVU81tuPWosnBzSuHKWjN1I/CpI5eKhijygyBUqxEUDdi5Hc7QPerUdwHOQayGBUAelIkrIDTTJcLm6JQTzTXUN0PSsiK8DZyanS5OBz941VyeRoseQoJJ70hiDcBRinLMrDmpc5Hy/nTWhLOc1jS1vU2DcqxneMHq1JY2b2lxvkBd3U4YHgngf5+ldF5QYbT0PXNMuoh5eyNTvb5eO2e9aKb2JaR5Z8TN2p+HLi6RwttazLEmf+WhzzXMpGkXwZhhkVkFzqijOPvDOT/6D+lem+N/C8eqeHYNOSV0VJRICD944OS351w+v6RqK6doGlrHutdPiaSTYv3nY8fkv/oVXKaVOwoxdy7ozCK2XDhkRtgwMDBzzzWk858+NJoh5X3DJ97Hf/AVR09HRBJIFXYgIBHOM4Jx2PGeauJHvuArPGzIAxVmxuOP89K806kWvKjikgEOyRyCQ4HI9vr/hV62CGQJGVGx/mUdeoz9elZsQYCQpkMp4IGMgelWFlU7WUFFU53Dgk4xjP60iivrMcbWzxRIxAI2rjrnrXF3hSW4aKJ2ARSHAxjjpXV6vuS3XZO4Jb+A9fp7VY0vw5a2ETatraIn8aQtxwOct7VcIOTsiZTSWpk+HvC0l5bLdakxh09Tu2kYaY+3oK0b/AMSzzzLY6AI7e2tWAe5A/dx4/hA/ib/GqWp61ceI87Ha10dfl8xRtafH8Kei+9Y894ZAlnYxrHCgwqJ0X/6/vXoU6SitTjnNtnbXckXi3SZp9P2pq1uB5sXAMoHeuQs9MYyNJccOvLbuAn1qxpG/Qpv7TScRtGP3jueCP7vvWnr9snjXQRqnhyXnfi7tSQpz6n+dNe67dBWvqclq2uvcMNN0hHfzDsLp96Q+i+grX0nQofDzRzXUSXmsvzFbj7kHoT7+/b61Z0vT7fQI2jsGS41Nk/f3j/cgHcD0/mfasDVNcA82z0x2YyHE10fvyn0HoK032JLura6bOeURTC61OTiS46rD/soKoeHdQvtF1canbuzFv9ejNxIvfPvVCzswAHfgev8AhV3eThEHTovp9apxTVhJtHW6/pNrfacPEGiJutpTm4gUcxt3J9q5eOL/AJaOcD1/pWpoGsSeHbk3B+e0mGJ4TyHHqB61J4u0cRQQ6to8gn0i55DxnPlE9vas4vldnsU1dXRzt1ek/uoe3f0qGKHPJ6eppYoABkjAFE04RcDFbED5JxEuAQKy5NXnsLyK9s5minhO5HB/Q+1Vr29ABwQAKoW9tcalOEjUlc9hWNarGEdTalSlN6Gn4h1ZvF+rpex2ogmkQLPsHDsP4q6bwz4ZWNVZ1AJIyWFaPh3wpHbW6uwDOSAxIwQa6F7SWMqIiSPYV5Upuo9djutGmrRJ7e3S3towowuwAj35qe1VZm3zMQIzwOm7jvSFDbRb7lw74yFHAFVpNSghmTIALBT14wTzRoidzbkuoITtjODnGO30+tW4tk3zAbTtO0g8Z+lcVfaqNrorKQHzyehqWPxM1vMkbEDgce570cwuVnQMW/tWEOpAUg5H1NcncwSRahdQsCWWVhn2zkH8q7OC7t9SjR0ZRMoB/EHpWL4hiaC7WdV+WdcFv9ocfyxW1NmU0YaR7Gx3q+sqqSCO1VAjAb85NPXdKvBwa2WhnYrXEMjAnHy561XZNkLsfwrc24s2U8kVj3kb/wBnyMfwxUz0RUNWcdqB+1b1HqcVj5wCrja61eEhYFw2SrEGknRLhNyjD1zXOopxY8wBwCrd6huIgj7gM4qTacY5+lI4YDPbHNNCaNvw94r1HQpgYZC9ueDGxr0jT/FGlayircRiNnGGU14uuMZHatC2udm05/LvVqbjsRKCkdL4u+ExnkOo6DOm1uXiI+X6gjpXmeq6DqelOYtRspYx1EgXKkeuRXqGmeJdR0jZJA/nQD7yH0rqbfxfourRbL2KJSeCHGCK6Y177mDpNHzkbYjkHIqRbVmXcBnHavdtX+Fui61bve6LL5TNziIghT7r6fSvNNb8K6x4eYtPbmSEHHnxKSo+vp+NbrllsZ6o5US3UC4SRgPet/Q4NQv8SXdxK0KDEaFvl/8A1U6w0tdRZZiuEU/MPU11Fp5FihDhVj6qPeiFN31CUlbQrahKlnZbUOHYflXFXlxvn2g9/wA61tXuy00pL5U9BXJF3nvVCZOD2rSrKysTE6+xkka0CAZ9RW3p9rlRu4OOKqaTZ7ogSOCK34Y/KiwByvSuU0Zd0eDddooHKnJ9hXaalIbPTYpNxRlXO705/lWX4W00zSeaV2u3Iz3WpPHmpRWXh67LnH7sqo75PAxSYixpmov/AG60sWYfNG2aIdAwHUexFUtZUrq0xHBfDH8awfBOuJqdjaSTY+1WpWJzn7y9s10viRdt7BIB8rR4z9DUx0ZW6DQyyzksa6OBi8rYArndEQvNmt9VKScda0RLJLqIiMsoyfSqcDSc7lOPpVqWV1z0J9KW2ulAKlRmmIqmUq3Q015doywq8s8U0ojZADnrVq5trfyfmAoAx7eUO3SrjhGjJbA4qASxwMyRIDSMGdaYFGUbmwB9KfDBmQDGKsYSOMkgZ7VA+8fOGGaLhYvSptjxjrVOIeVMcnANWl3tAC7c1nX8MkiFkfBouItyXGTtVqrPEzNuLcjmsy2aaCb9+SQehrVKkkMGyppXGbek6jHIghkI3Dir07HeFU5FcdcRvCd8bYPWn2esXMUgMgLLTA6ye2jljGRg1QudLjl2s3OKSLW4ZxtYYNWzcRmIHd+GaAKiWCrxn5RTJLNSDtHIqw1yBKE7GomuGgnww+Q0CGQ29sBhwAxq7FYiL50k49Kp3dt5sZmhcA+lZS39wjGHJzRcDUkjzcn5uKm+7jFUbbP3nJ3GrkZznvQMe3zIOelBbauTzSFwFpflKg0xDAFJyRzToyHfAHFS7EcZz9cUnliP5hSAZcQoSO9M8lUXINPkbfgrSMuVznFAhgWQj5c4qVFCjkURlh1YYp7AmPOKAG5XoaZ5Ls2UNJkZqeJsHOMUDI1VlJ31FNtHNWidwNVJcrkEcfSgClc7WgcZ5xXNwSqiso5OetdHOg8pzntXP2kSlnGOdxqWULvbOTzSF3lODkAVIFxIFx1NSmEB9uMA0WAlsxuIXPatCNQASwqlboYmyOatEyMcngGqQmdHr3im00tTBGRJKOCF7Vz0Wq6lelZjFthbuR2qpoehSapdrHK3mCMh7mU9z6f59a2tVuBNcrZWYySdiBfTpVRpxWjE5F3TZRfyeWUO1BlmX+Va8emWttvuplBbH5D0qTSbBLG1EYwW/iPqabrl7DY6ZLNO2EUZPvWbd3ZD6GEx+0amxIJlkP8A3yvpW6uyGMKAK5zw+ZJke/nGJJjkD0HYVsSS45BrKcrs2hCyLay9T+VKXJ4zx1NUFnGee3Jp/wBo4xnr1qLl8pYaSo2fA+g/WoTMOvYc1GZs8evJpNjsS78d+lNMvGM9agaQdajLUrjsWjKTgDoKDIAQM1UEgA5p6sDyaB2LBn54H0qKSZguR1NNB+Ye1LJ0/lQIh3sT7CnbG2Ak9akSPkA9O9PbazAZ+tOwyuU+6M89TS7cKT61MqBmLGpCg6YoC5AE4zn8KUICwAyamIAz+lRq6q+fSgC9FEMYxipBCCagim+X69KtRuCQKtIydyJrfJzUE0GEI/GtTaDTJYsoaTQlI5eYPCcjPJ5qeGfeRz0q9NbA9RWVJA8Llk6elZ2sbXuaEc53DmrcU5BHNYaTg9eDVyGYEdapMTib8cqv36VJjkEHJrKhlIAAPWrsFwXkb0XirTMnEL2ETFVPQVnzWSSEsVGT1rV8xWyTjFRsgZSaGCdjj9S0BF3ywZV36+lYEkksLGOSLa8SA5HfGB1+ma9KkgyMYrD1LRI7tt20bgCM59f/ANdZSj2NFJHOxy7ivmvkbdyDHTPv3+9QzlgsMSNI7NwiA8n3yKlbQ7gXSwBC6M33VODj1z+VWNR1fT/CFnsU/adRlOAqDLMx7AUoUnNjnUUUaFpaafp00Z1GaGO7kbEKyHIjOOB9a5TxJDfTarKNdYLaRHMVujcTf7TH09qyp/OmuP7T12QSXQO6G2B+S39z6tXRaddx+NdIbS9SzHfwnNtOf+Wg9K7FH2ZyuXMcpcXM+pS7IhthHGQMAD0FWljtdKtPtFw22Ptj70h9AKdfyQ+HVaO8T/SF4WAdWI7n296x9P02+8UXLX99KYLBSQZMYBH91B/Wtk01ciw1E1PxffeVCBDZxHJP/LOIep9WrrtJurTwsudLCi1jOby4mP8AriO319MdPeqtzd2dhpgjjH2TS4+FRc75j/M59f5CuPv9SudXlClfKtkP7uFei/XHU02uYE7HY+LrI6hosWreHpA+kzktPHHwVY/3vb2rlLWySMB3HB6AdT/9atzwrq58MSuk4MunXGBPAeQB/ex2+nerniXQPsksd9YOJdLuhuSVTnb/ALJqYSs+Vjkr6o55naRtq49M9hUnyWybm646ev1pZHjtEJIGcdD2rKeSS5kyeF9D3rYzJJrl7lyMkJ7d66Lwnry6E0llfgSaPdcSxsM+WT/EP61hxxrEoZvyqtc3I2kZ4qZRUlZjTaZ0fi7Q20GVJ4H87TbgboJhyB7GuDvb4LwDxW5ZeNRD4fvfDuoxG5spEP2Vj96F+2D6ZrmtO0yfULhVY5ycZJ4Fcs8R7NWZ0U6DqPTYLOyn1KbhTtB59BXqvhnwpb2dstxLkMQOfU/SqHhzS00+O4CquUkCE+vAPNan9pzm4kjU7WXKmP0I6V57k5u7O12guWJ1S29va2pIIRAScCsq71QJEoiAbjIHfNYFzqki3RSSRvLJLNk+tZ82rxQuZN5REyN3YUr9iOXubGr+IFVF5/dkFTkevf8ADFchrHieJkESfM65+72rI1LVbjXbs21mCsO7JOOWrWsPAV35gaQdQcsW61Vu4GQdVu5wdynLcjPfFW7e7uHnjkYMQB09GHSusg8DwxxgSOcjnO7pxzWiulWFrGu0jk45HXHalcexl6VfXySKVdiADyB0JJNehx7NX0uNbpPnYZ3J2561yzNp0MoFuoV94OM9QTzira61BbyrHFIQOO/H0ojKzFJcyJLnTJ7H76b4W6SKOPofeqv2c4JAI71pL4hjiJWQ74pHCsrdGq41nEwMkDAwPyvPT2rqpzUtGc84OOpgxltpUjrWVqshW3dQe3Aro5rZYtxXtXH6tcbZHXPSlWeg6WrOHtW23txATjJJGacX8qUZHeqs0hj1ESngFufpWjLEJYsgjPY1z9Do6kc+xpFkQ4Pf0pJEyOmCahiJ8zy2z7VcUArjqv8AKi9gM5bdhMy45/nQY2TPp/KtVoMos0fzAcHHUVXdA0oX1p3E0Ja3zJhX5Iq8EgnJOAyng+1ZkkWx9uOexp6b0G5Mj1FO4F/Tta1TwpqInsJS8R+9G5yrj0r1LR/FWi+LLUBitveEYeJ+MmvIXmMwwy5/pVcqIpBJExRh0ZTg1pGbRnKCZ6/d+CbKV2aCNY2POYiFz+HQ1594l8Ka1ZyPMkRnt06hRhgPXH+FLpnj7WNOUQzsLqJfuk8MK7HTfiXpmoKI7j93JjBWVcj866IV2jCVJngmqXDKzK4ZT6MCDR4dt1nvhuwcmvoG40/w3rL5eGFt3KkYODUcPgvQYpfPgtolkHXao5q5VOYnltocZZ22wqqIx+grqrDw9JNIjTLhGGQBXRWun2NufljG09RxitITQRRFMgKOmKzckNJkcNsmnWmRgMo614x8UtdXUNQt9PhfOwl5gPXtXonivxQtjp7mPkqMA9q8Lbdd30tzIxZpG3EmhO4NWNvwXcPaanhej4yK9W1tmks7eQcjcf1FeW6HaNFqSMBxjtXq11g6QOMlSvB7cYpLcb2E8PSBptuOa6uRIiAejYrldBeFbvngmuofbkYPFaksozZJPNRRqASWbGKnmb5iBUBAY+9ACKwWcODyK0Zz51uCXwR2rKZDmr6p+7FFhMr7OM9CKlXhetSeVuTkfSopAVXFAFORyzbaYql2HNSlcfN3qZ1ihtw4JLmkUidkCwquaj8rjpn2pbf98pJOKk27EPNNCM+9tk25IxnpWZJcPbDA5ArTnIdgCc0qW0TN8yhs0WAy4dRWRv3jDFaEb2zJgEGqOpaPE7boSUPfFY5s7y2fKSEgUthHVpGgYbB1q62Ay7uAK44+IbiwCiSFnx6Cqdx4n1GeXels4j7cUnNIDu7u4jDoVYce9JfX8Qst5wSPSuEuptSv/K+z+Yjd8itfT9Nu9ubuYuD2NLnvsFh39tagx2wW7bD3NatkhkAkk++etSKowscaDA9qnW28tgwNOKfUC2FiYbh94dqkyyANGmSe1JFDj5wefSrHnOAAFz74qxFZ2Y4Drgmn7QAAaWaCSZgwO0jvSxxSE/ORxTAgKNvG0mpyjbeWp7hfSk44OeKQEAfaenFOaRSOelLLtPQUojWRMYwaAGIiMuQ1WM5QgVClsQMDtU4jYL0pgVjH81TQKTJjtRsJOcVZgQIMn8qQDJFAJqJgNh3AEVJMOc9jUTkeXigDJuBgSc8YrnLKX55Of4jXS3Kr5Mh74rm7azOWkPdqTRVy35WTuzTvmOepqysKIo3elEZySAOtNIVxsfyjk1owIJFyelUxAxkHymr8aFBzx7UwLksqeGvDkNirg3ky5kYdcnqf6VX0KMRK19IA0zkCMH1JwBXI32rzajdtczcM2AAD90e1dFppd7Sa95CW0ZKjtvPA/T+dbOHLHzZne7O5iuI4LcKZNzKPmPqa4XxXqLarqsGlxtlFw82P0H48n8qsW0rJB5k8hyql5PbrgflWJoqtdXs97IPnncvj0HYfgMCuWquTRHRRXM7s62DEduqKMACntISCKgGQopoY9T3rmNyYtgUzexYe/WhTzg0/AMmc0DBm+T8abuyffoKkboBULHbyTzSAex4GKjJ9KTd2pGOTTAUtlgKlVwBx2qAjaM9zTwaQ7DzOoao5r1Q20dqjc7eT3qmIy8jOfr1ouykkaBuwB196YtwZDwevFUJkKpmiDcqbyDmi7CyNpJwBjPSg3POc4xWTvcLyD603zGbGD15xRcLGnJcnb1quJyzYz3qq7EnqaYrBTn14p3HY2orkY54FXIbjv3rnTdBePSnJfkYyfc1XMJ07nWR3OcD1qysoauatr4N82etaEVzk9afMYypmjKgccCqMsIOasxz8cnIpj/vD8tLcSujHns1J4+tQfZ5Y/uscelbRTHaoWiBqXE0UjPS4kiDMRnA4q5b3IEQUHnH60jwZ4xx1pvkgdqNh6Msvc4Kop5NXYZcsqk8AZNYqxuJS5NWop8H5hyetCZEom5gMM461G8XB461DDcZIAPFXA4bv0rTcxs0Z1xGIImEajznGCw7D0riL7w6sU8moQxl75hjzXOdg9FHb616BNGGy469xVVrcE4Iyaak1sVo9zxt7G6a6P21SMH5U9aNT1iLQwBCQ2oLyoU8Re59/au/8Qaf5sDrbHbcEfLKo5X6Vwmm+E00ic3WsEXFwGzFD1GfVvU+351vGXNozOUXHU6SHT4fH+i2d/qdm0Oq24zt+79oQf0NY+raxBYwj7RGEVPlgsk46dMjsP89ai1XxNJpF0ssb+ZqS/MkQb5Yx/tf4VZ1PTrTx1pS+IdOQRalEoF5bdC2O4/zzQvdfkTuji57i71i78+d89lUfdUegFXooo7RMkDcPyH+JoPl2seFGWI69/oPSljgaVt0nboOwFbp3M27CojXDZcHaex7/AFrodB8SWmk/8SjVG36XdNsyf+WLHjI9q5y5vFhTZHyfbvVIRNcEmT5s9j0FKUbrUcZWNzxN4duNG1Ta7+daS/Pbyjow/wAaywqQjJ5Ndb4Z1i1u7MeF9akzFJxaXDdY27Ln+Vcl4lsbnQdRmsrzqnKsOjjsRSjJp8rHJX2KNze4yScD1rEu74yHavOegqG5uXmfanWr2j6LJfTYwSo6sO9YYjEKCsjehh3PV7Eek6RNqFwoA6nBY/0r0zQNJg0/JMaOOhGOTTtM0+LTYEi8sAuOOKtohjuI0kIC4xu9TXlNym+aR33jFcsSGwZ92oERnynuWx7YAxj8qy0k8y5mlLqZQWGV6kj1rS0+Yi2vsk/LOcZ6EZxn+VYxKJeSzcZYksc8VSZmive3cTvvIw4X5uemPWsyDT7nxJK5AMVivJx1c1ZMUeoXQZvltyTmT1OOlQ6x4nXSoRbWijcpKhVql5CZ0Vkul6RbN5aQq4OGLLziqtx460+zPzSgMo6Z61yNnoWt+InE99O1tbMc7V6kV1+neCNBs9rG382QclpDuzQ0kTcwNQ+KBlRo7aOUqe4Unmsd/HN1ImyOKU45AI6V7LaaTpvkgx2MMbY6bBVs6FpTKJJ9PgZm6kIOarTsK77ngD+JNVaTeuUbP5VE3iDU94ZpzkV77N4C8P3uc2gTPKleMVwfif4S3sD+dpGLiJiflJwy07x7B8zj9P8AEtyWVZZnI3Aj0FeveENX/tPS5IVbLL8wH0615Bd+B/FFi2W0W5dQM5jw3H4V03gTWH0/UY7eaF0bftZG+Uj2Ip6Rd0N+8rM9LvH8u2ZjXn2qSeY7HPJPFd3rreTbSrnkZFef3hD7M1VeWxnRiYV9YiSEsOGHOaTTZfOi8uQe2fQ1fuW2RNnkDvWRbSi1v8MR5cvp61indG7Q6ZDFMQc5U8cVLFPtYH8xVq4hWQFsday5AYmPP0oFc1CxVTJEeD1HrTABcLuQ4cdqrWl0OVJ96tGLnzosc8lRTAVYvPiIb749arQttkMb1eglDOCTg+tQ3cAEwYDBNADBERLkDI/nS3VopG5DgH9KlVtoUkZx1qbzI3wGPFO4rGDJFJG/Tv0pVCO4cqFYda2bi0BAOevQ1nvakfw4Ip3ETwymEhopHT1KnFaSaxqKgFLxwR2ODWHGkiH2+lX7dCWC0bA0jpLPVNRnIzNnPfFXWubnhZp2wT3NVdMtysJbrjrW8NKivVFvJlUlXKyD+E0XZNkcz4ig+06c0D8qeVI7iuEtbTbKQRlR3r0jUbSfT4H0+7G8x5McnrXFbPKu8YyD19qulLWwpxVkzY8N2xF1h+VzlT/SuyuXH2d0zyccVl6DZqkeegY5B9K0buBhISoJFdEUYyJNJhMl2CvUV0pY8e1Zfhe3Bnd5MgCtu4iCyEoeK0MyuTuPTk0gt9zZFTxnccMnPrVpISeVQD60wKUkQ28LzRtk2DK4A71e8k80YO3aelAimZJCoCjIqJo3c1fSEKfanho1ONtAGS8Py+9RS2cjRh0HI9a3HWF+gwaTyy689KLDuc+rvCMsDTjOzoeuK2Li03rhVxQmnKIcFeaLDuY0bI6njkU9JV24HJqydN2SN6GlWwCnNKwrlUqWUk0x7ZWXIqy1u4k9VqdLZs4wKLBcxZLCEsDIoI+lX/slsLYbY1FXmsPNjOTzRDp7hdrNkD2oaC5SS3UMNqipzb/LwKsGydTlX4+lTJG44JBoSC5Uih2fMVqwctjC8VJ5ZIxUiEICGGaYiKMYPSplJDYApwBIyF4pEkUE880AG13BOQMdqPKcYIP4UbjuyDx9alSUA5yKAI2hBXnqapkFG2kcVoyShjkYqu8yZO4A0CI4gJCOPyqVogpBFRpOM4XgVMJwRhqYAeB3p+1iPlNIZVxwKi8/jigCRQQSDipcgjFU1kdiatREoCzkYoGMfk4AqCSFtpOamM4ycAUhPmLnpSAx5bdij5IxWLGpD7E55rq5I12kYyTXIs/9naqynOGOeaGCNRsRxYYZJFJbx7mBxVSe9DOGJwDxV2zu4AACRVAaUYBYADpUzQ7hkCqyXUIf5cYq5HdJgdOaBM8uSTcck4Ve9dbe3i6doFjY/dlnAnkXPQfwiuGacw7OM4IJHrV+OabUb77ROzM7kAD0HpXXKN2Z3sdJdSMmhFST5tywB+n/AOqtDR4PKhH0qleL5lxbQD7sa5rcs49kQ47V5deV5ndRjywLAHrTGXJ/lUxGKb1bFZGg1Tt5oVjmnEDNMYEHPrQBJvzk0wjOCaaSM8GgSAnrQAj4+tN4xSv0xUZOOO1IpDvM+f2qRHDdarNwe9PQe9IZOwVyRQIUAFQghWp5nHY00DY2WEO4WnGNFwvpUT3KKSc9KYs6sc5pk6kzkE4A4NRYG4/LjFOEi9QacMbc0DK5A5NVyRnp0q8Uz0p32XI6ZzQUmZDgk0qRk1pPaAdBSx2pUdKViuYqISgyO1Tw3LJ1P1p8kIC9Kz53dT8q8CjYnc211AgAZOO9WYbvPJrl4rgj76kVbjvRjhqLicDqFuFYAZp4ZXOPWsK2ucrmr0VxzzVpmbiaPljHamvGVHuaZHMOFz7mphKrkkjgUySAxiNcdzTQuV3EdalJEh47nipHQhQoGe1KwXKmWi+Ycg9qsxXXyU3y8sfReKa8BPzDt0pBdMuJccAGnP8AMvyk1lmUxnDZqWO6465zTUg5eo5o2LkpwR39K5nxDalrWRLbIuMH991Kn2966uR8xhVOPXFUZbcMDkcVV7agtdzwaDTJhdSCfO9WJZm/mfet3TNYl8P38dzYjdIOJIyeJF75/pVnxefI1r7PboASoJPZef1NZcEAgUu55PU+tda9+JzPSR1mvaLaX9uPEmlD/R5hmeLvC3fjsK4+6vcYji71paN4tl0LVMiPz9Pm+S6g7bT/ABfWrfiLwxDYumqaawm0m7+eNwc+XnnaaIvldmS1fVHMxQM53Hlj1NTs6wrhT9abNMsS7U6dvesu6vFQZJ57Ctn3IQ6+uVMZy2CDleeQR3pdc8W3HibRrGzvIg17ZkqLru6ehrCd3upCcnb3NTrELWFLh4iYN4DH1rgxFdJ2jud2Hw7nrLY0NA0GbVJvKtgrOOSu7lvpXoOk2CafEpKhSB0I5B+lcNe6R4m8P6qt3okL3NudskE0a5Kg4IBH0NdbZ+KrbULHekZuNRU4ljY7SWB+bjsa5fYuXvPc6ZVEvdjsdGyecgbfjjjPuO1Zs8zA4bKhWH4c9fpxUrymK4kiU5VAfL3dCpzg1nXkjJE8rsABH09sVlrexKRTS6ltNImmBZVlmfGeQckj9axEmk1My26ELgHeQMcZ6UXl1PcabDp0X+sYAgDt6mtGxt47NUW2x5gX5iw5J75/WqsBTvZfs8MccJwmBx2JqhpeitcXH2iZDI7NkA85FX/KE88kZAKIM7qtnxDFpAiW3RWPRs9jTT7EvQ6eOyuRFH5qeTAByMcgVZSawt1DJukbIArDsPG99dzFZI4miHGGFWr3Woo4hJHDGG6/WkI3La8lkwzERqOmfSm3OtRWz7Q2/cMA+hrhL7xOzk+W+1vQHiqA1Ca7dTyV3ZIo1Cx6BH4pkeVUfqoydvtXRadqhnjzvyDkA+1ebabbs90zjPPPPpXa2cKQxKvQkcEHvSuNxR0RvHRh8x244/rWfqmiWGthLmWEJexHKzRjDYHr601brzFQOPlLYJ9DSrevFchM5GeCKZNrHP8Ai6VreLYx+Y4GfXjmuNkcOuD+FbPju+36jbpEwK8sV9D6VzqNlMjseRTm7sqmrIdLFuRhgZx0Nc5fW7RDKg/KcgeldO6s0WRyR3qjcW3npkjms07GjWhVsLhbq16/MBg0yWIEVF5Js5t6cZ6gd60FQTRB1GM9RV3IsYrxNG5I6j9auWt4VA9O4qzNaHGQKzpYiu5k4PcUXuOxfk4Kyx8o3X2qUyiRMHmsq3u/LBQ8oeue1W1Pdec9qBFpIyTgdP502WAr0PXp7UwyS7MYIIqCSS4IHDcUATx3jRAxyHcoNW1uIZAGJFZJidjkqfemvBJGcc7TQBrOIicoRirtmsbbSSB71yp8+N8Bj7U03tzFkgEjuKpESPRPt8Vpbk7gTjketdB4S1Wy1a1MUcqnLHyyT91geUP9K8Qv9XvGhYbivGM1B4d1K90ydpbeVsOcsuep9a09k2rojmtoe/eLLdmtwxX5hwPpXnFtZkamxPMTna1a1v4znv4EgvIC5YcOPWp7Cycbwy8Mcg0Qg73YpyurG3ZQwRRgFwMdPerqKtx+4jbPvWK6tGwRmPsa19IiME4kbkEV1RVjFmrYWc1qGAUZNOlklD5bj2qZr0Zwv6VUuXMrAhsGrsTe5ZW5cDp+lTG9kC5ycemayxJKBt6/SlW7IBV1/OiwGkl1Ptzj5T6095JGOARVJbl5VCDAWje0cmN3WgCfzJ1PJ4pGd2INQSCRRzkiqck0m7chPFAzRaSZjgAcVdhedY8sOKx4ZndeHwasLPdBcHlaBGxHcMckqOKb9rbONtYr3MwU9QabDPO2SOcUCNiS4ZThhUX2oMOcVkyyzSyck4HamSvJsC8ikUjWaXADAcVLBN5w+XFZBJMKhWOacqSQLkPj6GgNjaO9GwcDNKiuoJyMVjiS5dfnY0/MwXhyfamSahZgueKgWSXd8oGKrsrtFksRUCvIvAbFIC+0kynOQT6VBI9yxByvPaoQzqCSTTkG/Jyd3agZaSe7SHaQKrq0zNyRk1C000ZKsc0JKcgnNNAWHE6HG7rTlEpGSwqtLJI5AXOaYXmhOG5z6UxFwJPz8wxUTLKOppqXDHgZpxkYnDd6VgIiZlbmpN8gHOahk3Fu9OjLYOT0pgOaeQDg4NNW4mx1HNMkJ2k4pI1B65oAsxzTEVK1wWGGbFNDKse1RzWfJBIzEljQBomUBQFYZponkQ53DFUljdRjac0rRSMuefpQMuvdkDgj8azp7RL+QNJjcDxTGRi+CTUscTK4OaBGdf6a8LLuf5PWoUtgCAJBmtPXcm2Qc5zWKYJABtJ5pMZb+zyRnKy8fWlLz/8APQ/nVZIp84bNXEH7vBXmi4HAykllGep4re0dGe9iXsMVztjm7vC//LNeBXb6UkUBa4YAKoP5etds5WRilc1FTfqHI6Vuw42gYrldPvftFw85GN54HoO1b8d0F4zXjyd22eml7qRosahLY5JqA3II61Xe5GcZpBYuh8jJpN2ST+VUTP054p4l6UgsSu2SevNNVsMMHgUm7OTmod+Cc0DsWzICOabuBGciqby0qSduaLhYsMfSmhuuTULOR0OKUMSuM80AhzyYyage529OTT3UAdc4qJYAx570hjFLyvg96vRxIqEkHJ9aYsQU4HBqULk9elNBcNgBxinBv0ozjr1pyqu3jrQA+Mb2z2FWgcfhVNcp3qQSMB9aaAnJyalCAKKqI+TmphKc9eKYmLJGMEcVTa2DseKvblPU0uxe1IV7GVJZZB4qk+nfNxnNdH5ORnrTfIBySKVioyZgYlhXHarMN3jG44+tX5bYN2qrNZZzgUWC9yxHd5B2nLN71be4AiEad6w0hkV8qeBU4ldOWppicTYhkAbJPTpV+OcbSTzgZrm0usnG7vWhHcBiFzwDk1SZMo6GyI8IAD7n605lG2qsFxu5J681ZyH6cUzJplO4hD5461nmJ45d38ArYdeDmqrrkYxUW1Liynb3LPLk8fWr0rAQkjjjk1WNuAxI4qC5JktJLQTCK4mBWF26FsdKu5TtueW65cxTa5c3JbKg7Vz7Vgz3j3MmyM/L69qXUoLuK/ltLlGjmjba6tToIFjXLDArtgkkkcctXcfbwADc3TvXReGfE1vpkx0bUx5mj3Z2EH/lkx7+wrmprjnAP4elY1/dqEKg7ieDmnJJoS0N/wAZ6XJ4X1Zrdn8y3mXzLaXsyf4iuQxJcvkkhf51elvr/VLK1t72ZpYrXiHeckA9qSMKGC49uK4K2IfwR3O2hhub357FjTtPN1JtQcKM49a2tT0aa80Y21ttSYurLnp8pzg03RtkBkznIGQR161qRTeZcMc7tnIPQj2rmdN05Jy3OiVRTXLHYo+F/G17JrS6FfNEJEX7OXX7o2kkHP5Cn3nhNJdbub8XjJLM6yKUGA2eT/SsCx8OXcGusxCGPeWEr8k85/rxXbOxXj5lIGFJ54HrWtSot47mEYtGlPOTNEp/1XERJ7joKyfEIjtdMkldyV3BAPqef0zUzytFszksjKw9+axPFl095d6fYj7uDNKvbGcCsVdu5bM21vCrGYjErDAz2UdKumaa4nWbhWbuD2pLfTjNNlQCMHk9hUd7fWunHyFILYwXHY1W7Fewl3qEVhG8QbI/ib1rBiibUr3y4mJiJHzHt+NVjJcazftFEBt6EjoBXQI1tpFn9ni4kX7zetVaxO5cuglrbIkQDEDBxx9azbm/kZAA+cdAe1Zk9/O03ySFkI5oWOWQh8H2pW0HcswQmVznqa6zQ9ElnkSUptjUdT3qHQtD811mnG1QMgHua6n7fFGjQxrs2jHHWpbGWCLO3jdYwAezYpkN4XlUg8EZx6Gs63lMznecZBBqxa27kJt7Eg+9SxGu10yNhlBBG7HrUM9xt3TI5GMlSe/p/hVyOyM4Tg5BxzVLxJavp+kb9uByBz0qkrhc8y1y/kudYefJ2+lSW8omj3qee4qndgM7Z796qW1w8MhXoD0NU1oNaHTxPtAB6GhkxkAfjVa0uFmXa33jV3OFwee1Y21NChcwCSHI5qtZzi1uPJlz5Un3SexrSOQGBHy1nXUQZCuPdT6U0wZozomwMOh6j0rKuYsNuXoaLK+3DyZm+cdCe9T3IGQ69D1FWiGY9xa7x5sXDD7w9Peo7e7aI7XGea1MBG3Lyn8xVW7s0WVSvMb8g07CL8N5byKMkZParkckDpjjPaub+yMj4B4PSp4lmBGGOfWk0FzoIoUkPGOe1WF01JFIIxis6znKgP0PRh71qm6AIYE4qSkZ91pqoMkA464qn9gSQEkCtOW4Z8qf/wBdRxsqZ5BB5BqkJpHHazai3Vl7dqqaQinKngE9a1vEDqysBVPRIPNYREfe6GuqD905Zr3jtvD9iZDiRcqACD/Kuwt41t1wx4pvhjT8adggGQAZyKfdQsSQrfKOhqoPmJkrEd6sMjLhst14rXsji3UEdBWLDbMJB/G3at+0tZkh+c9e1akgImOSKesWcZ4qxFGQcFsVM0I253CqJKgRVYkckUyZQVzirkcUTAgsN1OEBxtJGPWi4FBVOz5adtXA/vCrDQLFxvBpkcPmv97FAAs5A2lahdVOSBVl1XO0Ecd6b5e5TyBQBXXaowF5qdmMMQJPWmyw7CCrA+tPWNJRl2zjtSGN3oUJIpLVwpOOhqVo1I2rxTHgwhCthqYrEE6kPlT1qGRmYdq0IbTdHmRwM0j2ShciQUDK8MabQZTjFWt6OAF6D2qrJAwI+fNPKNx8wFITLBYEbQaTaY5AarlSCCGqYvwuWyadwsSlQfmLfhQoiIPFRhhimjgkhqQWZYCoRginbB2HSqpds9aGunX7poETSKpOCKPKUDIGKrLJJI2S+Kf5jYwWp3GThdrZyDmleENz3qvuLLw2MULclQQWFMTJBCQaf9m6MTUAuz6inG7J/ioEPaJeueaRYhmo/MJ53U7zWBGP5UDJzEp6gcUqWyZyeKiW4G4BjVkSpt60EiGFQeKY0OGBA4pxmVep4pPtCHgmgBPK3c4FN8vB6UpmGeDxS+cOvFA9Su1rvbIPNPjtVQZdhmlyCxIb9ahdST96gZX10KLZDnIBrPjBdAwxirOqI7Wu0c4qpbx5j+/g+lAyz5e7AHU1MsQh4PJNVFeVGxnj1qzuG4Fm570CPN9NQLNHBEpyflHvWjfaiWkNnCcDG0/T/wCv/LFUYZ4tK0m41O4OGIKRgnGfX8+n41gWGotJMZXb53OTW1d3VkFJLmuzvtOl8tF5wAK1Y7onBzXLWV+rbR7Vu2zo6E5xXnOm0dyqI0DdMT1pFmyeTVcYPTmjoc1kzRWLyy5xzUyye9UA4Hen+bigLGmH+XNMd81SFwPWlE/Oe1O4iV24zSLJweaYZAw603HGe1AFhZPXmpUcbhVMNx705HPFAF4kE+1Sptxmqavjr1qVZO/5UASsOSR26UCTGAaaG7UwncaAsWVKkH3p+dq8VTGQeO9TqxOM9uKoVh/zetL8xXrTtwwOOakBXbk8CkBW3sucim/actjNNuG81yF6VUaNgcCgZoC5wc54qxHchiOaxNsoOc1KszRnn6UXE1c6FJsKMVYVwwA71gRXYPBPNXorjJ61VyeWxp+WrAkVVuEwAg+81OjuM/So0uUkaWc/cTKr7460CSIHARgi9elRXKHdjHQc1at9spMhPXmpkgBUyHud3+FJoq9jBkt3RSQcGkhu2jAV847mteWLeMD+I1QuLTcDjgdhSsVzJl23vARnd1q/FdVy2yWA5GcCrFvfHI3cfWmmS4XOsE4YBetAQMc59zWJDd5Bfd9KvwXXycnrT5iOWxNL8oNY2o2/2sKCSCvK47H1rXaVXGCab5Hy7j36VSDY5XW9GTxHZmQIq6zap6f69B/WvLLqdkd42BV0OGBHQ+le33NqQyzxEpLHyrD1ryr4ky2FxcxahYsqXrt5d1bqOd3ZvxrenPl3MKkOqOOur7b8icn1qO1snkbzp84PIFXtO0dtv2m4U57A9KdPKJHKR9B1NceKxWvLE7cLhL+/PYrSsqDCgVDAsjyjGCKa77nK8fWr9qDsO0g89q0wtDkXNLcWJr8z5I7I0NOKi5EcjYG35m9K6i3S3cFSUGBtyO/vXIPGYIVlywErhCRziuhsNHuknl37YwsYaNpHAD8dM1OJu5mdOyRbZ0WQpEAxQ8g8VBLc4GJBwpG05/Org06MmAm8t1JB8xd+cH29afPpytGkQurWWfd8sanGR7Z71zWNLoqxlfMIwGHGM+ma4i8vDP4lvZZGIEZEI9gP/rk11jBoImPGQTkE15sl2S9zMx5klY/rV043Jkzqpde2W7KHwOO351z7iTXNRCwfLEvDye1UIxcancrbxHCfxMegFbsTx2cP2a3OAPvHuTWlkiL3JN0Omwtb2pG7u46k1TmujONrA7hwDUc8jH5gc46ip7S2MjfL3GR70mBHaQPK3CgkngCuy0vRmtFWW5X5j0XtT9B0VLNRLKvzseMjpXVQ2SXUimZwAOM56VEncvRGU0shHyKVXtioWSa6w6ryeCRXYLotpFIJJJ1IHBB6095NPsQSkSke386mwcxh2GmMsamX5R3J711Nhp9uISYDuY9QfWuevdUjRwu4bGHHpWUniY2cxVJsAHBGaaSQtWdhPeSWkxiZGGO+K5zxjqTf2YqsSyMecnrTJPGe3iV1bI+Unv7VkeIfENrq+kuqQhZ1IOR096aCxyMxVskHPvVIqB8y/jViJdwZc4PUCqzoVlYZIqwLcFyuDkYcfrW7bXCXEIYEZ6EVyoySSD8y9R61b0+5KTFM4DDj2NQ4lpnRrg5U/nUMkPHPI9aox3xikZH5GetTRXnz4z8tZ8pVzPu7Fs7o+GHK0ltOblCpYrMnVT3rWcIxHOQ3INY2o2zQTfaIchxVRethSRL19ee1QGVgpiP3c5Ge1Lb3AvFZ0OJB99e9JIu4nPpxnvWhnsKjgrjvSpdASYZR6GoRBvbKmla2kU5K59xRYaZeEu0kr0I60qXbZ2ZyPrUKQsVwD19aYEaKTleAahlottPuAGSM9PaplRwjEg7etRpbggPV8yqbQHuooE0cfrvDYHIJrX8IWPn3C8ZJ5FYesSeZdhR0J4r0n4f6eEaGUjleldG0Dne512nk2yqyjqMMPSomsnaTIGATXQX1hGLgypgKwyR71DGm5McADpWtGNkRUd2Vraxit1Dfef3FWSrFstmp1gOMmn9Dg1rYzuV8LjpUMxYngfWrZUE8VE0RAzmhhcjRYQo5IaiVSFB8w4PbNTxxpsJPWm4Ujpk0gIxGAnQmpYZUPVcEelSwgFTntTgEAJGM0wuQmMOSwyKRIVJOakfKjP6ULggk55p2FcgKovanxeWg6ZJp6lcYC596CmeaQ7jZNrcjiqhLM5xU2CSRnNPEYHPSgCMJI6YOcCo9hHy5OKtM+ExxUZQEZHWgCBygAAzmmMGPJJq7FEhB3daaIV8whjxQFym0RKghufSpGjGAQDkVcjjCHkcU94ww+Uc+1FguZbMw4pV3Edane3JcU9bY/wAR4pWHzEcELSkndwKclo0sxUDj1qcIIhhe9WklEcfGM00iblZNO/eYJOKdJpwHSrSzKSCCM0r3JwRjJphczRpzkna2BTTpjlCVb61rJ88OSMGmcY4yCKBGQunPjrmlGnEjOTkVsK+FIxzUYbIPGKAuUFsyE+lRSRsgwM5rWVvlxikZRn7vWiwGF8+8Dac0+RpOAARiteSBWIYKAaasIYkEUWAzl3Mo3LSmBs5ANapt1XAxSpGC2MUAZQUgZOajO4+uK3jbIT0/So5LeMIcjGfSmMx06UHJPORWn9kRUJUUw2oZOcUCKDplcHkVXazjflRtrXW2VRzTREi9aAMIxsjYZTj1qTyQelacsa4OFqhLBIBujPPpQM8N8aaotxdw6ZbtmC1Hzkd2/wA/zrEtp5ITnP4VXj3yyNLI253bczHuTU+ATWjd9QSN6w1UoV3E11EOuoAkauOnNeeiQx806K8kjfcD1qWkxp2Z6zbapGygFqt/bFHU5rzKy1eRRktxWvDrRc4bNc06Z005naG7Qn71DXYH8Qrm4Zp5yCAQK1re2bG5zmuOclFnZCm5F0Xmc808XnGOahWAZwOKeYiOn8qydZGv1cnF0D61ainDfSszBGM1ZiJwCe1VGqmRLDtGhvFAfoKptLg8UJcAHmtVIwcWjRDZxUivz14rOS456ip0nB71Vxl/fk0m7AxVQTc9aVpR2NArFtG+f6VaR8AD8TWUk2CKlW4J5zQFjU3ZbORSSuCNoxk1nCYgdetSxSbTknk07hYsiIKucc0vknpimpNkjnIqdJVPOaETYheEAdKryRZXpitAkOQKa8QJCjvTaFcyHQxgmpYp2j4NTzRBpSOyD9apzZUe5NItalxrwrFgH5jwKfPJ+4itVPux9hWGZz5454X+dO+2FXZ2PsKXMUoHQwzAYjB61qLKCoVe/wDKuTtL0k7q2YLgYG489aakTKJshFYZ6DoPaoJYCOMVHFcjrkEVaSVWHOM1RiZs9uG7cCs2S1HNdFKileMc1Re3BP60mXGVjCeSSF9o+6KuQ342gE4NPnthzx1rPltyGwByPSpsaqzNiC4aSYKD7mtiGUSYHYVyltM1suT94+tatjd5x81XEynHsa12oSA+prxKXS01HxLe35BKvIQvpgcV6x4h1Ax6OwQ4llzGp/ma5Sxs0iRcgADsBUVJO9kOnFfFLoc7r8IstJ+TCtXJ2cqwPmRQ27jn1re8Y3hkvxbA/KnJFc4jK67HHOcg151WVp3R6+Hhenr1E1SxeFPtNurG3Y/OD1jPp9KTS3DMSG59PWup0uYT2bxOoZwOM/xD0rOuPDRdjcaQQrZy1sx4z7V34fHKyjUODEYJptwHmTOnTszmNEwzn0Gearx+LNMgQCG0m1CQchj0FEHmSW1za3MbI7qyMjcZyDVvRtMtI4gfLABXJwM/hW+I5XZrU44J6oqSeONVVfLtdDiVS2QWUnAxTrTV/FWsSxxRWVmxeRYiMfMh65z26V1BltLO3ZpFRlA4yOoqLwMq3V9q+oImyNMCPHTPPI/lXMrdi3oR+LFSHUbqaNHRZY0uMHplgc/qDXkUUUs8iQQfM0h7V7T8RQI5khBJlhsgkn+/y2f1rzDw/EsMAncfvJBj6Cri+W5D1sWkhTS7LyIxl/429TWVIZHlGAQc8VszossnByD19jTbbT2nnCgAYP3qafUbRXsrWWebaqZY9q7TT9KjsoIprjgsc4/u1Ti+yaUg/ilPeq93rSPhTLjngVLd2NHSm6Lws6PlAccdqpNrDQSBg5ZB94Z5U1zi6yiLIoPDDse/rWZd600soWNNzsMYHrSUWDaO2ufEkjxq0Vx8uOQeoI7VmTeJXdsGQ56ELWNp+jXd3J5tyxgiI5HrXW6M+laeGRbZJJc8tjOffNJqw0Y0NxrV5cuLWynkVhkErgfrU/8AwiWu3rsZFW3HUc5NdxHfOqHygqFeQAvaqr6pPNcozOducNjsfT6Ur9hs5o+BXaPZdaq6MBnjGKq3nhCfRrf7fa6iL22xh0bAZR/Wu28SaVLNopu7bJIXBK+lcRpNxcrot3Bd5JbOAfWnG4jJdlC705x29qZOFlgEinkd6mCcZwMHjFNjjMaPG44PQ1YK5RMLgK6mnqCkiSdGU/MvrUrKVjwOo/lUZLvEXAO6MfMPUUAWLzKurKcgjg+1CSEoCe3r3pGxPZLKnIA59qZEC0Y2nINKwF+3uMnyieO2afM2flf6Gs5hsdSD8w5BrQhlSePBI9qhxKTMie1ltLvzoMqeoIq/BNHepgDbKOq1cmt8xgZ7ZFZNxaujiaLcrrzkdqakDRpxQbZBxyeua0oIkY9Mqf0rN03U4LnEF2BHN/e/vVuxxiN/Y96TBIr3GnDZlBgiqpT5MuuccH/GugK74RgjcO1UpwgXO3GeCPeoLM+LaEZPy9qp3JaKJjnI9KuyRMq7wDjvWZqE4WBsHt0qo6kTOeCfa9UUDkbuK9g8PIum2kLdOOa838LWAuNRWZh8oO7H8q9VTTpLy1CRSbXA5HqK2qN2sjCOruzq0b7ZapIvIxTvs/y8Kaj0eKaxsvJbnHc1oRvk4wDXVSTUEmYVGubQr4ZV6VE8Z+9g1cd1JOccVGZMAritCCvEjMpOKYwfdjZxVxJ0RSDVUTFpjtPFJjGiFih2io1gfdjGKsGVg2MZp6szn5uKEBEsTxnDdKB97AHFWpXIjxt59aZFGSd2BQIZKFAGAaPl8o5GKSYuGxim7yRlhxQBCRsYEA4pquSWBBqVn+bpilTBJBFDGRKpQ7sVLgPyRTzG2zPUUxclc44pAV2GWxjgdKNjYyPyNWQevyilXa3JFAyNAduQn6UOJGH3CPepQ5jb5QKZcTOF+vYUxFYu56npT1n2rwvPepYIiRz3qUwYyNtAFaF/MfJHSrM2PLGBSRAqSNvP0qZ0JUdOD0piGNGpt845xVdhiPBrRDLIm0gD1qpOqqpXFAFWBl5JyanByAcUJCFUHB5qc8AYFJMYwTmMgdc1J0QuTj2phUM2FHze9MLbNySdT0piG+a3Wp4yD1qKNAeTTmXawxwDQBKSuOMVGzE9qjcgMFBqMMfNxzigCzvbdgjinxsuSagkcgjkU0HigCy0gYmljI61VyQDx2p8Lnb70AW9+elOGGXkVX3lT9aXeRmgBXOBioi5zjtTDKWJHWpcgKBQBEWZm4pcqB8w5p7YAyMA1GG4ORk0ARPMg7UxMZ3Y61KqIWywqVYs8AcUAfKAbatSK2Bk0kEJkb0Hc1JIkSKSSau5Q3Jce1P2ADJquJlUU0zlz6+1S5DLaHLgLknPQV6Lo/h0xaVHNMg82Y8A9lHX9TXIeFNObUNchRlyiYJr1y+kVZhEBgRKFwK5MTVcY6HZhIc89TNhso4uo/KrSqAOAMU0vk+1IXwf6V5bbe57NkSZA7c0E4GcVGXwO2aZuJGSaSTGS4yORxQRtGF6UwHjAzSFucUWExST1qFycVMT8vJ59KhZSelaKbRlKmmIjkHvUnnso61GUK9Ka4JrVTMnSLMd2eSalF3ms/BFPDY7VfOZuiXftYXg9acL0GqG7PWmlvSjnF7I1heCnC8z3xWSH6U7zcA0c4eyNj7djHPSp0vfQ9ax7O3mvXdlYRwxDdLO/wB2Me/+FWHEd3pP9oaVIZ4bdik8ZHzr6N9DWkbtXM5csXZm3DdAKCTU6XYAL/lXMC4kVA0pCA9ieasQ3wcqAw607icbnQ7gUwTknlqoXAyGYD2FQG7BwoPJpfN3YHpRcFGxTaIglsdP51E8DEYJ5rUEascHoOTTGiBpWDmKEZ8nBNX4bs456mq0kG98DpTShTp0pbD3Rsx3BC/K3SrcF7/ePWsFJWGBzzVlHJOQelVclxOiW53c1MrArzXNx3xQ7G65/OtGO8BXimmTyl2WMYJxUP2YLGGI+Zv5U6GXz5VQHjqfpVxsSScDgcCriRJtGa9ikgyRWZd3Mek3SLIwVHGc+ldQYwF6V5f42gvNZv7mKxfK2S7XjB5c9SB70p7aDg7uzNy+vRfyxsDmJB8uP51DLdLGoA615voniKfSHFtOzS2hPGeSn/1q7NbiO5iWaMhkbkMK5HLqdPs7Oxx3iB3bW5yeelUFPzDgYrf8RWLMVvIxkAYcf1rAUd84NcNR66nrUGuVF2KZoBujYjvxVmPUJfvbyG9QazRkDmhZOcHp7VjY6LJnYWev6ZeQi212zLkcLdQDEi/Xsa1rHw7aTW4Ph/V7e6ySfIuG8uTntzXn38Oc5qeM4XKsQe2Dg1vDFyiuWSujkq4GFR3i7M2df0rWIbyOyksZ4jIdqs6/L/30OK7nwloMWj2trZDJDsGcn82z7cfrXC6f4v1zTRsjvnkhH/LKfDr+tdnp/iqS/wBElupYY4rmVfKQR9EQ55x2JxXdRrU6mx5WJwlSirvVHJ+Jb1tRa8uJPmaVmIJ9OwrhtHHmhGPCgbR9a6zxLMsE6oOFKnp9BXJaC6/ZQcDDufwrVXabOfaxqpaqzh2GAcZI7Gm3l/HZxhIMZ6tUN/elFZAwU965a8vW3Mp5OaqELilIvaprO9vkbPHI96w5bq6nfcWIFQby8mEG5z0FdJpmjeVGLi7wc/welbWUEZXcijpmi6nqEgdWKRZ5Y11cFjZaWqgYklPVj61GNSWzTykA8sjHFU186/mVYcuc849KxbbNIq2xsT6o0yhEOGIwFFbOjWSWlo13eMQW+XHpWfa2ltpkImm+a4PqKrahrW/7j4LY+T3qS7nRpriBcIQduQD7ViNrMsshNuGZ+jKtVdOsZr2QvOxhjznFbJvNO0hTFDErnru9amwHSeG9WvVjRbnHlyfIY271l+K4Le3ux9mwgkGWA/nWPoWpf2v4ut7ZZ2AX5kHQFgOBU3ieU3Gsz7ciOL5PyqlGyuRe7MVM5KnkGp2RXG1hg46mqIdlnIB6HrV2QkxB+4psszZopbd8EZXrT7dlVyeo7j1FWmbcMHoeOapeUY3BwQM4P0oAtWsfleaq8xk7l/wNV1+WQlDgE5x6VZsy0VwDkFW4plzB5UhlQfIeo9KSAXyTcqdpG5eR9KBbukJcZypwR6UsZaOVXj/EVK9zyUfjfxmkyhIZmaDaxyV5BqZLlZF2OMP796qAMj4xkH9atJCrplhgZxu9KllIoXlgTlkU5HPFWdK1eSCRba7OVP3HP8q0mU8ZPzY5HrjvWbeWayx5VcEHOPSi/QTR1kLq8YKvjI6mobmJiAfzrAsr2SCMQyk7f4WrXiuWmTGd2OD7VLQ0yORjHEQRkd65bVZA0oVeA1dXORsZj1A5rmILR9R1pIkGU35+g71dJamdVnYeENL8q3jZ15f5iMflXounxeWd/AIHFY+nWQigj2g+3sK27eUfOeOFz/jV3uyEtC+kzMmRTUlKyZY1hLrEaZw/Gad/bULH7wrvOQ3ZZYyflPJFEM4VhuGV9awH1SINlXobWYV6MKBXOkkFvKrYyCaz4Q3mEA57Csv+2k2/eFQPrmz/AFZxmgDfDbJAZSBUstwijCkVyM2uM/3s57U2LVl3ZZj75pDOv+171A7ipY5yoDY471zX9qwBMq2TQNeCqRQI6J5w8/tTy0ZzmuYGux5B9KedcWU5WmBvGZBxjmpGMLQ8cNXNnWACKeutLtOBzQB0EW7yiN1RyuUTafzFYP8Ab+088U5tZSaMHPSlYDdt5Mo26nRTpkqa50aztG0HIpqa5HG3JpWGdHwxJzgUjAMvBrnZNdjOQGwaWLW0243nmmI6GA7VOX+lPExHfNc+upw5/wBacmg6pGrffzQBvrdfMQBzSGVwclutYP8AakWch8Gn/wBqQMmC/IpgbDXJjPWpDch1HNYEmpQEA76cNVgbH7wCgDoFulePoAwqFpyDgnmsP+04gflk4pf7UgZ97SjNFgNWG8AmIbOameVZJd2KwzqNtu3Bxmpf7WgYcMM0AbfmAL0qNZvNOM4xWV/bEOODzUUerwROx3ZJoA2JXCsCenrSCRRzWVJrEDDDnAqJtWgK/KeKYGw0pD88inLcjpisJtXhwPmpE1aJ2yr0Bc3WnGD2pwnAAIPNYf8AaUJ+84z9aU6nAmPmpBc25J+ASacs6svBrCfV7dgAH5pDqsK9GpgbHmbXODVhZgRXPLq0XJJz7U9dYjHrQFzaaYHoOaaj5B5rH/tVAM9aX+1Y/vA4oA1VfDc1MLpouvINYY1RGOSal/tKI8GkB85LcAJsUE+uKqXMrPJtAIxWg0K2sOernp9aqxW5ZsnqeSazTuaWsQRQl2yc1oWtiXfcwIAqxBajGSOK6XRNJN1cRxENg/M+B0UU2SdL4I0pdOsJNTlTnbvAPXn7o/rV8uzMXc8scmrupbbWGDTkwDGA8oHZiOF/AVnk57dK86vLmkezg6fJT5nux4OWGKXdg881HnsOKdwBzgmuex2XHHGcnvSFqQkE0gyfpRYBcg9OKdnApOF+tNGW7/hRYLi5yc0o9e1A4FIaYrj85NBA79aZnPagn3oAUqMZxTNoJ9BS5yfWlBOKEJjSuO9IE5p3BPIpCwXnjFUhAU29+far+m6O1/G91PMLawi5knf+Q96ktrC2tbA6trkv2awXlEJw8x9B7UmpSwfEbwgT4fke3uLB8SWG7AZfXFdNGg27y2OHEYtR92G5zHiHxR/as40jSImi0yNsJGn3p2/vNVnSb3/hFHF55okuXGJIQfl2/wB0+v1rMt4odJjaK0xLeMMPIRwv/wBao0hDlnZlOOZZpOij/CvRcI20PM9pLqdTr9itxaw69pbmTTrnqo5MD9wfaufg1EqRzknpT/DnjaDTdYGli1Nzol3mO4BGWJP8YHYCte98LReHL5riCXzrGf57aY8/Kf4R71g6WpvCtZWCBZy26ZxGoXcxPYVctr+GWfajHZ0UkVx+q65HNcLbxygpGTlV+7n69zTrO8Mh4PFZyptbG8Kie56AZDC2x/lOAc+tSiRWrE0nVbbVoRpU0wS6X/j2mY8E/wB0+1EdzJazvDdK0cqHaynqDWdrDTRssBjnqagkb+GoEv1fqwp4cP8AMTkUjS2hPGoILD6AU5lMade1NjcAg9hUl5cQwWks8rhVjUls9qpIiTsc7qmqra3UcWfmAz1qe114DgtnPGM15TqXiSS81Se6c4Vmwg9FHSrelapLcSjDcetE48qux0pqeiPbtP1FREXB5bitS3vhjk151YakPKVN3Stq11I7uT9az9vFLc1lh5PWx2lzqkdrp89y3/LNflB7t2Fedx3D2d4l4clJm/en3PX/ABq1qmp/awlsh/dqdze5qsirNC8Dn5HGPoexrknj0qqtsawwX7t33Mnxh4diW0OrWaAhW/foB2bo1c1pWsTaRKAcy2Uh5H92vRNBuUntZbC9GVAMUg9UPf8AA81wOraa2iaxcWMg3Rbjx6iumukrTWzM6Mm26b3R1olhuLZZY2EkMg/T0rnb3SjbsZIQXiPbutZ9ley6JJuUtLYyH5l67a6lJo5okmt3Do4zxzkVxVI3OmnJwOVAJUgjOKaQF7fpXQS6XDMxeP5G7gdDVOXTZEfGMjuK5mnE7I1EzNU4GRzT1c54HOKnmhW365VvQ1XdREnmMfoKhO/Q1c1a42RmmdYRwz8HjOK7u1hhh0qO3iU/uuXye+K5XS7PGbpmJd1444FblpPIbeU5+VeWr06FPkjqeJi63tZeSOa8SzCWUHJ3eVkgepzXLWtybWzjVew5rS1G4ea+mcA7en6Vz8bboRk12QWhwvcdeX7SEkmsti0rY6k9qldTI3AJArW0yzSArcz43DoprVWiiHdss6PpcdrH9pmAaXqAe1XLq9DPgjHHTNUrq+wxAPFUJJy7gA/Ss7Nu7L0Ssi3O2912jrxXb+H7Cew00Sxxb5XyenSuX0XT5Lh/OkH7teQa6uDxLJpquFUHHH1qJu+iKj5mPfQajPdENGVJPU9Knj022sAHupBJIfm/z6VW1DxfNcAjYozkZHWubn1SSZsu5PbPeiMWxOSR0F/rTbmiUgJ0GO9c/LfyyAksdw4qi0zMeTWho2i3Ws3QSFW8sH539q05VFXZPNfY7f4Y6St888soxJLkQv0Icfdx+IqvqNxcPqNwrD52Y7s8c55rqxbDQtOtktcqyYOemCOhrJ8WwRrdQ61bj/Rr5fMyP4JP41/P+dTuPZnMyIY3yw5IzVuJhLbMynOOoqKULct16jIxTLcGKUr2PWpZaHF8hTjj1qR2zIMDKsOakjEZby2+63f0qHy5rWQ7lymcg0DIjlJcoeDyAe1aUaieLI78MPSqcojkdZIuh6+xq/aKCwKfePBHrUsZVlgMLY24x0OOtR8XClGB3DkGukaCO8tQQAHHT8KyZ7URssqdOh9jUFWIYlOxc4ODjNTW0iRTyRFd0bDgelOjgwDwQDww/kapFJI5yG7dD60DL0hAA5yPXuDTC2Thh9CKaP3jAoOvUetSpbk4K5I6HPagRVmiDIQo687aXTWkhmOOVPY1fS3V8YGGFTLbrDIScAH09adwKmqThYGYcBhjHvV7wVpnyvdSDLSHCn0FZV4PtV4luAdoOWNehaVarBpu2McsMj6VcdEYz1ZftZeWAPyg4/GtCziVopGbkEEisdJPIjcjp6etdNY2nnaOlzypL9PUdP6UQV5IJO0TDls7cocQjNRppcDJyuDW4bBNpO/n0pv2BVXczmu85TIi02FThkyKdJo1jI+4oRW3DYCSMlGqM2bLuVmAIpBoZR0azhAdRkelJNawAACFavyW7MuC3Sh7NzEGzxQBSgggDgNEuPerhsNPnHMa1D9mRTnzMn0p6mL7uTzxTsBDNp1vGy+WikVM+jW8qqSoqdbJSoPmH1FIzbBt3nigDOuNNt4hhVFTWem27ggJirbWqOu4sTmpYrdYoyVfBNICobC2V9m0E07+zYNp/dqDUhtj5u4ueadsV3KtIdw7A0BoVI9Ot5WI2LkVONJtCuCgzTkto1YjzCCfelFvtb/XH8TQBnPp9vBIdy8HpTJNOtni8yNAT6VdntfNcbpMj1py2KwtgS/KaLgZM+l2uwEoA+KfaWdr5GTGK0ZLTL5L5FRLbfIVV8Ci4ECaXbvKGCjb3q9DpNqd37sUsVlmPHmHPrUqxNCADIaLhYr/ANlWasQEGc01dNtg/wA0Qx9asvb8b/M5pix7t37wmmFivJp9nuBEQAqRtNsuMIOala2Esf38AUhgEagknFICSHSbA8GMGqN9p9jGdqxDI9K0LdDyRVaeBncnPJqhJGUmn23nZKHFXItOsGbASr32EpBuJz7U2CyAO4nGaVwIzptmv/LMVX/s2zL8pzWnNAf4SelQw2TsSxfFMChLYWg2ho6nj0q0KcJVibTy2My1PHZPGOJM0CMn+z7QuyNHwKjWxtBJsWPANan9nl2LeYeab/ZoVlYuc0MZQ/sq0WTO3NSz6TaPFgLjirzaaQN3mGgWDsmRJQrgY6aHb9dtLJpUSjCpxWstnJ030ptSBgyUWAx4tNUfwDFWYtPjxzGKt/ZZM4V6GtblAMPmgCu2lxsMbQBUf9kwA9MmpzHdDOW4pqRStn5zQBXbTY92AvNKdNiKcrzVqOGUyEl+lPaCZud4xQB81nddS+cwwvRB/WrcFvxU0VvyAowOmK0be2J4A9hUDbEsbAzTAsPkTk16PoNkmladLqVzGAy4IU93/gT8OprI0DR2mnjTbuII4PRm7A+w6n6VqaxqMMs6WkEmba24U/32/ib8TWNaooLc6MNRdWduhUZ3mkeWRss5LMT3JpMkjiovOV++KkDpjg8ivO5k2e5ZocAQOMZ70DB7mkByDg496UDNNiF7UofHSkOOxoUZ70hjhluetOAwKVSoHWmsQRx/OgQhbPFNOR0okkjjXMj4ArNn1y1iDBWKsOgK5Y/h/jVRpyn8KJnUhBe8zSJx6CovPhztEoZvReT+lc5/a19cOyxxbyehcbsf8BHFVjDdSsRJMyeozsH5CuqGDf22cksb/IjpTqcIkKHKEdTKQg/Wqx123WUo8luF/vebkfoKzbbQ45su00e0DlgM/wA6it9Pa4vha2sTzyudqLGgyT9K1jQoXtcylia1r6GqNehaZYkeBixwpDnk/TFdOy2vhfS01fxDFmZ+bazByGPYsf6Vk3DaR8P4/MkEd/4iZfkQgFLb/wCvVjwprz+NdLu9C8UZkjmfNrekAbHPO3NX7CEXzJHPPF1JLluchqGp6v431UyTPtjXovSOFa1NI1T/AIRi/ik0ZcmNv9Ilf/lqO4P+FLq9hNo1zJpAhNrFAcMR1l989/rWdcTW2nWyzXeVU/6qBfvSe/sPeuh2ascp2PijTbG4s18T6a23Tbj57pUXLI/fj3rzq4u7rXJha2kflWqnIjzwP9pj610PgnxXfw6vPHewifQ7seVPBj5Ix22j1ra1vRbDwaxlQq1jLmS3c8gj3Pcj0qE7OzGzH0/S7TSLUyT4JZckk4L/AF/urWhofjHTtbafwnqzlLG5G21u1+Xy5Pb0FcJrGsz6pKw3MsBOdvdvc/4VWtrEy4lkO1F5DehFU1dCuaOqeGL/AEPWZtPu12iM5WQdJF7MD6GqtxqX2cfZ7clm7mu70/VIPiF4fk8PPMItcskzaTP/AMtlH8JNcLHpb2EjpeIUnjYqwbggjqKS10Y9ixY3E0e2ZyVdTuHsa7yDUh4w0xvLZBr1on3Bx9oQdv8Ae9K8xvL8L8kf0x6VFpV5fadqUWpWkpSaJsjnqPSplBdC1Ukdra6kzttYkFThs9q101NQo+b6VU1qODxDoz+JtIQLcRjOoWqdQf74H864P+3ZAxIYlR2rH2Z0xrp7npq6soAO79axfG/i60vvDUlnDOBeptVgo5ZO4NcDeeI7jyykR2seM1m2llLeS+ZITz1z3qWlBXkyruo+WCG21rLeSDsn866mws1t0CoMGls7QIoVRxWvDAEUeteVisW56LY9jCYNUleW5La70xg1r20jseSaoRKB1q9bDBJrzHUd9zucVYsj7+e9WFY8EVVViGz1FWUPc96wciGhss32C/hvOkTnbL/I/pj8qf4204X2kQalHgzQEQyN/eH8B/EcfhTL2H7RYSxjkgZX6itHwxKmsaPPpV0cs8ZhJP8AeHzIf6fjXuZfV9tSdKW55WLh7Oaqo83tZsboZBlG4ZTVi3nfw/OrNl9OlPUfwH1qHUbOXT7tw4JCttJ9atWs8UsbQTYeGQcg0mnF2exq2prmR0uUlVZYnDIw3KR3FNlPAPVvWubsZ5dBuBbXDs+nytiN+vln0PtXSuU2BgwwBkH1FZyjbYSdylfxRyWxmcgNGM59axbeyn1OXzCCsCfrV7VL2J18knC9zUZ1iK3tlihA2+lbUqNnzMxrYhtckTUt3SILEdoC9T2xWdJqhVZraIja5JZqzzcPNJw5Xd27UyTAYY6BTyK6bHEzM85GWUnjIOK59spbe+MVstERC7YwMGsS+YqkSDuQTj0reBlI0YRCLRCANw60yefBwvTFVRlR8p+U08LnrVW1Aruzs2M8Gr+nWUl5OqKDgEbj6UttCXnSONcljjHrXTlYdMsTDGoW4z85olIEiWe5jsIRbR42heT61zt1fAlk6g9/eo72+aRcM2eP1rNkl3HNTGI3KwPLljj1qLBZwByT6U5V3Phf4u1df4f8MtIUmkUnPNW5KJKTZU0LwpcajKGnUqnHFeoWmn22iWKxRIFPQkVVt5BYSJbxpnBx0/lTtRlkVPMYjGfuk9K53Js0SXQXWnJtAFOcis7TZIb6yn0K9dUjum320jdI5u2fZulT3l3HJChPcYPtWDcrgYLZU9cHpTi7MTV0ZF1DPpd69tMrJJC5BVu3qKv5jljWZRgjrWlcKnieJIZGA1mFdqO3Au0HQE/3wOPf61hW8xtZTazqUcErhhj8CKpoEyw6LIykfKx5B7VYZ2jTEoz71WlAK4Xgg9KnZhNand99Rz/jUlFVoxFKUJwH5XPSpbO4In287lPT1ppO6IRydB91vSqofZcKWyGHXFJ7DOuQEQ+bH07imyopQlh8rfeX0qpY6moUKx4xg+9WrmeN0UofYkfpWexdykG2pgDIU8+tR3So6h05XtU8ceXyMYI5BqGS3MJbaMoegp3GVYJGjf0A5HtWnFMkkhI43jkVRVAwEi8jv7UEFWypIoJua0bIuSeG9arS3JJaJuDjKmkjYSrtbr1FU5leWcRD72ccUwL2i2xmDTv2bOfau209tsAkOcDoPQVz+nIsNsLYDBb5VHqO9dTpmnzXA+z/AHY4/vN7VXWxmyaHTWv7oGMkQDBcjt7V1crRpp8dtHgAY4HYDtVKSW30WzK4AGCFX1OOCf8APaoLKV5bVZ3zulO4j0NbUopSMqkroGfDYGaJpXxsPepSqnnHNV5CpkCsDmuowJbaVolwTTJp2Yk55zQqgsDnAFPdEYcU7CIlk+YAg0CRlDIORUmFCg0wuinHegCoCVcnHWlYqf4cGpcLk1KqRuelMB0TjapxyKZMUJ+73qWOIkkDoKrSLtnC+9JjLAU7Bjp6VA0jGTAPAq0EAT0qEw+lIB288Gq4VjOz4q5HFx7UJEVY45osBTdyXAx+NOLswwVq7DCgzvHNJJCuDinYCh5LMQ2Tj0qyeIcFc4FRwviQqavMmV9qVgMkPmTk8elWEeIoQoomgXGcc03yESPcep7UDHxYjy7HKipmMNwgOcGq8UJKEbsg1Y8qMIAKBEMq7Y+GzTLUqFO4YzUjwoOVagL8uBSGLtCA/McHpULTlsxkDAqyyZATvVZoXSQfzNMSLUYIjAqvIjG6CkHbVmJx06mkdmZuF5FNASgbF2NzxVENJ9pGeFq2PMJDNUcjru4HNAizJFvj3J261S3kSbc4FaFtNhNpqrPbYkMg6GgBrtllANTRscYJqDywyDH3qkCFMY60AHmhXIApssjEDipFjy+SKUId5BH0oAYjP5RBzUYkkAIFWCMHoaQIDyOtMCusrnOeKU5YZzmpjCcdqgk3RcgUALGcNy1SGdCdpNUlb97nPXtTnjJbcKALBBLHB7VGse0kg1C/mjHWhVdXHPB5pXAe7BTgnBNOibjGaY8RZtxoUBTyRTA8Zg00tyAMn1rb07SHLqduW/hyOnua0dP07IGBlm9RW3cXNp4dsftE4DzEfuoj/Eff2rGU1FXZcISm7R3KWqXKeHdIFvEdt9dJhfWND1Y+7dPpXHqzepxRc3c+o3sl3dOWkkOWJ/QfSoyew6V85isQ607rY+owmGVCnbq9ycTMBwcAU9J3BGTVUvg+vtRv59/SuXmkup18qNFbvGNxOBTm1DJ4zWYzluBT414BNV7eaW4vZx7F8XLsM5xTxdN0xVMPz1oaZYkLv+Q6mpVSbe4nGKNKObgktjHJOarXWswRQkxyrntxkk+wrlbzxG0jNb28IkkY7QTyF/DvVeCOUTFZwfNxwC/869fC0+XWseXiK7k7UvvNpLrUNQZkjZ9p+8R1/E9qZBbxRzlGUSP7Hqfx61Db388cjwNEELDGFHB/Gq2qXljFc4ed5GVRxGc8+hPauz6278sF9xxOgrc03dnQWd+I0lRI0Rz8uF6is+SeWOaQ+SXjPBJ/xrAt77Ubp5Dp9tOygYDIM7fqxGK0fDfhHV/FdzKZLxbayg5uLmUllQdwOgz7VKdRyeoNxS0Whr+Hba5128Njp+HlHLc8IPVj2Fd3YWNtZaDrEHhXUIbvX7df9JmIy5GORHXnfiTxtY6Dat4Y8LwPa2i/Lc3ZGJbg+ufSofCdzL4WuYdfuJntpTxFbYy0wPXcOwrphTt717s5atRy921kQ2OkSXjPqOrSyJb7iWZj88p9B/jWpLctcLGiKYLeP/UwoMH2NbPiS603W7mDUdOcCWUYks88Rv8A3h/niuR1HXI9P3QWTrLddHuBysfsvqfeulSuc9rHpySR+MNGNo3kHxPp8O9Ec58xewPvXmFro1/quovJfebvDlWBHzEjsB2HarXhTTNRh1WHV4ppIbmP51JPUdy59PavQ/Ekw1DQp9f0eGOS5jGL+FDhlP8Ae9cHvU/Cx7nLXN5Y+HbIIu0ygbVCDofRff3pfC/ie38SQTeEvEYUW90f9Cn6mB+wya4CaWe+ufNlYySt+nsPStFLeGwiFxcHEowyKOuappNAXtR8NXHh3UJ7fUwFMR4PZx2I+tYt1eS3riGAbY+wFehWV1H8UPDb6bc/udf08Zt5M/69B/CfwrjjaLpYZJl2SoSGVuoPcURfRgyHT1fSZY7yKQpcxnIcHBrsNfaPx14bbX9IUDVLQYv4FHMi/wB8D19a86vb952MaZC+taPhXUr3w3qqajbOQOkidnX3FKS6oEZkEBcB26dasySrCpAIrrvGWl24sI/EWixg6bcn97Gn/LvIeo/3T2rz6RyxyTkGhPQGja8NeJrjw9rsV6rMbVjtnj6hlPByO9R+OE0u31wzaI2bK6USpH/zzY9VHtmudlnz8ick1oadpbMRLNnrkCsKlRQ95nRQoSqyUURWGmvOwllHHXBrpLa2AUBVwop8NuFAGMCr8cYAGBXi4nFObPo8NhI0l5joogo4xVpFzzTUTngfhU6gV5s53O1IkTpjpVqIYIHOKgUYNWEGKwkxMmHvU0Yzjniok+fAqygxis2zNk8YA46isnTLg6X4m8vdtjlO3I7HqD+orUBwBWH4ijaN47lOHXDA/TiuvA1vZ1kc9eCnBpjvFk67JGaNQ5mIY+h71w66gLefYwyh6e1dfr23UrWWTdtE0cN0G9D9x/1rj9S02KGfbvbH8LdjX0LjFtpnkxbgk0bkWoW13bGCYF1YY24qKK5vrOE2zktAD+7duoHoa5rFxbEPG2QvIZT0rXGti/iSKdFSUcFgeGpRpKOwTqSloXHLTH5uhGOajW2G3IB2juakSI+WJCwwOnvSLP5gdQvBHUUznbEUeYhKHn1pjM/ksp528ZqxCwUMoC4bj6VBMnllgW/GhElMHe2w/dIOcVh3cBku8YHAyMdq6GxiDykZ4CHnFPg0C8vdWDWcD3a7CGSFSzD8quMrMTRznlsq5x0phZl5Xk9wa9J8EeCNT1HxdZyXmmzW2nWzmSaS4iKhiAcKAepzivMtYt7jSdd1Cxcnfb3DxkH2atoq+pm5WdjpfDsQkha+dMGM4UetF/dCWVmkGSepq1APsulww4AKoC31PNZs6+b0OMVHUtGfNFHIflPWoPs3THIq20DFsKefSrFnbNLcpEB94gGnewrI0/C+hLK32u5X5B90HvXUXN6tmoMPC9KtC3SCxW2UcKoJxXPavI6R7TyCeDWbV3dl6HQw3Ek+moRzIec96bL80WZpDz2qraSFIVIOAIxketQzXqsrAHIPSk0BI/8AqioGQKoz4ZduO3FXImJtieSp71TnlxEyY5ByDTEZ7MyFZOevDDjFa6Xthr0X2bVv3N8nEV8oGW9A/r9azmVXhZT0Jzj0NUotoukSQDrjJqkxONzWvNNv9NIaWLzYe00fzKR/SopIjIiSwtzjj3Fa0GoXemJvgJdR9+Njww70ouNI1ViyxmzuGP8ADwu7+VJa7FXtuY2zfFwvTtVOVBlSeOeproDpVyr+ZbvHKnQrnawrGv4LmF2EltIEz125ApWC6YyPKxlge9XbW4GM7iQRgisVbgoWTPGMVMksiYdc+9JodzoUlaP5v4T0IqVJw7DOCOhrBjvXcEKDkc4NTrJJkOuRkVHKXc2xEhBKAK3cetUGLrKwIH41LaSPNGu87HB4J71M6MX4Qs3TgZzS2C5WgcgsCOnQ1e0u3E2p+cBkoOfc1PFpt1OnyWj59xiuh8P6IVgdrltpDbHC9Qex+lNJsUmkrlnQtJ+36oSgyiAYb09a666uLXR4AMAdVRT1b60uj2lppNo6oNgPzMWPOa5jXriS/uC/IIIH0I9K1XuIx+IjuLua+LCRiTJgj866iFRFZwLjGFrjtHBeeKF1PEnB713LlSRHjGBitKGvvEVtNEV2PcHiqsvL1YKndtBqKXhhXSYiR5I5qYjDD0pojG3OcGpDGPLGTzTEQyptIZehqNoWI3qeatKFK7WPFRTgBPlNAypDmSQ7jwOtTq20/KOKiSNlORnBqyFKgE9KAFhcjcSarybnl3AdKtRoCCaYAAx4oaBEm4tGDjkUQZO7PApJAUXIoi3MDQIdG5BIpwJEgPrUe1icU1iRigCySfNxkcioJWZFbHNSbA8YcEk96ikGUZelADbZPMO4AVb5xtOao2xMUmM5q6JMHcR+FAELp+8AzxUdwAsin+GpHO7kcVWuXymO9AD9gySDgEU63ceUwY5waWEZtcHrilgjCq3TJoAjIVSdp4PalTIyBUihSACBmnYAcdKAGNu4YnmiVwSF6GpzHuYY6elVLgbLkZ9KALCKNobvTJJMSgCnxn5eKkl2qqnaM0ABUugIHQVScYfpV7zQgHSoZplU5IzmgBIiDwDzUhdiNpqCKZRKCFwDVmUoVyvWgLEKp82cj6UshduagYE5OcUsTOmA3K0AOErAkGpRKVYFuacYVddw4zURwPlagCZpAV6VGjHdSom9Pl7UkYIlGaAH7i2cnFNwvfmp2Kv24qvKO46UAQGMCUHtVxBERjHNVzjAyeamUYAOaYBJGpGOKgPULUzSVESu4Z4oBDpEyg+aqDNtZh1q5IMdDVZlweBzSA5zUNUsvD9pvYh5yMJGOpP+FcBeahc6ldtc3T7mPQdlFVrm5mu5jNcOXkb17VGGx0r53E4mVV2Wx9RhMHGgr9SwZe3agvyKiDYIA5qQEKOTXFY7iUNjuCTSZJ4HNR544HFSqcc9+9Q0MkXjqOaA3PH500EkevvQziNNx6dh60rXC5K8qxR7j8xAJx/jXJ3WrXV/M8ML7VY4ZhwMfX0qO7urrUbqSJJG8vO1inQj/CtldFt4o4Ibd98jrncAOW9PavSpUo0Fee7PKr1pVnaGy/EraXJbaVcRsiGSTo0hGQfoatalJaC2FxdPly5wi4DEfzrOvpls4fLmnMkgJURDjb7mm6TokmqsXnMgAHAxx+J/pW0oRb9pJnPFv+HBXKoivNULfYrZo4EPLA/zPc/StbTfD0UUTTXkS9M75Wxj8P8AGrl3e6Z4ZthGuZroj5Ywckn6Vdh06Kx05PEfjx2htj81lo6HD3B7Fh2WrgqtbSHux79RVHSo/HrLsX9E0DThYPrOqXLWuixdZ3ODPj+FB3+tcz4n+J91q5TStCsls9JibbBCoyz+59SawPEXifWfHWrxRCPEK/Ja2UAwkajoAP61safp9r4aQxxeXc60w+eU8x2o9B6tXdSw8IK277nBVxM6jvt5CW9odNkjvdXRLnViP3NpgYi939/5VKn2q8uZLieZWlxukmfhIl9j2qMQJDHLd3VwY4s5luZPvOfQDufauc1HV7nW5FsLCExWufliXq5/vOe/8hW6ioqyMHJt3Za1XxAX3adpAYxv8skwGHlPoPRf51seFvC7xFby8YLs5+b7sf8Ai1WPD3hi20y2+237AYGd56n2X/GsjxJ4xa5zZaaRHbrxuX+n+NNCZ0Os+L4YM6dphG8H52Jzz6n1Pt0FVvBniW/8P+IVvIt00M/y3UZORIp9a4XS7C6vbkCEHGfmbtXVSalb6dAbe0KvcYw7+lVvoGx3Hi/QLDQIl17SkMun3hJTHIhY87TjpXBxxz6lcl5Cdvqa634fa8RHdaJro87Rr/5W3/8ALNv7w9Kh8UaaPCd59kbmJxuglHSRexFCdtGDM23uzoU0V1aSBJ4juDA4JroPEtvH458OjxRpC4vrfC6hap1I/vgfzrz6aaS6m9c9FrofCmrXHhXUheRtmJ/lmiPIZfpRLuhIxre1CgSOPwNMuboICqdewrrfHOlxQW8Wu6P8+lXZ5C8+RJ3U+3oa4Jsgbm/OnfQdjrPA3iiHRr2ew1f95pF8pjmRvurnv7fXtXKazHDDrNzaacxltw58puuVPTNVsS3cvkwqST19q6LTdHjtQGfmQ+tclevGlqzrw2FnWei0Kmm6P5YEkoy/0rdihAAGKmjgIPNWkhx2rwq+JlN3Z9JQw8aSskQLH6CrUae1PEWOcVKqkAVxym2dQiDHbmpVTJzzTgg9KmVQAKxbECLjmpkQ5ojTJ5qULg/SsmyWx6fpUoBJxTEXk4qzGuDyKzbJYqLiszxCm/TwQOBkVsdeMCqerRZ02TPbBq6TtUTM5bGHaxiXRLKV/wDVOs1m+e2fmH681zctvdRW4E6h0B2rnvXYaJH5/gLVARk2l9FIp7jPyn+dco9wbuB7CZ8bHbyn75z0r6tbrzR4s9muzMd0KAvCSQPvIeq1WdYmO4Aqe+O9Xo7l7S5/fxBjyM+oqHy4pydp2Meceta3M3qT2N5tIgkbKtyjHv7VqIUVduMD1Ncw8UkbGJuCDkVtae5vY1B/1icN/jSkiHHqaEg2om0ZzzUV2pMeVPOKlRjuMfcd6C3UEA4qSbG98L9OgvfFMqXduk8MdszhHGRnIAr2eIrBF5cCJCn92NQo/SvLfhRHnX9TfGAlnj83H+Fensdp68V1Ul7tzlqP3iQTOWG5yceprwT4veHPK+IsNzEpEWqqsrY6Bhw38s/jXuqn564n4q26DT9H1BgMwTSQjjpvTI/9BNaS2JjueVXrEM2MlRwGHPFUdnBZWyD79KtOx2Hb+XrVFwHVmAIPsa50bbChCWZgCCOlbehWzSyiVkOOQDisqOJvIBWTJ/ut610+kpcW8AVJFVW52sBwaGNGjPJNCEODjHcVz2o3O6XaxGGPFdDNLeFdsixMmK5fU1IZd8W05G0g5BqRmrJOIUKLk5UfyrGacpJk9D1BrSlkXerMOcYxWTd8scZ9AaBnQ6Veo9kY2G5d2KfPBGysVPKj86wNEusTSwPxnkV0MUZdhzgkHGaJAjFlYqf0qOaIyAOBnHNXr2FSNy8H0qnGedoOG/Q0IC7FeOqKZF3DGMnrQHiydygL6imHHKjjjIp4QeWCcYpWHcSO8e0k3RyEA8EDnP4VdtfEEyFxIiyLj5gDjI9aypE4BBwc4xRHCQdwOPandhZGx9s024c+dbLk8/Mg5/Kp0tdDkA2+Wm7vuI/Cuf8As7K4Yfl6VNGplO2ReO9JyDl8zbTQ9LaUlGOe+JKvW2kaWAAyqcHq0lYUKBJQytuz0q5I6RsAAPcVPMVyHSwwaXASiLbqcZxwalXUbVVQq2VJ2kqvQ1y6S5l3L07GraK8btlsgjP1pOQcnmbH9tRx3DwiJi4+6WOMmtmZ5ktC8YERlQZA9a5aziS71a1DL83mDd713GoRL80I5MfT3pqTtcmUVexUFzKZgJNxBXGc8GoLrZtf1IBFW5QqxIM8MuR/sms10kuJY0UfNkjp2pXbFojQ0OASzmcjr6+tb7E+YOtQWVotrbBQcHFSKxJBPSu2lHlic83zMdKg3Bweaj2E81K/FIx/d5B5rQzIyOKYu7BU0KSBzT1K4+tMCFHIbnpTpd2wbcHNSpGj59acqbRgg0ARxbgu1qeVP4UjfLkil3ZAxQA5crTG/wBZkVMqgDk9ajxjNAD22umCRmnxqNvUVVKFuMkU0b1BG6gCywJY4xQqZHNQRu5PWptwC5zzQBJtwpK/iKpMxaT2NW8MAT2NU84YjrzTAQoYpQcHnoasluM5qPcWZc9BSPw2O1IBTICuBVS4SRlJ2nFWHaMj5OoqI3DNEVJxRcZJbH91tJ7U5SQhxUUB3RnHPvUoDovqKAJoIxtLMaONwA6ZpFx5QyajIw4HpQBaA2vkdKgnjErcHBpwkycE8USRkYZTkUCFWN4UBzkVHNMSNvpVnzF8keo7GqsgMr7guKABG3IM9RUdzGTtI5qSFSMjGal+VQc9aAKqkjGQeKuBCyg+1NGCRkVKSVIx93FAFF9wcinRhs4bp2qSVR5mafGCV6ZxQBKoAGAainh3jeOCKmTH4+lA+ZwKAIYfucZ3d6dn5+atNsUEcVXbZk880AK7YXgVDIx8rIHNSKQe/FOYDaeRigCgHJHNW42VkGTUHljJ4p8YGMHrTAWRfQ1C+MD1qbHNROmDyKABXGQCKbIAGpQoJ6YpsiZOBQB4OrfnmpVOORxUAPpT8mvlGj7UmDADAyaUHcaiTJqTIBHFQ9Bjw2DgYpynNRDk81Mi5IwKhjJVYbSScKBkmuf1i8e5ultonJyuCF/hHp9TV3WLzy7PajAEttCjqzf4CqWjSw6WwubkJK7575I967MNS5V7Vq/ZHnYutzS9mn6kVt5UUflbzA2MNjq3tQ+oTaaiiNyXblAzcj8Ku3N9Yx2E0z8yg5hwMHnsah8O6bd6rq8dy8XmyynKB14HviuqMrpykv8AgnI1qow+8s+GdBuNQvGubmHzCfmLSZ+X3xV3XdfWxkTRtDgM17IfLAjXJBPoB1NbGt3F7HcReFfDStc6rPxO0X8A75PYVkXWqaT8MYJbTSpYtT8VSqRcahjdHanusfqfetqNB1Xzz27GNXEKkuWG/ccllpXw3hXVPEezU/Fco8y3sC25LYno0nqfauHuLnXfHviFpZ5HuruU5ZmOEiX+SqKi07S9S8U6hNcSzsVzvurydiVQdyT3PtXVK1tb2f8AZ+ko8Vmf9ZMRiW6Pv3C+1eilbY85tvVjbaG10OB7PSm3zsNtzqGOvqsfoPemzNa6TZLPfblibJihB/eTH1Pt71HqGpWuhwbZo1lvcfu7Yfdj93/wrnLSy1HxPqLTzys24/NIw/RRTJFnutS8U3yqcCOPhEXhIl/z+JrttO0fT/DWnm6vcDjOG+8/pn0HtTmXTPBthmZVM+Plj4JB9/U15/rGuXetXJkndtmflTPFIC94i8U3GszMkZaO1HAUcbv/AK3tVHS9Glvm3v8Au4F5ZjVjS9FEkf2y9YRW688/xU3VNaNwPstmpjthwAOrVVgLF/rEVpCbLTRtUcNIOrUzRNNeSYT3BIjbse9Gl6RtUXF0OP4VNSajqwgIjhxkenQUwNy61CG2j8pOGHQCus8N31v478Py+GNYlVNQg+fTrh+x/u59DXnFvbTXcgcnO4ZJrctsaa0c0J2Tx8qwPNOSuK9iSfSn0eaS3vI/LuIiVdW9ayLu8MmUQ8etejXsX/Cx/DMl9Zrt1zT0xMg63EY/qK8xlKW4O/hgeR6GkpaDtqdZ4L8WWWkWd9o2uR+bpd5HtweQjdj/AFri0tpr+7kit8mJXIDe2eKls9PuNWnyAVhzy1dhY6bDZx+VCAD3NcGJxcKWz1PRwuClVd3sVdP0uGxjCooLnqa047fnPrUyRAfUVOiEjpivn6tdzldn0FOkoR5YkSQ8jip1jGKkRO3enAfjXO5mtmRBPQcVKqDHI5qQKMcCnKhPbmo5hjVXNSrGQc44pyR4qQcCs2xBjkVIFO4YpEXJ9qmC46/hUsTFUbeoqUHj0pqqce9SKmBz3qCGOX86h1HnT5sdhU61DqXGmTkddtXT+JEPYzfDPy+D/EinoWXH4NXn95lb+7j6EStgjtzXo/hmP/iivETdiRjP1rzPVGxq95g/8tTX1sVpD0PGk9Z+pOmy8hxJ98dR/UVSuLaS3bcuSmeDSLIUZWXODWi0u5DkfKfyqm7ErYzxcI7IJlyDxnuKsRf6FdCdGzEflcdwD3qO5s1khaWD+Hll71BFKxTJOccH6VWjRL3sb5f9+NvTHHuPWrwSOQLtxnbjmsyykE1orL96L5T9O1XbcOGGT61mQ1Zna/CyMprGpH+9aDP/AH2Mfzr0dhlq4L4bMBqeojv9mX/0MV3rNXXR+BHHU+JjVA8zB4Fc38S7CS/8B3DQjL2kyXGB/dGQ36GukJ5yamURTRPDMoeKRSjqehB4Na9CFufLsjSKNyk4NQxyEn5geODXT+KfDk3h3xFLp7ndbud9u/8AejPT8R0/CoodMhQZbBDVz3todGjIbOzNxJvIwiDJ961Yp0cHBIqKeRIbcpHxkdqxYruaGbGeD60twOlNwQg+YnbWDqc5Mq4J2hgdvpWjHJiLf6jkVgapPvlOzjBqUtRvY273PyutUJlbHK9ea0FPnRIezIOKgkQtGB0IoGZcMvkahHIOATg118XzRq4Jx1B9DXJXCYBIAypzW5p16SiqTxgEexoauhdTRuLbzY2lHUc/WsaeIRzhlPDc/Q1syXLQcEHaRwKxtS6GWHOzuPQ0kNjwTknqQKj+0SINp5Qn8qpQyybgpJ61YZ8gqabBE5+fAJxnGKtYMRGOQaqxRF4cE5wetTQbgSr8gdDSGI7lxuQ4ZTyDU8TkSDIxmkSMb2xznkVbjgLqCPxqGykEaruLjp6VoRWokiLHGR+tUhD3HH1qzaysSVPykdqkq5NBAAxXHUZqUkgjqQOOPSkWXAKkZK8irFv+9hwcB1P6UmFzT0G1jk1aGUYIQHcD2roZZ431Cf5gctWZ4fhMUV7c90X+VV4iSA7sQ3Jzn1q9kZvWRqT4bhCMj+H+laNlaLGFlYZbFUtNhM9yhYHGMmtxwoI2cCt6EL6sxqytoNILc9KcCojxjmgn5aTjpiuowEk5wRTJGAABHFSAZQ1X8zqpFADiqkYoEe0Cl24XNG8FcGmAsJKscVKr5JyeaiVP3e5e1RmQ5460DJpGB4phAABzUXnNzuWk+0LgZouBcDbl96bzupqtlQw4pjPznJoEPaTqOlMRQcnPNNUhic1II9pyBRYBpLRkNtOKkOJMEVKZR5JUiqqvkccUASNIwQgnNVE37jkdafOTwM063BkUjNFwGrIQ+0in5+c4qPYfMx+tSO6qRQmBG6hQSDzUSoZULEcUrLvkPvUjRskW1DSYx1ovy46VKwYAjNQQEjnHI61YPzA4FNAQliExmlR94B704xggAnFOjtzzjtQIRjhsjpSmcrgDpQw496YfmBwKAJd4dc4wadGuDnPWok5iqYKAmM9RQAq/Lmo5GB7c0mWUEZpu7I5oAcJfkyR0p4mLJgVWILNx0q0ISsO89qAIZC2RU0MgHFQeYX4IpVG1uKALJb5qjWQiUUpG4D1p5jwM4waAFlYEg9KjIUipDt9elNAByxoAhY4XjNPU/uwc80nliTIzxSrFtGM0AI0ijrUG/wCbPamXLjO0cVNbor25HemBKCsgBFRykgVEm5HAzxUjtk8mgCMOeuKVvm+akJ28U4MpXHegDwHOOBTwOeaQAdccUpJ7V8qz7Ud04FPVfU0xBjHrUmcdeahsoeBTyyxruY7ewJ9aaOeBWXr0pFuFWT5ydij69TTpU/aTUTKtP2cHIzSkl/fTSQ5dIs7SfTuauqtxkCVEj3AZlcdB9KXS7tdMttqbJnmGNgBJUe9MvdXZNPmtFjKI/O1udv0r0nzt8sVoeMmrczepQ8kahqm1Qphi4OOjf/rr1/RtIvbfSt9qkUd/PHzM/EVrF3cmuc+Hfh6S9svtl4n2fTYX82e5Yf6xh0VfWsX4g/EK41+aXSNMH2TRoWxtU/NORxlj6e1bQpe0neWy2M51fZwtHdi694xstCsrjQ/CEjM82Rf6w3Elye4U9l61yWieHm1bdeXcptdLibEtywyXP91fVjV7RPDcctumpauXhsP+WMS8SXR9F9F9WroZDLfMpZYreC3T93EvEVug/r713pdjzm23dkbMLiOKwsbXyLFD+6tl5Ln+857msfVteh0vfb2LJNenh5xysXsvqfeqmseJQEksNKYiFhtkuMYaX2Hov6mpPDfhKW+kW5u0Kwj5trcDHq3tTEU9D8O3euXQml3mN2yWJy0h/wA967HUtY07wlZLb2qrJebcDZ0T6f41U17xVbaPA2naQVaYja8vYf59K8/Pn3tyWLNLNIcknkmgB95e3Wp3RmncySMeB6D0FbFhpUNjAL7UzgYykfc1PBa2mg2/2i8IkuyPkiHb61i3Nzd6zeZbLMeijotUhEuparcarMsaLtiHCRrWjp2kx2kf2i5IMmOF9Kms7CHS4fMlIabGST2rJ1HVHuXKRnCdz60wJ9T1beWihP1YdqzLa1e6k74zyaksrB7l8kEIOprUnmisodqdenFAHf6zoFrpeh2eraTufTriMBsnJhkxyp9vSuIlMtxLk5xmuu+H3iJIJxperENpF8vlSqx4TPQ/56VkeM7e38Na/cafa3C3KDDRyL3U9KSl0YWINJ8TXnhDUVv7CQebja8ZPDj3rDupG1XVrjUZkMcc0vmeX6ZNPstOmvJhNKjknlR61d1IbbqNVztG35SMEe1YTqx5uVG0Kba5mdHoqBtPUIoVQcelaiQ8dsVFpq+ZZhwuA3OKvhOa+UxFW9Rn1tGHLTSI1iz24qULxT1X5acOTXK5M1GqvTNPCY604cD3p6qTz1/Cp5gESP2OamVe9GOAKcCScUrksTGTgU9UJAGOop6p607gfU0Nk3G4CcUq5JxQAT1qRRjiobAcGwOaU5A4PvUeeaU549KRI9Xyah1Js6dN24qVOAc9RzVTV32aex4w1bUVeaRM9iXQh5Xw+1VicebKFH/fQryjUmzq94exlb+desRKLX4dW6fxTzZ/DJP9K8iuW8y5lY/xOx/WvrbWlFdkeI9VN95BF84CmpY5Sm5G6dqrqdrL2xU8iHiQenNNiiSpKY2Ei8j+Ie1DwLvMkeNh5xmoY2w+D0NNWdrecr1Qn8qcRT01Lmly+TfiInCS/Kf6V0kCgSlRhiBg8VzUyiTbJCANoDZ966G3l8xFkX+Nd2KzkKSurnY/DyTZ4mmTtJZvn8GU16OcY5rzDwFKB4yhUcbreVf0z/SvTyoYda66PwnDV+IiYA80oYLgGmkbD1yKUfPzitTM5z4g6Gdb8OfaoFze6cTMnHLR4+Zf6/hXjsl+HhQcHHcV9FwuY3BGK8m8eeAZ7C4l1XR4TLYyEvLAo5iPU4HpWdRdS4PocRJdEsA3QiqMz5bcDjmlJJGewqGRs5yDxWaNDobaTzbNT3IwaxtQiU/MpGR1HrVvSpRJbhR95WNJeICzOox61PUroXLSQmzhkxkBRnnmkuXMi5j55z+FVNOm/dbSfuNVssqsQBgUmCM2QjB3dQamtGyhG7DKf0plzAVIZTkGq0Enlz8ng/Kapai2Omju1aBUY5IHBNQzNHKCBxuHNVImAcAjJzV1o0kClDhx1FTYZmyRhCGXketKuGJzVyWAEjjlhz9aRURYipXke3Wi4IgWV0cKPzq4j5A5681GYgse9eo5GfSm+ZvHQj0qWyi2NwOeeKtWc/zFGPB4qnFISgU4IPrUiIiS/e4I4PoaTGmazGIQEBvmqq0vzBl61XyM9afECTntnNTYdzStEZ3DDJx1rTjUICTwO/sap2kiwKw6Z6VaaVXjYAY38fn/APXpDZ0VuXt/C6P/AMtZWAB9RUEaDAIBKZFXtRj8qx0+2HGIwzeobpTbRFljnj4DBMj8KuXRGa7m5p0SKpZOm3ANPcleKksoTDp8ee/NMkxk120laJzTd5CA5GKUh8buopoHy5xT1f5QK0IDf8nFQvhlJAwasZxz1qGSQMRgUANO7aM0pA2CgAMmO9OaP5Bg9KQCRMEJ5yKruG8xnBwKmUE55pXjUx4zzQhlfcON3ekaJWbjNNxgEHk09XGOVoAtIdqAVE+N/NIshwOKexB59KYDFODgVMPlHXIpiKGOaGJpiJS64p5EcsXy4DVTOc1LEwKnHUUAUpncSEGp7IkRsc4NJcEMOQM0y2GFPpU2GOZwZMZqUKAPXNV5k+bcB0p6OQAadhXDO1+KsJlcnrxUTfMTgU/ftABHWmBIqAjcOpqZV/dkAc1AjBR04qZXx8w79qQEDKzKQDSQzMOM9KnZgATszUUbfOTgCgBzDK5702N9pORU0eNxNRhAZGFAETYL4B/CrO3MYAFReSofIqyOmMUAQMpIwKgdwhwasMSrA1BNGXckjr0oAWMgYbtVmSTch29Mc1UQcbMYOasAZwKAK68nNTpg896hYYlJHFOztPFAFgthwafPIvlg55qrkkjJpzqpXFADFlB4zUolUpsP51C0Y2blNRhW6CgCyqYBO+nI4PB61GoKjBFKY9x3UAQXADNwKdbZUjHSnOpIyBnFRRMd3pQBJcKQQwpjMCue9WH+ZfpVYxuWyORQBGW3detIxp5GzpTkVCPnNFwPBckmnhfU0KuDk0/GeM8V8q2faoUDn3pwGe9Cpj1qWNRnkVm2VcVcRqXPbkVy8ttNd6zLAv7yRTgbeRk8muj1E/6E6bgu7qT6AVzWl3Mtu/nRFvPJ3IqruLljwK7MFF8sprc83HSV4wexqw2kkscvzosgGHUYDcdjk8Vq6b4WtEiTX/Epe10pObaxY/vrsj0HULnvWlFbQeGIk1jxOiT6yUMlnpS8bB2aUjt/s1ztpql34q8QSXuqs09y7LHDGo+SNRzhRXak6UXOe/Y4b+1moR0XmdV4v8Vzr4UO2NLVJcJBbRDCxr6D39TXGaP4ajsIY9T1yLzJpBvttPJwX9Hk7hfbqa7jXYLbS3smuYVm1BU8yOFxmODPRmH8Teg6VzGp30Fihv8AU52kklO5Uzl5j/Qe/SunCxlyc092c2LnFT5IbILmZpjJqGp3Cxxr8pcjAUdlRf6CuM1jX59WZbO0jaKzBwsS/ekPq3qfbtUN9qF/4i1BV2ZAOIoI+FQf57mu10LwzZaDY/2pq8gXAzk9T7KP611HIij4Z8HrGv2/Uysap8xLdE/xNQ+JfGXmI2m6R+7thw0o6tWf4l8Wz6y5trbMFgvCoONw96yNN0u41ObZEuIx95z0ApAQWtnNeziOBGZieT/9eugZ7Pw3Dsj2zX7Dk9QtMutQttGgay03DTkYkm/wrIsdPuNTnJBJGcvIaoQ1I7rVrwkkvIx5b0roooLXRrcncC+Pmc06SW10e12RY3Y5PdjXN3d3LeSbmJx2UUAPv9RkvJMciPoB606w04zESS5WMc/Wp7DSyVE04wvYHvUl7qAjHlRAZH6UAPuryO1j8uLHTpWLI7Svlz9KQkuxYnJPWlI2igZrteCCzSOIZcjtTtMtprm9ilmzMV/gbngdqu6VYrHpsd9Km58nGfSn2SyCbzI4zlycMD0NclSumml0OunhpKzZtR3UFpiW13ZXB8tuQRWZcXCXviOOdlARmBK/hVlbe4Ta0yGNVBBfHGf/AK9GjW8d3qUhkGGVfl+ua89OKTn5HoWbaidbawpFAiqML2qfFGMYHTAxingZ6187KV22e5aysNAzTtueKUAU5Ac5xxUXARV5xUudopoGKTBJPap6hcdnJzU6AdahUbcEGnkk8Ci4mSl+PegNg80wDAwaeAcYPfpRcmw4tkc+tLn86TrinKtSIQdQak4C881GTj/CnKTg5piZImT+FZmvvm2SIdSRWoq+mazLqM3eqwx9VDDd9Bya7cDTc6yRhXkowbJ/EEos9KsbTOBFEWYfhivKZYiDn15rvPGN7vtrxwc7dsS/nzXFoRcDj0r6W96kmumn3HkPSEV31KO2rURDgj2qNlwSMUv3elNspR0GOmyXOOKY/wAz/SrLYZV9apyNsnOelOOrJn8JYhlMOQfuNwa39Jn3WxjzyhOD7Hn/ABrn9oeMEVe0WYrcSwnuuRn2P/16UthWO88Gy7PGGlv/AH3MZz7q1estkZrxjQJfK8Q6RITgC8hGfqwH9a9qlBRmU+tb0PhZw1lqVnbJFOBwKY3XpQW5xW5iSc5z2qxE+MgjIPBBqqM8VICRQBxHjH4bW+orJqGiIIrsjc9uOFf6ehrx66tZLeZ4J42jlQ7WVhgg19OrIQc55rnfF/gmy8U2xmhCwamg+SXoH9mrOUOqLjO2jPAtJcw3ZjPBbpWncx/uiDzu5zWZqdjeaPqjW93E0NxC3IIrTilEy5boelZM2RRtR5chGOtXhjawxzjiqsqGKTI6ZqfaWTcp5xSYFedynHWs+QF2yta0kIdQW4z0NU3j28GhMGTWs25kLnBI61qoQMMfzFYIO1jg+9aUEu+Ic9+lJgaeVmwM4PY1IYwqq/BPf3FRxrgHpnrmo4md2IGSgP5UhoSYjOAMCq+4L24q7KFK5BHpVQja3saVhijJPyHHenqCc57/AM6h3bfu/iKfFK2DuH40AWlzIuOjCtCCBgVB785qnaHcykjg1rxgoNrdhxUtjQ3aUG3tW3p1j9pntLcg/vGJyO2OlUrGITjB6iuq8Nwb57qdgNtqAAfeiKuwk9CTVJRLd7SPmChfxHWpbCDZLGVOQ+D9Rz/WsWS5Z75SxzvJKN6Hvmui0JSxV2XhRnB7GqS5pEvSJuyHaoToAKqN81WJWEgz/KqyAb8V3rQ5Bvzc8cU5V3KQetS4XovBprhgeDg0xEQUqCM0w4x71MgJPNMaIh/agBAABgGnBuCO1KF+So3JAxQAJyTRIQR0xT404pkwJU8c0hjCE5yPxqJx0wcfWnBW7mgrlgC3WgCaMBYxxSFlORSOCvyqaYxwpOKaAeqnPXFSbNvOQTUCvsjDMalDKwDA9qGISQ/KW21XU4jJBqVpGKEHpSKBIm0cClcdinJKXbHFTxkrGAvNMeALLgHNKm+JcihDY+QS4yRgGkS3kZsZ47U92laMbjxU0TgKuaYgKhRgsMinsiSxYDDcKr3Ks0m5TSQkOMZwRQIlQMvyt+dOQHd14p2zIwTz60oXaduc0AKSdhFRqpGec1IV5wTxTGATo2aAFV2GdopBvLkr3pVHXBpFdkbjmkA9lK4z19KkZyFz0qIyljyKWVyyimgGkmT8Ka8rqcqM4p4VVXryadCwG4SYxQwsRSTBijDAPep0IAyfSq0sKs2+Mg4PSpEkByhFIZGxySaeiqG3E08oBHjFRxrlyOeKYiZgOSOlQsSBx3pxyGI7VHyWHpQMlhbEZQjk0hUr35pAfmp3B70ASRjcMmkycnFIvy8GhHXcaAFPHOKhfHmDHQ1LK54AFVnYq44oET5PQdKcpCHnkEVCXOOByaarHYfWgBZZY2+UDBqAc9aaSxJ9aacjvSGeKYpyp3NPVOacqZNfJNn2oijvzUqZ54pVX0HFXNN0671e8FpYx5kxuZicKi92J7CpUXN2juTKSiryehz+r2d5qTw2VhE89xJ8qxR9STxXS2VhB4EtD5ITUvELfK8qKJIrAgdh/E/8qr+I9eh8LWUtj4bO69lZYrvVT945/gj/ALo965vSrPUNR8qw01pS8u553dvkVQeWJ7fjXt0oypUlGO54dearVm3sSXEV1qG/yLme+1K8kCSK6/O5Pfnp/Kuu8I6Na6LGkcbpPqjE+bcqcpFk/dT1PYt+VNttPi0/T2t9OeSaWQ7Jr5jh5fVV7qn8+9O0rWLO0MVtZES3CKPOlU5Vfm6D1NOa9nTbkyaf7yqowRmfEPX7bSfEV0rAT3iqqJD1VMKOW/nivM449R8R6kWLNNO33nboo/oK6XxDo114i+ImqiFWEbT5aQjOOBx7mt+6u9J8AaeLeKNJ9TIyE4O0+re9d9PWKscFVWm0xlpp2k+CNMF1qQD3Lj5Y/wCJz/QVwmveIr3xBdmS4crCp+SIfdUVT1LUrvVrt7q8mMkjHgE8D2FaukaCrwm/1NvIs05w3V/YVZmVdI0OXUT50jeVapy8jdMVb1PW4ooP7P0oeXbjhpO71Dq+uNfAWtqnkWScBF43e5pdK0U3IW4uQUgHRT/FTAraXpEl9Jvc7IByzHvW1eX9vptuILdQCOAB1P1qPUtVjt4/s1qoG3oB0Fc8RJNNkks7GmAss0lzLukJZj0Fa9hpawqJrkDPUKe1S2OnxWMfn3ABkxkA9qo6hqbXDlIyQg75pBYdqGqbyY4eAOMisvBPJPWlC56incAc0rgMHHGKlhga5uI4VB3OwApoHOTXSeF7JEc6ndL+5j4XNZVqipwcjehS9pNR+819SlSz0yPTo1+YqFz/ADpLOSOwsmgmiEscwDfTtioZw2p3lxcW6nykyw9h3qwlpcs43JtiYjc/UYPcV5KS5LPqepKT5ubp0Jp9SaWxaxGXBb5Wfrj0Na+iaH5W25zneDn61StNPN1frEmGMY+Zsda7eztVgtVTGD1q69FQo8q3YYepKVTmfQofZWJ56+tKLcjg5rT8v1o8rjNeT9VR6Xt2URbgLg/hUbwlc46VolPzpDAW7VEsKNVTOEZJ5/8A108qQAKuGLApvlE1zyw8i1URRIzUirtHNWfIAySOfWjyc+1ZujIrnRCeQKB19qm8qlEQwKXsZi50RAHFPzxgdaf5eQQMinrB8oNHspCc0Q+UTk9+oqQJntjipxF2x2qQRYUcVXsJEe0ISNkbE9hxWMs3lGa5PUZxWvqB2W23ox6Vg3KGRkgXoPmbHevbyuh7OMqz6HBi6nNaHcydWiW5s44HOXYmRvrXJbHsrokjAroby5Et7IyH7p2qfUCopYEu4CMANivRoL3L9WcFSp79uhQe3+0WpuIuSD8y1SPvWlYs1hKbedcxN39KivLTYxZOVP8AKqkjWD6MpovSqV2MTZFXoj1qtcruJ+tKD1CotLBGxCirWn/LqcBxneSv5iqajaBVi0OLu3J7Sr/Oh7MW1jsLVtlzazLwUlRx7YYGvdLs4ncY7mvCIQygk8lB+vSvebkfvXBHNa4d3TOLEKzKjH8qbg5zSsuO9OIOOK6TnEUnIqUHHaowMMKd170AODCpQxABBqDHOKkDcYoEYvizwhY+LrArKFhv0H7m4HX6H1FeH3ukX/h6/fTtQiMcin5G/hceoNfRqmqer6PYa9ZG11GBZF/hcfeU+oNRKF9i4ztufPzokkfyn5iKjtpCYz7cGuo8UeB9S8NBrq2L3dgefMUfMn+8K5BJiJSVxtf09axasbJ31Ra80FDGRmq0/wA/A/Onli3zFevpTh0BPOKnYoztnA9av2LKuVc9uDUc8aAll49qrKrTNhSQae4GxDO0r4B49avxEW6MDzmseycW2Q46jFWvtIkwQeQMVI7EtxIpjBX72eaagEkRGeajGC+efpSOTsLR5BB6UmIcYNi5J5pUccKajAkdeSeKeiK3NAzUsnTKj06n0rTeVG2oOHHFYNuTHJgDIraiRW2N1YipaKub+mwCKHzPbNdBbt9h0WXd8sl2+T/n8qyrCBphDCo4YjI9qfrNxJJqCwRkBYVCA+p70LRXJerIo4Niu5OQJOBnt612enxCG2c4+ZvSuP0aKS5lwTlY3x+BruWVYgsa8BRitaEbu5nVlpYh3gHDUqKu4sppH++MjNPVAVypxzXYc41gc/WkGQ9TEY69KYB8+RQA3ncaYzEkA9qlY8ninyIBCGAGaLgV1Lc570BQ2c0EmnxgM2OlAhoxGKY8ihc1NPjZgiqzgGPjpQA7cmzJqBtqkFeean8rEHA4quIixyD0oGPJOPwpucCn7SU96jY/LyKYiORnK7ccCmRsyjHNX0UNBwMmqpjbnI6dqBik5TIOaPujg0saZU+ppjDyhg9DSHcF+ZietSLnHbimW/L4FTTLgfLwaAY4gOnbiiPyyADwahQPjO6lEnz9qQh02FDYPaoYF3EEE0+Y7iadFtRfemA+SQowHan7gzqR2psoDIDjmkGTD2BpgSNgnnpTAFzSKwaPGeRSryOaAJEkUHGKjYHcSOlKxAbimOwBxSEOVhj609jwMiqmdhHpVqM7jz0xTGIuN2D0ps2T8tKygDd2z2pNrOhKHNAiFXaNelS+aHTI+VwKRUbow5pjEebtpDJEum28jPbNOQkPuHemQ4LMpXFSHKn1xQA4Nub5qRwAOKbk7txFTHaye9AFZZCHz1FSqwKkng0LHk9Kf5YGRQBFvweelOG3d1pAUBIIpGKhulMB5fDHuKicBzzTRncfShzgjFAhT2wM0hyG+tKoy3FSBc5A60DIjFnoearMreZtz0qxgqDluabEgeTmkB5C/lLGIoRv7tIR1+lRBcc05VA5PStvTtGjmtf7S1SQ2umL0x9+cj+FAf518hThKpKyPsZzjTV5FXStFm1VncyC3sIeZ7uQfKg9B6n2qzqOsRfZTpGjIYNOB/eSH/WXB9WPp7VFq+svqipbQILXToeIrZOAB6n1PvS6VpDX376RmhslOHlxy5/ur6n+VdKfL+7o6vqzBxuvaVtF0X9dTlLvQLzWr2RIHWGziZDNcyH5I+v5k9h3rstP0y3t9I+z2KGPTR80ryOFeYj+Jye3oOg96f4gaGz09pHxbaXbgMqDklvU/wB5jXEXmuXOr2jRx7ra0Vh8gfgqe7Dua9SC5KKXU8is/aVW7Gj4l123k09rDTVaA7grybwTIvfp0FL4E0c3dtEw3KFkdHJ/iAIIxVjw/wCF/wC0kmmnR4rIKNpIxnHOWzzipLjxfZQyT6ZpZMUUcYcTAf60g4YD2xmpceam+YqE+WquTfYf8QfEUXhPUprLTIR9uuI1czYwEBHb3rx6aWa6uGlldpJpDkk8kmvVviPpv9t+GtG1mzQyzw/6LPt5PqprlILOx8KW6Xd9tuNTYZjt+oj9zXbQmpQTRyYim4VGmQado1rpNqup60cE8w2/djWVq2sXOsTAyfJCpxHCvQCoL6+u9XvTPcMXkc/KgHA+gre03R4tPT7VfFfMxlUPQfWtjnK+laIqILq9GF6rGe/1o1TWyxMFseAMZHQfSoNU1iS7kZIiRGOM+tULa0lupgkSk+p9KdwGQxSXEoRFLOxroLe1g0qEyyEGb19KeFt9Htzggy45NYV1dy3chLnjsKQx97eveORnan86qBcAccU7Zgc9aMZPNFxiH6UqjuaXbgbjWno+jXWt3HlxDy4U5lmPRR/jUykormbHGDk7RItJ0qbVrwRRqfLXl37AV1Gpz2iWcNhZnIXhjVq6lsdI0o6fp5O/O0leSx9TUGnaB9psJZ5SwZXG4DqB3NeXUq+2kpPZbHqwpqjHlWre4umSy2bMLZMlhtcN0rZjuhaWM9uItu8/Kh5257D2qSLRGsVV53PlOMhh0z2p1tay6hcByh8tTjPrW9OhDWpMylVl8ES94e06SGTzXBUkZPvXScelNiiMcCg/exzSngVx16vtJcx20qapxsGR1Hamlsmk5z7VIorI1GqppwbANAPbvS4z1pANxvOelLsHtkU8Dil+tS0guR+WD1+tIY8EECpRz1pOhpciDmI/LGOacsY4FSYyeKcAAe+aHBBzEflgY4p4jGOafz1pRzxU8iQnJgF5ApxQBee1KOmBVe9m8iFv7x6VUYczsQ5WVzKvpRJckk/Kg71jrMYY5rrOC52pUt7MSBCPvuecdhWXf3GJFhQ5VB+tes4KKVJfM4JSu3NmXdWxJMicHqVHf6VHDKcjnDDvV9WDj/ORVS5tyGMig59u9VKNtUYLV3LqRRXcO2VOvAI7Gs24hlsW8uTLwHo/pVq2uNuAcDjnFX8pcIY3AKsMUl7xSbicxNb7F8xOVPpVDO6THvW9dWc1gh2Avb/yrGeLcwkTJXrx2otrc157pDXjwp9qjgJE0X++p/WrJ+4c+lQxKTcRj/aH86zb0Zs1qj0CwtfPuEiA+/cEE/8AAq9kumPnvj1NeZeFbdJr+AnkNdkAf8D5r0uU75Dx1NbYX4bnnYn47EO7tUow0ec1G6gGhCQprqOcUtilHWmZzxS5weKAHgc05eDzSA0h5PNAiRztGaakpZaU4IxnikGAMUATBwUKsAynggjrXAeK/hhb3yvfaERDPyz25+6x9vSu4O71qWGQqaTV1YpO2x84Xlvc6fdG2uoZIZV6qy4pqhWYc4zX0Dr/AIb0vxLa7LyILOBhJ14Za8V8TeDNV8OXBaRDLa5ysyDIx7+lc8oOJtGaehiqvnSEE4A/WopdsTgxnkGn53ruQ802RRhT1NSWx5kDYyOtPUqgA5+tV2XPzA04Etgj8aLBctIxOSO1So42lSOtVY2O8gdKnyoXHek0BIndc8U6LAdhzREqsMZx3FWooFKMw5NJlIt2sPmS7TwT39a6TTtNXI3HJFc9YlgVyPauwsJVht3kf7wXA96jqNm1pqC2+1XZGUji2p7n/Oaw7lwEaUtk5z+Na+o3a2mhQRKPnbDOPQmsOG2kvYsBTtJ4PtVNX0REXbVnUeGLICzjuD/y0JJ9x2rZlO+QjPeoNHUxWMaAZCLjipnHzHjBrspw5Y6nNOXMxfLIpQNv0oVynXkGgMCTz1rQgTqDg5FIkm19p496Nojf2NMZgWINAFhkHUMKUyDyiCMEVX38CpI2Vh8xosA3HR8cU/Af5h+lAIUFe1RhsdDigY51JU5qq4OMCrWST1qFlJOOnNACRuyIV65FRruAJxU5jMfOQQajbJFACRhjGT1pGUlcHrRuaJTjpTS3mH3oAkhyuQeBTypySBTVxkBuKkLbVNAisg2sxI+lNkTeR3FSFtwPakztTcO1AESZgmGe9W2BcDjrUKqJTmpN5QewoGRsojYbuhpyRJtYgZPanTESACmqzLhQPxoAYpUoSccUxWCmmurJIc9DSIM9ulIbRcO1l69qiIyCuacDgdO1IpAGO59aYiNAFzwaSMMzZ3VIByQaRE2ycdDQA5QfNHpSXKqSKl2nucHNNnUgKKAKzx7QO9WoemD6VEwyVzzVmJNxJA6CgCJG/elcZWpLcqrOoqSOHLgkYppQRyMfWmIaWLv04qO5jxLHtGB3p53A5HSpNpk4JFABPGhZHTg0hA3ZxUbh45ghbI7U4H5yP0oAJEJG4CkViBjjFTsDtGCBUDgkgYpAAJHINDSEigKwHTikYHZjHNAxvl7kJB5qFc7znnFSqpUcH86iz8/FAExyUxUaJl+eaeCSQMU/y9pPY0CI85kwBgU/lASOppSmOR1oYDHNAFZsPyTzTUAVs55qRogeVqNFKt7UDOAtdLtdLtk1DXU+ZhutrDOGk939F9uprK1TVLvV7nzrphtUbUjUYSNfQCorm4uL24a5upmlmc5aRjzW9pehJEqXepR5J5itT39Gf29u9fMJup+7paR/M+raVN+1qu8u3b0KulaGbiNLu93JZ5+RBw8309F9/wAq2ru8is41aZQAoxDbx8AD0A/rUWo6sto5yRJdEYx/Cn+fSsD9/d3G9i0kjn8aqVSNFclPczjCVZ81TRGZ4mjutb8tmfj5kEecKAR0Aqx4U8KQxWUeo67IttDGgASTpkevqfauri0u00yxN3qWDJ1jiB5J9B/jXm/iHWtT1PW0aeRVtlUSWsKfcA7gjua7sJdQam9TgxdnO8Fpsb/iHxZNdyGz013hs4+uzADj3rkZdNuodQg+zQmWU/vU+XAZD94VpWNkdSleO0O2KQgySsnGO4FaOpXMNlYmx02KUXYxiU/xeoGTwKak1L3iHH3Tc0fUNMtd+j+e3lXK8N1EXpz7GvKPEWhanp3iSeyulea4ZyUfr5gPQ/StjS5rq0nmswjGOZssSuWt5P730r0JZbK9sLew1aSNLvZi3u15wPQHqV/UVpCToz/ulTjGvC320eb2un22hW/2i6Ia4I78hfYVh6hqkt/IckiLsK1PFmh63pN5nU4i1sxJhnj+aJx6gis7TNJl1CTd9yBfvOf6V3ppq6PMlBp2aIrGxlvpQsYOwdW7CtuWa10m38mEAyY5Pc0l7fwafD9ltAMgc49awWLytvdiWNUIWaZ7iQs5yT+lR4w2B1p5HGBSYx7YoB6Cc9M805Vxyas2dhdX8gS0t3lb1A4H411Vp4Vg06D7Xq7eZt58pP6msKuIhS3Z00sNUqeSMvQvDMuq4urkmDT1PLnq/sP8a6O71OysrNrDTo9ijhQg/U+pqld6/JdQNbW8Sxw9FxwAPpTLWG3tVWWViZlZTjqCK86rUnU1nou3+Z3U4wpK1Pfv/kNsbYiYidSGPO4+tdSiyRbpkZW4+cLVvT7O21CS5ncqsexXQ+nGCKp+Y13KLazjAKghmHet8NJT1aMq65dFqSvc3OoxrbRKWjiXB9q6HTLQ2toqn6gVFo+ntZwNu4L9a0mYA8fhWWJrqXuQ2OjD0XH35biE4OMUzbn86XBJyRT8YGccVx3sdewgX8qO2KXkjijGOlBIFMc0fzp2c4GaaeBQMXIAyaQfpQfu0ZoAU/mKVRnmgD2pwHOBSEAA4pepBoAwOlPUA0EiKM5FPA7UmDninAf/AF6AF4VcnoKxL6YSO8jH5E6e9Xb+c5EEZ5br7VzerXXmzLYRH/fOa7sLSUU6kjkrzekEUzcLiW6fOTwgrJY7iWyCSc5qxdS/P5S8ogxx61WGe2K6oJu8n1Oao18K6ACQ3Ug1ZidWG08exqFRn/Cnle4qmSkMntsNkDB7H1psMpQgMcelW0cSL5UnPofWq88Ox8MM+hrNq2qK1LqzpIm1xkNxn1rFvLD7HN5qDdbueR6VYaQxkBjuQ9GFX4GWWMI+CuMc1a95GSdpaHLzwnZ5kZyjHmmWce/UoFHeQCuhutOWyBdFzA3p2rPgtQl/FcJzGuXPsQM1hONotnbTkpOx6X4BTzpreUjiMPJ+JJ/xrvgQZPeuT+HdoYtFadgQSioufzNdQTtbjtXTh1aCPOru9RhNjdxUa805st3FN71uYjwR0p2FxnNJjilAxQIcuD1pdlIVxg04MKAEIwMUzBHepN3agDrQAgJIJNIjZbgUEkAimIcNQBayB1pHEc8RhmQSRsMFWFRuxLDApNxBoGcP4g+GFneO9zo8v2WU8mI8qf8ACvO9U8M6xo+VvbN9oPEifMp/Gvf1fvSusc6FZFV1PZhms5U09i41Gj5jzgkg0qNsXI6Z5Fe6av8AD/QNWVm8n7POf44uOa4PVvhbq9nuksJY7qLrtPytWbg0aKomcWjbRnpViJt+Qwpt1puo6fIUu7OWE55LLx+dJCG2HI61mWW4VLY7e9aUcflRk5zkcVRt0LhcHBrYtrWSZtiRs5PYCpZWxNpkJki3HpnmtuxC32q21srfKrb3x6DmpdM8NX8lsY9oiDDqetb2h+GxpReWY75SMZPaqjTk2RKasRSWMmo3LysNsRPA9u1W/LS3iEaKFAFaEqEDagwBVOVMjB611wgonO5NmppoZbQYPJqZuXJNNtgYrdNvpSs25s+lWSDDaMg5oVRt3AUKcN04pdxXKjoaAGu2fu0wrnlhUgjJ56YoIUjGeaAImAC8ZppGBkVIyEDrTTuUe1AEkLKTzmlKgnCimIx2nFG91JNAhwbDYIpkjYXihWz14NIzDPHNACAuy5PSlyCMEYpR9cU3Iyc0AMYcgdRTtgByKQnANRgkqRnmgCchSwzQxIUjFRpyQMipScAlqBkG0rye/alkKiHrTWkypGOe1KoG0b+9AEUbFTnsanD9yOKZhVkxxUzleABxQA15MrwKN3yim7SAeKaEO36dBQA6Z1ZcMOnQ0yLaflpv31Kkc0KMSAigfQtKUBwTUDlRIADSqpDE9c0yRRuBwcigRIzA8DrSllGMVGrqOCKQbW56CkBdRFY8nPFMf58+1RRtsbA71N5TnG3vTEQM4UcdakilIAOOahmQrJyCKEmKHoMUDLK3REnSiWYdR1qs8pMgwKV3HAzyaAJY5i2VIqZSuR6iqSllkHPBq0hDcHg0wCWRfO3YqMOC7MTioZpP3pXrj0pA272zQIubuAc8UhboRQHHlhSMmkDDIHagCTzBtGajEm1zkZpJDlsims2ASTQMR3DSccUhQZzmm5SYAqeaCwRlTOSakCZSAw4/GlZ8nHpUeefShmG+mIV2OQR0pM5GRTyyiMnGR3qFHUHAoAWN8MQRxTHfPAFSqMtkDikmCgZWgZxWlaENPKz3arLe9ViblYfdvVv5VV1XWtrvFayF5DnfPnP5f41BqOrveAw24KQHgk/ef6+1Q6bpc9/cLFAmT3Y9Fr5idb/l1QR9TCm/4tZlO0s5LmcJGpeRvX+ZrpljtPDcO6UCe/YcJ/d9/YU6a6tfD8BtLHE16335TyEP+Nc84Z5HmldndjlnY9azk44fzn+Q1ev5R/Mfc3FxfXBmuH3E/kvsK5678OC7eWUTm3iVhKjkYBP8Sj6108NtujEs/wAkI6Du1VdTVdTtjbOvlxjlAvG09j9aMPWdKftJvcqrTVSHs4o5+y8QxIFsdOEUNo4IV5AfvdwfSorWyuL15UVZDMXAD84A96jm0QyalLLHC0UO0fa0bkZ/56If6dq1YdW0+wMUMiyOjj91OrcOemCfWvWlFSXtVseRG8Zez6lvVo7a0syYnT7cV2krHw/HRsVxZ+22lxmeMugbebSVipB9Y27fhXR3Lst5N9oWWJApMSDBwSO/+c1csbNbzTEl1hWlRBmOMgDj+9nqKzhVaja2hTglZphoXiGaWQwpsbTJOHtNRAPPpzwfrwalvoPCuomSzWK80SZeCbdd8X1wf6Gsa9hTU2eCGeJIl+4koPzL67h/hWM9hqunQrcW7XdrB/C0Eu5PyrZOMNISsLmc3ecb/gXpvhxFMxex8WaXOpOQJi0bfyNQN8OtQQgHV9JA/vCcn+lU9mri58/DNJ1LvaA5+uBzT3bUEuUb5VuGPG2328+1X7Wrsmg9nQWriy0vgW1hx9u8RWq46rChY1efSvC+hRqZbWe+lP3TM4VfyqjJp+salKrXDysz/KCcJ0pItFCTOLokhF5KncaylUk/in9xcVTj8FP5svXXiWJ7RYdMgMGeojQKorOt4Z78D7ReFYS3O5uK39NttOFvcPBEz7nCIW5I7VWltHsrmeMwCaENgsw27DXOpwV1Fa+ZTcpJSk9B9rpNvJaW8cI3PLIyFsdCBxVYwS2oZLlY/JD7Cf4hUUWrHRrlzEN205QZyATS2Ntda/qLS3JZI3O4gDrSUZRvKb90d07KO5d0wT3Ups7aQiI9fpXYaNpIsgZH+8eMDvTNH0SGwAP3nHFbJyTgdBTliudcsNi6eHUdZbiM+cADimhfbinAfpSFhjjNc9zpFPHek3lhim8t3NO6HAH0poTHLgDHel6GkHPPrSZOaAFx27ilK/gaQDGfWlAP4UCGkE8VIqdM0Dt1pRzxQFxMU7pQvAo+tIQoHvRz0o605RzzQIANxxj6Uy7uBbQk5yfSnzSrBGWY4xXN3+ogBp5ThB0FdGHoupLXYyq1FCI3UNQFpbtKxzM/CiudilZRJI2WnbqfSql1qDXE73Exwi/dWsxdRuIbo3EZzu+8nYivQ+KSitkcMm4xu92bG1XHA2kDlf61GvXj8RUsBW9h8+1OSDyg6qaX+IK6bZPQj71bSXYwT11GFDjK8gdfWnBwRz+BqUJt+YHr19qRk3DK4z7VmaXGqwyQenrViMrINkg69DVQqc8dadvHl47ntRYZBPG8U5VgWVufY/8A16fE/lkAk7D0PbFW4iLhPKkOD2NRSo9sxBXcp4x2b6ehqZK2xEVfUuQzBsxSfMhGBmrNjou+0vVH+r2fKw7EnpWSjgFcco3T/ZNdJpkz29nwpd5JMqM/ex0/UilJpqzKi2ndHoWgwrbaKkadAdufXbx/PNXGzzSW1t9gsLeyBLGGMIzHu3c/nmndq6oR5YpHHJ3dyMZJpD1qUDFBSqEIDwBTwhYZFR44p4yOM0CJzIpQLjkVGwweKZzTuo96AAdc0HPNA9MZNOoAjGBnJpExvpxAHahBg5oEPfaelQljnbUpxmkdAcEdaBjcY5xS9uKQA4pyd/WgBy5xSq5B60wN1Bo/GgB0sNvcLtmhRx3yKxr3wdot4242qRt6oMVrtkjjrSq/G1utKye402tjn4vBOkWxB8lWHvzWrbafY2uBFCgx7VcVsggimsgVM0KEVsgcmwZtv3cAe1Ru24HJoJBGaidiRxVIRBK5GeKhV/MkVTT5T61DbEtdJkYGaAN8ACFR7VCy88cVKxG3BBpnDHJoARSy/wAPFLJz9RSlcrkNTQCTQA1SxBwaRiMdOadtwetGMH2poBhYEY5ppxipMFjgilVckii4EQHQjpQc546U49do6CngAEA9KAIj83tS7QpGDT8Z6dKasmHxt4NACE9RTcqpyakZCWO0YpBF1DHmgCvvLSH0pzxbAGFMSNlkJbgU52DDAPFFwIw4D81YBDRVWwA6ipgcHZRcBAoYHilxhMEUgJj6806Y8A44ouBEoUksDz6U7fxxRtULmo2IwcUBYmVt64zzTyvy8CqoPlgMD1qYyZXCmgLCFQjEk08CMqT3qtKCCOcip0AK4zRcLDRLjginxsknDcUxsnIxQqnGOKAFlhO7K8iohGwwM4qYymMhCKRjkE0ARkMrjng055JEIKP07UiAspOee1MG5+vUUATtKZEG7qagAOT3xUmxVXO7mpEUtnHJoAiXDjcO1MGJGPBBFPjfy5GQrzVgID82AKAIVfC5YdKQODID2p/KvggEUbkY4AFABKUB3EfN2pEKEAMOKJEbgkZFSqI9oORn0oAcWVQAFpkgII9KdwyZ6YNP2rtBY0ARyfKBxn1pyASITgcUhKjjPWoYyfMZT0oAU7QSAKjeLqy9R0pWYjIU4pq5BByeaAI1ld22sMGp+hGTnFRp9992PY08RyEgUAORgqPnvUYXv0NW9gChcZpPKBzu6UbAQKwPrUbSHpVgqEHYCq7rs5PJzxRcDkNP8OyXzb2Hlw9SxPQVoXk32W2NjpQMSYxJMOp+n+NXru981PJgHl2y9umfrWeQZxtXiL19a8X2NOmrU9z3vaTqPmnt2Oc+yFSScv8ATvVhYFgUT3YG7+CIf1rdaOKIABRuH6VmXcPnSf3nPpXFLC+z97dnUq7nozLuJ3uH8xzx2UdBUttaNcHfI2Ih36Z+lX4dKCjfPwvXHrUN20j/ACIMIOBisHSlH36hp7RP3YFa+k85BFav5TqCFcDOPqO4rh7rSp9PEhj8oTSN89m/Ecx/vRns3tXdC2dAAgLMf0qf+z4Y4SbuNZSeQrDOK2w+Jqwl5GdahTnGz3ODsT9lgR9TdwinK2spw6/59K1b/WLO/sTb2h8mTGdkx2ue2MdxVjWtEfUFUyCO4jU/LFINrqP9lx/I1yWp6BLDOqRXcp7BL2IgD2DjI/lXeqtGt8LszglRq0ul0a6xm4uba3kRo5YxghV5/DFW9dMymAXIZM4yOwX0Pv3rmoote0ifKxXMD4zvhkWQEfhmpbjxJeH/AF+WJIJMttgkioeGk5KSaaB1laz3N20eaK/8iCUy2xUPgn73sKNXaRLuF7tHw/LKB90e1c5b+JJbW8e5iSAueQPKOF+lWJfE+oXjOTAS0mDkQHt6ZoeHqc6lbQPaxS0NvTjINQeJJWcMMRknOM+tTahG1nfNIlzEiooRwcd/auZLaw+bkQSReZ0cnbn8KtReHr6+hEstzuZv4FHP5mpnShGXNKSRalJq0Ij4Nbj0u6kaMCTJyo7E/SmLJq/iCSeSNdkbctk4H0A71u6Z4VgggK3EKmRv42OTW/a2NvZIFhjx6nrXNVxtCDbpq7N4YWpJe+7I53QvDJiBmu4wzHgbuorqLa1itECxoAOmcVKTznNOjXe43dAeK86pXqV5+8zshTjSVoly3Ulc4qZuO1OQKqgHrSN0r0oLlikc7d2RE845o25x3oI55xS45+lNDG4IOBSjjNO78U3ac5pgHJAoYDgCjPSlVcnFD0EAGfrTwO1LgZ9qXoO3FJ6iEAoycYoBJpfu/jQhBwKXrzQBkU9U6GgAUUSSJDGWY4FJPPHbRlmI9q5XV9cGGJbC+ldFGhKo/Ixq1FBE2qaqDlmbCL0964zUdTN05LNiIHgVDe6i1xlmbbH1571zV7ftM+0cRg/nXo2SXs4HC5XfPI057vziB0QcAVECfXHvVKKYSAAnmriHHXpWiXKrGLk5O7Lls0kcglhlMUvt0P1rUj1N5B5d6uWHRhWKOPmU5FWo5eVDHg9M0XHZG/DIrKPm3ccGiSMod6flWWgA5QlD7dKuQ3ZU+XLx6UWFbsS5Vhu6GopBu+YdenFSTYXDpjnnio0+Y5/SlYG+hLDjHerO5Zk8qVcg9zUahSMjg0m7GQancvRIgkt5IZgE53ngno3sfeu88LWButbtRtAgsYxNL6bv4R+J/wDQRXNacgkkAlw0aDec89K9L8NaedP0USSjFxeN50nsP4R+A/nURhzVF2Qqj5Yepqty/POaiY4YU9ic03q3Su04gagE7hQ3FIDyKQDiMGjJ6U8glcimgEtQA5efrStjNNUkH2p2MtQAD2o5OTThgU3PU0ANPSpQBkAVF2qTceCKAEI+c8GkK5GQadt3At3qM5zQAgzjFB4OaftyM5ppHPFADc5bI607b3oUAjgYNOBPQigABNOIVl5xmm0wkDkdu1ACHg8GnrKSpXFMEgZskYpzbc5HWmBCcjINRsOan3BjhqhfjOAaAKrn5ic8UtgfMus4HFJKB2/Wnaap85mHSgDVbHTNNKqOlI4O7OPypwOODQAoDDpS4IO7+VLknp0pGb5evSgRGxAYnHWnZTYCDg0rDcAaQxlfcU0MaxON1NAJORUje9NB5OOKAFGMds01yOlOAK4bFSfK4+6M0gIBnHWoz96p9jZPHFGxACRTAarYIJoc5Jpu3BwO9JLkHAIzijcCtKzlsAcUxlZRTmJz15p6fdyTSAi8xCAB1HtTy4PIB4oEHzHHenEBMjBNADS29sU15CvyNkimrOobkGpiBKodaB3I+R8ueDSFwr7ak2ksD6VHKmXBApoLjHwz57UseFb7xp/lsYyeuOcUm0PHkrg0BcJVIXIORUkQDRcdajdR5Yzmn2528Z4osIQhgcg0qffGTk96bKy54agbVTcDz70AJcsQ4I54pI2Zgc9DSgbs5NMHysVz1oGShSo603JVsmlMbom48iowXbkd6AJi6FQTQr7GLA8Go2TMfXn0piGQjBAxSuA4HMxc1I0jsR6fWmIHEnzDg0rksx28YouBIELc7jil4GB3pqOAMc5xRuBUEdRRcCySRAQw57VXAGzOeRT5bgvtA4xVdWIkIbpTuBJltpwcn0p8DNIhDDGKdsyu5QM1FGSJGDUASbD5e7qQajJy/A5qbcBwAaYR8+etAEEyyZzjilDL0JwRUzv8vaoiAx3EUAOBRmU5p+4o3BpuU24C81ChPmnOaBFwSMzLwMUkrbjhelAOF5NQ7ihJGSKNwJCMY7iknUOoK9aQSbhn1oBbHXiiwHNiMy4MgKx9l9frTnfAwoAFPkfjJxiqLSPK3lx9D3HevIbUdtz3Ur+gkkpd9qcnvViCBYVDP19KdHCluvIBf0oeRV5bknoKm1tWNu+kQkcHmT7uelRLb+cQzLtHYetTRW5dvMlPPZewqwSEU5I+tLl5tXsHNy6IhS2iiBYAbvWq0kHmvv8A4RVgky43AhPT1pX9ABj2qXBNW6FRbTKDWobPHNQvbDG1sEHqCM1ed9vygZbPT0pyLgc4J7muWVCLeh0KrJGJPodjOVY2kSkdGT5W/MVSudDtnk3SS3RYdP3xP8663y1K4xVS4ts5xxUVKVSK91hGpF/EjlrjQ7ecqZJZjt9Gxj8qlbS7aZVEvmShBgBmNaktuwb2/nUBVg3PArgnOstJNnTGMOiI4rW2hRVSFAF6Z5xU5GPQD2oUDNP2AsPasJSb3LtYQDI56UuRnAGTTcjcVFSRRtiklcd7CgdD3q3aR87j2qFIiW6VdRcDr0rsw1JuV2jCpKysh+STnFGODSgfgKUn3r0DnIzz3oxx0px9PX0o+6eTUodxoFLjJpTzyKXGKYDAMZz0zTuOtH3hS4wPrSEH8PFHWj36UuM00hBtGOOKXGeKUKc0rMsa7mOBQAqjnFV7vUIbWPlhurO1HXI4YiqHn1rgNX8Sl3ZI2LOT69K7aGFctZ7HNVrqOiNzWfEAZmw+fQVyd1etK3mTNgDkLVOa6VAZJGLOeQKy57p52y3QdBXbbTlitDjlLW8ia7vGuCVHCVRIzUg5+lLjAq4xUVZGLblqyNGMb+orVjc7B3BrKPXpV23kG3GabBFxHaMggZU9/SraspX5hkH9KopKOcd6nV8ADtSsVcuxyNDjJLJ6iriyI6YYbl/lWekmxeeVPapF5OY259DSBstZdMbWLxn8xVyF1YA/qKpQMOc8EdQasjMXzDoe1JhFdS2Qe1KvzdRk+tMjkDLx171bs7cSzDPCD5m9qTdlcq13Y3fDOmm7vYIMHDHzJc9lHb8eK9MkcHgZwOB9KwfCtgbaxe8cbZLnhc9Qg6VsvkjrWtGNo3e7OatPmlpsiRh8lMHSlYnZ1qNSxHIrQyHHpxSAjHNR7uaXNAFkHjimA8+9LbkkkfzpHGGpgOX9KcMk0wZ28U5Dke9ICRQXJUUgXBKk800Pgnnmm5IJOaABhUqjGKjJBX1NIh55zQBMR1xURqZSCpxUTABuaAAYZeRSdKOnGeKcT8nTpQAmMnihm2io9x/hpC2TzQA8N3xUmVPUVBnaaXeaYCyxp95aZu4wacDkdaibOeBQIN2O1MeQgnC7vpQSCcGmZA+ZeooGVpScHqPar2mxf6OG7mqNwxbtWzZoBZKAMGgBjB0bjkU5dzqD3qUseVIGajGBkGgBduB1ppBzmpcYwaCy44GaBEW7jpinjJA60hK446+lICaEA7ZzzTcDbyOaeQNvLUzzAOOopjFyduAcim7WJwTipA6Acd6YznGMcZoENEjI2CcigurHIFNz8xHalXAyPWkMXIBqGQsXzU4Abg0xxlen400BWwTnIFOiUNkkVJsA5xTl69MUmIQDBzSHHPepQhZsDmo2VkcgigCIQpyQOaFTZ16VIvDHPQ0EZ44/GhjHNErJuU4xVYnuamDEgrUO3OQaAJYceZjsaSSMq7AdM0xmKsuByKnc7xnHNMCMJlcGmINmSRxTzkdOtNOSMbf0oAGiSRCR96o3iwgGOakUBSCGqV1+YE9KGBTC7TyDSHduyBVw7CPu81GU5yKQDd7+XjGacseVyeKdgtxjGKcARkE80wK4BRyT0pdgZflp5GG5+bNORG5xwKAuNRTnmgL8p4x707JBGDQ7biBQBGCM80piVfumnmIM2BgD1pxUIuMc+tICt5TF8g8U+RckECpPujnmmg7fpTC4ifIwyeDSuil9wPegx5ORShMckUIBwIx05qJic5p7gkDbmpCF2epFDC5XdGI6U3y9yYJ5qUsRjJxmgct70gI41KjI6+9ObO7PFSmLZ1pNqt96gBkR3N83aiRwW46UvlEHK1IioPvdTQBCFU/SlCDJXPFTNGGIIGBTJ0C9OtAHIsXuW2qCF/nVlFS2TCcv6jtSswhXZHye7VX3MWwp+b19K8f4dep7/wAW2w93w3dpD0FSwWxHzuAz+vpRBBs56k9WNTyTLEuAMnsB3oUXvITfSISMsac9KrEmQ7n4A6L/AI09lO/e7ZJHA7Co3bJ9jRJ3CK7CswOOajLlmCJ17n0pm4udqfifSpogBwP1rO9zS1lcYsRQkA/N3Jp6qalCZ5PFNIIPHNPlFzXFLYPrS4BPPNJtwKXGBRYQySAMOOaqyWnqAPwq8vQetOLccgVnUoxkXGbiZJtOOBioniI4Ga1yokHHSo/IzziuOeEXQ2jXfUzIbcs3A61oJCqKAPxqUIB0FG3JyaqlhlDVhKq5DFQenNO4B4FO9BnPam9BkVva2xF7gePek7CjGeRSgYNIQgQA5Oc5pG5p/Ug0Hpx1oAQcD1puM9etLg5znijknH60hh0wKMY6+tKBjFKBnJP50CGqMsc9ql2dSeMVVnvYbdclga57VfEyRRE+YoA963p0Jz2Mp1YwWp0NxqUFuh+YE1yeseKYoVbMn4Zrj9R8VSz5jtwf94muemnLP5k0m5jXoU8NCG+rOKpiXLY1tR1u4v2YISkZ7561jS3CxjC/M571DLcs3A4Wq3eupQvucsqnYsrMZOHJJ96XFVh61Yjbf9aco22IjLuPBFOB4pvelJqCxDipLM4ZsVCx4NEEmxqLBc0cY5FSJJgeo9KhifcOetDHB4ODSC5dWVTxnr61ZiBXGefSs1Yy5znB/nV2CcrhGxjpQylqaK4f7w/GpElMZ2t8yH17VWDAAEHj1qVTvOB1rOxXkW41wQwPB/Wuw8P6Wb+7hthnacSTtjovYVzWl2jykOIyfm2xqP4mr2Dwzoq6ZYpFLgTy/PKx/lRFc8rdEKb9nHzZoDYi+WowqjAA7VGQcHFWryKOOUeVyO9VcMSe1dRxkw2mJcDnvUTnawAFOQOBg0SRsSDSAixub3pjq6SDPQ1L5RzuU1I6O6DOKBkaEg8Gn4wck0CFwO1AR/SgVh2aTPOcUoRu9KqnnigB0bxjJZckjimMcNnHWkKt6U9QWTJHIoAjJ54p69eetNbOeBTVLg8oaAJx3Gaif7wpEd1b5hxSSyNjITP0oAXNOB45qAm5lUCKPHrmmNFfpzhSKAJ26+lN785oWRzH+8jO+hSx/gNADh1605iCox1qEyEE/IaYLlc8qRQBYxxmkIySM9aImZxkggU1w3XB60wI3TBxmomVgDgVM8n95TUaSqxKkMPrQBCJPmVAgOa2YztiVSMViJIouhwRzW0TuQEcikANuByKQ44yDk0qv8tBBPegBwHrTGiILFelIC6nANOzJjrx6GmBGcim7j60rZJ5FM289cCgQ9iCvWoZGKlSOakO0jrTkZdmCBQMjKkEe9KwYUuRnrRu54OaADYeuaADnk0uSRg8005XtQIlKkimGM7euKASw4PNRszE/NQBIpAODzSBiHpAQAMUbs0ASZZGBFNOWYsaA5cYHUUFiBjvTGNZScEUgwR71JuxjB5oIyc9KQiIg7gQKaww26pgwB5Io25PJwO1CAhJBxgc0ozuFSMMHgZFOHTOAKYDcj0pVAJxQQGTPX6UK6gUgEKRgHK89jQCGUegodwQeKciqw460wBduCMVGVweBUmNrc04le1AEI69Kc+Dginpu9AaQj2ouBFwJAT0oY/Nx0qQqMgkUpCgcCgCHnb0pMYwQKnGMZFLjFADQgcZ6UkkT7RzkVJv29qeH29uD2oAqsu1R3FDAOOOKlZ1JORxR8hHTFMLkYXtTtgxkmpEZR1XNIXwT8tIZCU7g0qADIp4kAyDigbc5AJoERm3SVcN2p0cAU8HgdKkDAHkYpyODnA4pgRyxlhgHmkhjG3D8t61OCvpSbhv5HFICMgg4HSnMisB8tKxB7UeYQMECmBHgj5aHjyOak378gjFHGzGM0gOJZixKoeO7VNBCMZPC+/elWJVTLjC+nrTHnZ2Cr+A9K8VJLWR9BvoiWWfbhUAyegpiEJ8zHLnqajGEz3Y9SaYz8Z9KTk27lKNtCV5eP8AGq5ZpDgE7e5pOZMk8L/OpVHQdKm9ykrBGMD5Rj61YjHT3pqqBzmpAD0/WriiJMcT2pdnelA5p3IGMdaogjOM0p4pxUZx3prt6DBzRYpMjYgDI60gBP408rnk9acgqGMQIAP6UpBJqQDJwMZoK4wcZosK5Dt654NJt9elTFeTTdvBHepaKTISMjFNwc4qQjmk6f41DKRHilC85NLjPPvRkkGs2MU+1N3fL05pQOOKRmRFJZgBQtdED0F25GAetBAUZJxis661qCEbVPIHWuX1PxbFCG8ycDHYGuinhak9XsZSrRidZcahBbqfmyawNR8TpFG26VUA968/1HxbPdErbgqv941z891JMSbiUuT2Nd1PCwj5nJUxTex1ep+LzLuS1y3ua5m4u5ZmLTyk+2eKotccbUGKiLM3JOa64xOOVS5Za5wPkGPeoCxbk5ptA4OKtRSMnJseDmjjp3pFp3UDFMApyOVORUYpccUmBcDBxkUwnH0qFJCpyKn3Arkd6zcTRSuIcEc0zoc048Co3fPAoQXLtu/GKnC7jmq9t8qZxn1q2m081LGiWIkdO1WPkcejVVBxz0pyk55PPapLLMUrI+x+ladpbyTTIq/czlm9BVG2j+1usWPmP8XpXaeG9C89gM4hj5ZifvGsqkrLQuK6s6XwZpSiVNQmX5I2xEpH6131ygErbTkVhaYvlWSIMAclQB6Gt+UnarEY3KD+lXh9mjCu7u42GHzsAnHvUr2gj5ZvpTbQ5lAPSpLtgJVUciukwKj53fKDU8kWIlYuM+lRHmXAH40+aNoyMkGgBi/LnjrTQD64/GpQNy9KjJOfekIcFyeDSLu5GaEf5qcCpzzTsMTafU0gyBTw6rnvSBgeaQDctjrUgX91nPJpEdN+G6UrSLk7RwOlAEa5AbOQaQyFhipC4K9qj4INAhCCOaDJgcGplhklXIHFRtHtJDAigYglcdDQZn9abweAaQJtzubNADg59aRXYNkGk3DpSZ54OKBE4mzwVpWSJ4zwA30qudykeh704oWU9c4oGIgkZCoI4pwWRUO5hmolZkUDPNBOf480wEMrqO1VJ7pxngAj2pbt8Y2g/Ws+WRnJGcGkMYsslxeRITgFuTXXDyIo1GD05rjbQSm+TK5we1dULjCAPHx60ATGS37A0B7dumQarAq7/uzmlf5DnFAiY+SSRuIoVoAfvsfXNV96bsj8qeGDjOAKYE+2B+Q9M8uBm2lyKZHGjEnOKXAzg84oAZPpjg5ilypql9ivvMCh/kJ9K1xc7Bjbmo3ndyOce1AEP9neThppTg+lPNrAyZimO6pGYgfNyPeqqYjmJzgUAILffkmcjFTiOEpzMSaYQC5weDSqgxjjFAC/Z4m+7NihrD5CwmziicrGBhcioUuH3FSNqmiwh8dmrrv8/n0p62iAn99ioUVgxKnIp68thh196AHraIT8k1D2cuciUEU3IU/epxmG3G7NAxRaE/8ALWmS2cw5835aUhlGRyKVpi6feoAj/s/zFys5FSLYOYiBN0pqNgbVahWdCcmgQi2c7fKso4qF7WZJtss2E9qsxy4O4NT5GSbBPUUwIY7YJkJcDB7GmS2MxYFZRtprxxtICrcjsDVhJio2leKAGGzkwNsopFsJjz9oA/GnN1yDSRoNxDucGgCGa3vFQskqtj1NQ24vJDiUqo9qtw2qR3DbnOw9MmpJY0AGCPagBPskuOJQRQbaRuBKuajWXaCpzSJGwberE/jRYB7WtyBwynFRBbgybGwvvV5JgeDwfeq90dxHHTuKLAILa6UcEEVVmlvY5VTygV9au293sG1zmpJ2Vk60AQrFOVz8vNHkzDHzKTUMkpRNoYmlt3LjluaAJmhlHXbzTvsUkq4LBaYWzlSTkUiuf7xoAd9hnThXBp4srg53MM0JJnhnNSeayjhuKLAV20uVz8z5oaxuowPLYfjVhbg8fPQ85Y/eOaAIja3LR5bBb2potrgDoARUhmlHAcimF2K4MhNACGK5GcKCKVYrgj5k6U1RJuP7wge9PWR0ON5xQA0x3P8ADHxTxFcFRmMZoaaTHD8VE9064XeaAHC1uiSePzp4trgckCoI55fN27zg9KmYzkECU4oA4uWR5HwD+PpSKNq4Xr6+tGBjHSgcdBzXhXvqz6RKysDnHrUapu+9xntVnygfmYgtSBaAuMVRn2p4+U5Io6U5YyTlulNIlscvOMjFTKABSKFxyafx9ParWhmxRgU7Hc0mMDJFGc8djTENY+lMCk9eoqQ9MUnRcZpXGhh4+uKRTzSt9BSAYJx1qWy1sSqeeBninAcAmmLkA880ueOvFMkGPpTDxj+dOY01gO9JjQxiKZ707AyaMfxEgCsmaITr0pshjhBaRgKz7/WobYFYsM46nsK4XW/F0cTsPNMjk8AHpW9LDSnq9EY1K8Y7HZX2vRwqREef7x6Vx+q+MYYhh5i7gfdWuJ1DW76++9IY4/QcVjNMiscfO3cmu6nRhHZHHPENm/f+JL29YiMmND3rFlnG7MjmR/UmqjzO/BPHpTABXQovqcsqlydrhm4GAKi3dyeaZS5q0kjNtsdmlpuaX8aYhwp1MH1pwNAD84FIDg9aTNBoC44nnIo3U0HilBFAXHZ4p8b447VETxQDk0NXC5YZqjX73tTlO5cGkAwah6FrUv2x2nnoankXByp4qnG+AB1q1E+eGrNo0v2Hq249aswxmVwijcT6dqhjgMspVPX8q6fw5pK3usw2CfKZEaWR8fwqOaznKy0LjHqy1oOjNIMIGMY/1kh/kK9DsYI4Gjt4lwmAoFUYrdbGERRgKvA2461qwxodUhKgnZjcfQ1yptu5cnfQ1LeN1t13LgrkgV0RUBUWVSDsH8qy4omkwAh7nHXrWnK0ypHOyZUqP5V1UOpy1h1nCskx2D5V65qHUYJIpRIgJWprOU+dlVwD1rSulDQYC5JroMTmjJM0oCpkHqasvC7YG40N5kFwqHgscCgpOs2CRTAtW6KF2kgke9VLtQsh2Hipo0XzD8xBPrUVyof5FxxSAroHdgv60Orxtt602MskhU7uOmKHuyG2svzGgLiqSGzj8KkCORuHHtVbbNI3y8Ad6spvAG9xjPNANgybxleopwJEWCvzU+aBkIaFgcjtUKXUkcyo8e73xTC46OKXcAQMe9LK6I+3PzelWZ5HkXfGhCjqarwxR3EyyE8g0ASxTyREDnBrSMaTQcjnFJ5aBgGFV79hCmUJAoAoyRYlKoueaZPE6KGZTike8hSLMTEydzio0vJbr5GIX3pgLHKN2Sox70O+AWAyParC2cUhAaUdM5FU5pkgbygcgnrSAdzMuGchR2p8G5d3zEjtmnRzRggNHlSOtQl8SMFBK0ANmSSQZGQPWoorZlLbpcqKsGQbCpNMVEPyAnJoC4x/mXacYFUJlRTnHNX5LWUPw1I9uFZN43ZPOKAI9NXAY7eexrQOdhy2WPanXCxwpG1rEenNRROsrnzDtNIdxoMkWSFx74qRVfYXbJpz36IBGRlR3prTCRDs+VKYXDYG+bOPpQrKQVx+NRRZaUAHINWTB+9IDdKEIYqnkc57U7EijJGKTa2CQentSfvMHccimwHFv7vNK8mVGBzTUU7TjvUWCSQDzSAsiQqBkCkdUk7VEsgKsGUk9OKaVlC7lBANACurw+60E4x8+M0yVLiNeeVIzVWKYtJ05zjmmBtwqskPUEj1qnceWDnGTSwpMo3FvlNQ3Me0fMaACJyCQoJ+lPBY/wBaLK4KK3ybj0zUnmbSRwM9aAIigbkHJoZCqbguKcCkTbhzRcOZYzyFHpmiwDo5HaMdOKMDd0xVW2YqcAk1NITMcBwpFJgDsqMOR9aXfuXr+NRyROcAYIHelmIjgwAM00AqlOgODTbid4sbU3fSqaOZflJwasQzeUfKkyeeDQA2OQIxkcHmrH2yNyBnNRy27STAD7p61KYUHCJjHegBxYsvHFRvIR93mmZYZjPenxQMoIJ5oArRXMlwWU8AVLGpUHL5P1pPs3kyb88GpDErOGHWgBY2bkdqcPkfIbr2qUx/uTtHNUyuWyetAy22celRbz0JyKVSXXGc0x0KZoEKIfMO4NT2JUbWptuQXCk8mrN9b7Yg3fFAEClNpBHNRJtWUleM0qqfILDqKgRsyZ70DLmDnp+NJgbuDT1YOmCeRUIbc2MjilcRKU96Qhum6oS/Byf1pqO44PIpsZP0OKGznimeZyCakLDrSuAza5X73Wm/MjdD9ae7Y5HFKWLL1FFwCNwwIJ5p+OeuRUaD0GaeQ/pxTAU/KPWkYAJuIGaacqTk4oLBlwDQhEDyNu+ReaniEqcs2AfWq5l2nAHNDzyHAzQBzJ6gAZqVF2jOfm9aaFCj1zS53H2rwUfSMkBz2pcZpEXnFTBMcmrSuZtkaoPrUg47U4j2xTgADjvVJCuIFHXmjgdTSkhRgnJo24+amIbyeDxRjPYYFOIY0uOwpXC4zkjk0vPf1qTApQuRQFyEgdO1Nz2zUjDnimFcGkykxM89DT+nfNIPl7c0o5470CuNC5bnoaU4UY604Z6VFcTJbRs8jAAVLVxoimlS2TzJWAA9a5fWNfURMWfy4h+ZqLXdYVImurhtsQ+4nrXmmpalNqcrTzuY7cfdGetdVKgormluYVKt9IlnVvEE9+7Q25KRD+KuelnjhJwfMk9c9KjuLsyfJGNkfb3qma7Ixb1Zwzqdh8sryH5icelR0GjtWpg22Heik6mg9aYhaKQUtAAKXNJQaBDsilzTKUcCmA/d2pcj1pmeaAKYh4PNApoGaetACgZpwGKTv9aU9qChwOOlOJyR+lR55pw5wpqWhpk0eSwHetW2tWkUgkhf72O9N0/TxhXdtwboO9dNa6euPMldRt6R1zVJ9EdEYrdlbTrNQFDf6oH5j3auotr4QDNsjRELs3ADOPTPpVUSBwqK0KqB3UCrMLMg3LDEzE9V5rEbuy1FeySH55DnHG4kfzpYr2Tvucd8OaiM8TN++tdrf72Kmge1JCq8kYznkbh+dAi3DeoGVS0yZHBVzW7ZatqcCgW2pvJH/wA85MOPyNYa28ZB2shY981aWLy0464xx0pptbCcbnW2fimaBgL2wQj/AJ6QnafyP+NdJDrUN7AJLRw7D70bDaw/CvOLa9aP5WIYe4zWpbuo2sMxsfTjBrSNRrczlTT2Os1IvcpEVGJM9aRIVtij3Mh3GqdlrB3LHefOq9JQPmH1Hf6ir+pulx5SA7twypHOa3jJMxlFolvWtwgKsOR2qj5W5d4bBFQPbSpOsTAjPSrduUt5GW5RipGBj1qiSi92sZxuBNMaVZDvUc96iuIYI7kM27aTnFQSXCC5IjyF7UgL6zEjHSpvl2cq2TUltYBY1kkYkv8AdHrU2o6i1vGIDbBGI4J70AQxtJE3TKEVXSdzdlVQtj0p8hnMK/7Xp2q7pFskVwzCTecYbNMCstxcPuiUEIeoxVy3t1h/edD6VfNoGk3KApqrJkSkDPH5UAQvM8txsUUXsTNEoJqbarRkqp3+1KsbMmWkUY7UDKDSQpZmFkAOetVfsayDcr7RU15ay796YZR1qCWdhtVFx65oAfFavJlEkBIqrPaMhy7cg1o2EOCzhiCahubd2kY4JGaAKaSFcDO5fSrUbqDwKr/YmD5B4qb7DNs+Uc0EjXWPf82aaEHnblkCgDvV5VSGNWkjzjrmqd2sUgLRkbT2FAxIriQOd5DjPatK0ubNS3mpuJ/HFZWnQkzhzExTvmpLyJjdYhX5T6UgJZphNLJ5HCD1qmmx2fccU2K2eOdjJnZjJoVoEfccnnhaAHJEJAQrE+gxSiJ1JD5A9KnsLiP7S21NvtUwBuJHJPINMCCGKURmRCOOKcb54Th1yavwKDasARgdayLpHklyvrQMux3Uk0TMI9o96bHK6g78YqLM8cIQjj2FMjklaUYA2jrmkIsxSFslFOM9aVPLVyWBYmmyXTQRKwT5c8017tJZd0cZOR0phcFZ4m5Hyk1JI0gXk/LSb3YqGjxUV5Jt+Q9x2oC5KDK9qQFLKT1qMptXPl8iksbl4VETA7OvNR3d4RN8vK55pBcclzKz7WO0elMkLu2W6ClTa67h1qCUTB9mcCgZbtJGEmcDA9qmZIJZmLPj2FZ1u7W92qHkHrmte4s0mw0eFOO1MCiRGrbQScUwqZGKE/Tmpyptj8yE0q/vgjRxHcaACCABuBk1HLCoPyZL56VdCyQIQQofvVZIpzcbgmQepNAiEyTo4DL8uOcVIlyqkbk3LU09sBEzDO88dayGWYOYxnHrSuMs3EbfaVeJQEJyavMsEkav/EvpVOMN9nCsSferEEawx7j37GmK5MHYqGRcirkcIcAnj1rPF+UO1Y81JLqGVC7ccc4oASeDyHL9R2qHzstg8GpoblJlKt29ajkQby4xmgLhM6uiru6daiaVYU3E5qvcW8ryB1PWl+zOybWai4XLMOoxFscjNRS3Wy4wV+U9KpNGY2BzU0rB2Xcc8UXGWjMiHIIwe1V5LiSVsIKaHjlbPRVHNBvokB2gUXACHjG8nmrdrqqbCk/PYVmtdCUNnI9qzJpHD7gcUuYDrPOtyjYYYPaqM7RRxmSPqKx4JpM7i2RRJMzqT29KdwuaNtqG4ZK06a+t1JPc+lZ9lu3YbgGpZLAvI3PFJXFcvRSJKmWYAdqt26BuA4xWJLbOgAOeKt2xSNQz7j7Ci47mq1uB1cYqNnjGV3VUmvTLHtRdqjvTTtWNWLUwLTPGigkHHrTjPEF6VT3l4ydw2D9aj3cAjmi4y4boj7i8UxruRu4FQowPBwCan+yJ5LO8iggcDNFxEXnA53E5pBJ6ZqLgNxyKAG69qAJQT1zQJdr5xUZcDgmmNIB7UahcyQO1PRST0oSPJzVhECj2rw0rn0UmIq49ql7daAO+aXHv1rXYyuJk9hTSxB45pxHZTn3o24AHU0ANxzyOtPAwOeTSgdPWlHWhoGxO1LilH6U7FKwgAwp5oJJ49KOoxR1yaoVyMp82RTSvv9alPApAOuemaljTGgZ7+1BU4+XH1pep6VIq8c0h3IvljjLucAVzGp3qzxy3c7bLSAdz94+laOr3T3My2Nu2CfvH0HrXnfi7VUv7pdIs3K2dvzM4PWumlBRXPIyqSbaijn9a1V9XuXuZSUtI+EX1rmbq6e4fn5Yx91RVnULsXMuyIbYE4VfX3qgRmumnG/vSOOrLXliRk0gHXNOI5ppArY5xDSUtJTEJ0pKXrRjA5piCijOBSE0AFGO9JS0wClzSUvSgB3agdc0maUdaBEgoHBpAMincYpgOJFOHSmqGY4AqzDbFzjG4+gpNpFpXIViaQ8DA9TWnZadJLzGueeXboKt2unKyq8zfL0wvatpXSCNVVV2jg4rnnUfQ1jFDba2gtYNu4vMeRuPA+tX7fULUzeTcQ7GUj50PFUw0TowVACecmnxxo6bWIZc7to9axeu5e5tRWVneD91fRhx2kBFT/wBk30OGjCyr/ejYHNc5FFJDIPkZgAWJAxitK3vJVA2yspPQ7uKmw1c0JJLpciW2fcOMmnI5VGaI4HcMvSrlpqcjDy5THcp6N1FWPskEkZaNXhyeVY5B/KkBnRXUiHk789zWjDOyZLEnPTntTXsGjXhAUP8AF1x+NNW0mQHbJu9VPSnqGhoJJA5weD1zWtAFlQbJOR2rnljZcbuCORjkCrdte+RKmELp3OadybHQBnjZWBzj/PNa9ncMiIxA2DkcfdNY0TxyqNpK5PTrWnA3kBSARkZOen1+lUnbYlq+5syHe6Tyt9PStASROgDYJNYySYiMRIMbHIz/AAn/AArRsIHIKuQK6Yy5kc8lZhPZ20nAA3etZVxprtLgIMeoro2hhgAJBZjVVriNJWRlJQ9KYiKS1lSG2Cn7nIpl1avdzL5zcirTliihDwOeaqNM7y8t+NAiwIkVQnGAOtSwwQRoSvDHnOetV94gBJyVPWmfafmxtJFAGiHPBz0qJtjuQ3Ge9JDIknBwox3qvcSqGwhzg9aYx7Eo+2NxUD2p80OXxnrSRPtm3sMipXEkw6gr2pCHugRAyfd9apNapPLuxVw28mwRu2M+poVWUkbAQPSgBgVYhgAUx4y3LHaKpS3flXbZRjk9KvxEywFn4HagCjNaO7qyvhM02a4ltJkRWyp9asbtzFQcAUs1mjqHY5IoAsAxzxr5oxkdqgOkxCQOnTrjNLHDJs+U5x2FK05idd+QKALcaeXGwaP5SO1QQQnzmJUY9Kc98HACjI9KUzoi7grFj7UwI5LAM25+UPXFV/7Pje4O1cRgcE1KLtkYMxwPenCV5pAqMAOuc0gI47KK3fKDJPtU/lKrmRQNzdaUOwkOWU4pPNVDu4YnsKAuVriBktnMedx5xVSzOFHnAbz0FaN1MY0zjluKqQossm5lwR3oC5c3rKhGMMOlUTYytLvw2O4HSri3CLIIwnI6mrAvwqkAZ9qYFE+W8JjccUlvZhDkcVIIWkjLkYOcgU1byWFtjRjA70AJLlTkDpTNokTLIAR3q00ySpnFZU93IJvLHC5pBcWUynhU4Heq8sLCHOOT1qea6kjZYwu8t0xQ9ysK+XcxMHPtQIr26FcbjgetaE0HmopXn6VXgs4by3kka5Ee3ohNQW91LBciISYT1NIdyx9jBnWRhgirzybFAU4NVJ71d4xhvek/tFEQiRAxPT2p3C5baZGVfMwSPWnLcxpGGRhvHYVQd1uLfKnkmqtwkllErMhG4cHNFwuWXupbi6BdSAT1qSS+ZZNqtjHSufGoXH2gDPArQBIkWQjLkcClcRpfaDs3ucDvWZLdRrM244Q1pQqtxEVnUqRWVdWUz3JEUW5R3zTAkTVol+VIywHtUovTIuSAp7A1AltLGAHRR9KnEcKFvPOcjikmBEk8rsxHQdxUcl4FGD+eKme0mt7YvE48tjkjvWbnfJs6570NjNTTGN47BCAQOppj+fJO0aMSVPNSWcUUI+/jPUiobi5js5n8l8k9TR0EOaSQKQrY7VXa6KOyhjinw3COjMysz+wqg7ZdiVIBPpTuBcikRoiXOTVyK3lu7R2ghJAHUVkIC4Kr1xWhZ31/ZWTxxOoVvUcilcdzJdpYnKFiOelWQiRxglxk+tNnsJBELhpCzMcmmJEzLk9vWkxEgKb+G4FMljV+nTvUeAxIDBasrZkxFzJwBmmMrblRcVLFmbAC1UI5GCasW1wbck7d1MRf8jYo4ORVpNxiOO3TNZv9qZ/gwaX+0N5xt/KmhEM8t1I5TJ/Cta1jEdkGkcFj2NZ8tw0xRIk+djitGW2a0WIXC4BHTrQxozZ7ohtiY680omnlKoU49RSXiwGceWjAd6kEr2+JAp29MGkO5IGRFIdjk9qniELQkg/MKdb20N1GZpGxntU8cVqqlR0HenYLmfJJ5PJ5z0pI5PMBOwnNW5NOjncYc7afDGtmdo+ZaEBnNcNGcFCB9KeZdyjmr8jwTEh1FRbLcYUMB7UwKRUlutKwzwQa0F8lV5T8cVH5sCvkJmgDORPwqYIKUcdaXIwc15CR7zY0j8vpTSM/0p/LfSjAxx0oZI3FO4A4/OjOOKMZoAMcUmOelOx2pemaAEHy8daXvSc5pwPfvTAMAdaaTS9RnvRj86BCdqC3Y0rcUwtn0qWMcgzTL64FnZvIx+lWI1rntXmOo6pFYq2IkO6U+iiqpwcpIUpJLU57WdWbR9Glu2/4/L35IgeoWvMdUlNrELPcTPJ887Z9e1dJ4g1dNT1y61B8GysRsgTsT2H9a4aaV5pWlkYs7nJNdaXPO3RHPN8kLvdkLHJwKaR+GKfjFMPNdJyWGGmmnkZNIQMUE2GGm4pxGaSmSNoPSnGmE0xAaTvRRigQYooooGFOptLTAcKcOMelCqTVq3s3nOEQvj0FDaQkmyBQSeBVq3s5J3CIjOT6VtWegLgNcOev3FrorZIbK2/dKuzGCBjIrGVZLRGsYdzBs9A4U3EmF/uqK3EsoEhESRqEBzlfvUv2qMr9w+2RkUxpWCFtqgHpg1g5NmqSRBJam3zKDmNm4K8/SmL9mZgHmwfXrVi3aaKQyRNxjrnpUNzaRuC23DF8lu34iheYyPdCmSGkIz2pyywrIN2UGOcHJqFbYqWBc+WGxuHQ0z7FIHwfunvRoBsLcwsuCzFcYz61IIYpxuLbZDjnd2Ht3rIELRYT+GrKJKkJwFOehBPFS0M0ZHa0YFRlGYhXI6n2re0+4eWItMTtA65xXNWdzKki/Idy9MjNbcEsxg2LGBHGpZ95OT9KloaN61vIlBCoxbuQ/b6VfjEM5AGFJ9uKybT7SrIYokAx91mx24rRE1yW+a3CbRkhGzkf1pCZLJZODvRsgdxyKri2KSEEAA85A6/jV2LU96gGCUL2YLuP/wCqtBFS4hAL9skj+opiTMyG5aJdkke5exx0rasLwMgibJRjx7Vk3VncJjEgI6DPeoLS7mtJ9kwCjIIO3Gaa8wOudR5Izgr0yD0q1Z3D7/JZzu/gOetZ9rcRzR/KQVPFTxxEgoTgqcxmrjKzuZyimrGx9pmBPmjJHSoLeXN0S65UmmW6Bk3lxuI5UnoabIqjLBsA9xXRe6ujnem5oTB85Rfk9jVaQorYYgGqQmmtyR5hYHvTJZlkG5yS4o5iblxbsSr5bnlelMEz87QGA7VRXfK21Bye9a+n2bR253jc570JjIjkrl+B7U1bmDaF2/NnrU8wMcBTAwepqkFiijJzzTC5dcKEIRgxI9ajErxoN3y0kXlmLzQ4B9KajJcuUdwG/h5ouFy0komI3SZP1qWORIwQDn3zSJYhQFmAA9RVe9iSNAI5AMHkUwuSXsSTuoBUE01oytsUHIHU1Ra6gFwuQ20d6n/tFFlWIKXRjjilcLlxbaKK0DjljUXmg/LTtUkCQxrGSM9RVMeZHGJBg57YpgaFrNFBvyRkjgGmAi5y7REY4y1ZV1HeQxCYAcngVbjF1PbJk7WPXFAXNAeRFHwoJxwRVeSbz0+5jHtSRTIhKStgjuahkniBPlSjPpQBBOsUp2549BVcxMgzGTgepprqUYt3JqaNWZguM/SpbEEEc7Z8wbQ3vUi7rZsA9Tnmr0g8xEVfkZR1qlcRTsuWKkDoRVBYnlc3IVsrgUsqO0AESjf9KypVkKoI2CtnrmtO2kmJVpJRhRzikBTkgu4j5jrgn0NSxs0X3h171bD+YWUMSvrUUqjjacAUw2G+fN8zgnZ6YqKS4fyC3l89Pep0lGzYvX3rMuftsV2ijaVc4XjpQBct5ZGfy9hxjJzVWYJLKVyAQelbllp8kY3Snc5rJu7IfavMVtpB5FACWmnyveGVZQpQZXcOKWSI3QkedgbgnaoA4pWmZXzu9uKuRhWiGMbuuaQGBc6dcx3Cq4Iz3FVZopYpNvXHetyfUZIJDvAlxwBVC38y6umkZMf7JoYFjTIIruAmRsOvQVnXbul0yZAA9a0fM8piETaapX8M07L5cefWpQFd7aZLf7SJSFz0FaTie/t4BNLuQAYzUcNlO9qkfPPUGtFUA8uLB44qgJv7FsntMKwMpH5VlQ6bNG5BlztPFdBDItvuEkRz61RkkiCNIucj1oauDKayywMQzBiKsCd2C8bc9SKorfWhLGVsHNWIrm1Zdyvn2JoC5Ldyx8IpJbuaqPp8U0HnzXG054WoZWeRy54UH86hd1mI3KcCi4GpFBAIfLackEetYs8kVvLIFycDj3qeW0QbHkkZIj1qGeCO5Ypagsq9D60CJLGfZbMz8sTkLURCXNw2V2k9vSpRbrZ23nNneOxqs14C28KAe5oC5uWEUNnGxZgxbt6UuqzW0umqltCN2eWArGhui78jPrW0k0H2Xy1jwR1z3oAy7WJFUs3VvQU4bDGRycetaEMtvCRJIARS3qQcSxLlT2FIZh3jXUUah2+Q9BVSMs333wuea07hxdyBZMqq9KofZ2kn2RigRbTTFusGFsBRliajhRo4plyTjjmrttbywoTJuAxjA71JbIVjdWAG48Z609hmGqExFsHIpgkZDkqcGulSK2EOzCqehzVCdYChBxtB4ovYDPksm8pbgtwe1LJIgRTGB71sssdzaLCowvrVaTS44IWCZdj0piM+Od1ImK7cdMVYkvri5wzs0hHT2plvbyS53YCL1FS2zMjNFCu5j607gFv5jsHZcAHoRzWrd3EY04MYxsJxms9Y764JeYLDChwSO9WplF3pTRwsCi9D60AQx3UaQMFXOBxVa1uXa5KyfKGP5U9jbiFYlUiXHehbOV3AUYJ6nHSgNS9cXIUGKBsvVa5EkVorSSYc9cVlu8sM7AAllON2KmhiutSLgHO2hDuTxbJSN0hz7VLfvbII1iB8z+I1DZ2lw7FvL+RDyaVsvOzlenApgW7O8BAjkAIPFT6pDBbeVt4LjNZ1tbvLcALk85yK2b+3NxAo2HeowCaLjMokDk80g5HWjGOWpe3NeRc90b1oLEfSjOP8KQHJ9vegBy8dadj0pMdM0uSDxQICQDxScZApQOwpeg4607CuIelIBSgZzjigj0oAdkAAd6Q+tIKRmJPHSgBrt+NJGozntTT1zU0acfWs2yyHULr7JYSSjAIGBXCa3fvpfhKScZ+36k2yP1C10etSnUNWg0qI8A5kI7Dqa4PxRqkd3rtzcKf9C0tdkQ7FhwP1/lXTC8Ic3V7GTXNLlOP1pxbJBpiHPk/NMc/ec9fyrFyWNPllaaR5JGy7ksSfU0xR2rppx5InJUnzzbFC4Xmo2yakbuPSo8cVaM2M4H1ppGaeRTcVVyRhFIaceKbjmmQxpGaTFSEYphFMVhtIeadSYoASjGeKXaScDvVu1sprmby4YzLJ/dHQfWm3YEiqqk89B6mr1npdzeMBFGcH+NhgV0Nh4aSHbLdjzXHPljgCtdSu4xJt2joijpWXtHJ2grl8iWsjEtNDghIe5lDuP4O2a1jstxtWJFGP4RV+00iSQncWA9AK14NItz99N2P71bLCVp76GbxFOOxz0RMkZCgHP8WKcLWTcAFYg9cAnFdfHYwou1AiqBxgVKYxEACFHHatFl9/tfgR9cXRHHPYXcrbo7WUheMhcA0sul6k8YxZyAHnIXP8q67EbDPyle4qRobPapWNQ+Oqpik8ufSX4AsZ3RwbWd9ChZ7W4CggZ8s8Vaa42KFETHjriuvWI8eTcTQN1/dyEj8myKmeW7L/AL1LS9j774/Lf8xx+lYzwNVbamkcVB7nDeainOzIzkrjOaciRzRM6TbZCx2xHpg+hruJB4duF23UT6ZOe7L8pP1GR+lUrvwQZIjNZXMU6NypQ8fpx/KuWUJw+JHRGcZbHJJbqZCvCuBg7umalHmwj5lTb7dqvPp93aIYLq0k2ghiWGR+dLFbtPgIqct90kZx9T1rMtEtvhkVsptA6j0q5ZXMUcnyjdn2rONo8WWU8knK9KWLbEwbY288ndUlHRhY7jYxmEbGQMXY4Jx2q6t1MiBLjILAldp3HAPXisC3iWXklc54z2rd017Nbd4ZpACQQWJ5x7Gi5LRNFMkLmQFgSONnce9X0vQI0++Mnklen1qN7C32+bFuKrt8vact6Grht2IEkJ3v03dP1ouwLcbRyxANsePjJ7g+h5qtd6Zj95G4YYyNwBx7etVGnktrnfJG0TFRuYjhh/KrNrqBc5Rh5bHG081SYmiOEywMu4FQOpGTn9a3ra4SRlwwzjgjoc9qzJYgoM8DZHfHIqvHPt75UnqD096pJks6CeLfCyKSGXkEH9KrJI3l7CciprSczgSBssOHB/nTZFQHeuME9PQ1rB9Dnqw6liJYmhJfjHvVaQjOF5HvTOXIB4FPKMODgLWhhcjSdlkBwMCtq11AtCxUAYrIEakZc8CrEHlb9o4Wmh3Hy3pmbDKV/CoHGXwwJWtD91u7EDiql2QnMYxQ7jKxV0yApA96rxt5E4EzZzyCO1WxO7n5sGmPHHJIAIyTU3sIvTXcv2YBLkMPTvWRNcMZP4mPqKvLazbTtQbansrRosuYM+5qkxleyyrebcxF1x90jFOQSNdI8ShU3Zwa02mMmVKLuHHAojiCMH4+lMEixMFngzIMtVa0B3bGHy54zWi8kIjAbaDj1rNnuYlRsHntRcYuoRzoDt+YegqOyeWU7GwpFRJqEKrjDs3epEv448nySCe9F0IfqELEALgnuayJ7YI4Ktgkc1ffUgQ2xMt71nB3kcu5BpNg2TRAkASEH3NXkuERkSNMmsrzQThj09KkWYxHKfe9TSTA1RMi3GyRSAf0qyYPOUxpznpWAtxLvIJ3Z7mrUcojBZp2B7bTVXC5fuLGGGJQykN3OapRQsJsoSY+9V5r25kjwzllHc96gS5uGXYr7VpXA1yjjiBhg9aa0DMnzSBcd81UiuEjA3vx3NVri4WWXEbsRRcC4kscZJxuK0+S7WdU3IFwevpVDcFTjrU6f6j5sEGkmBsafeT7yshDRDocc1WuIHkuZGXo3IzSRalDHAUaMqQOCKfCRNbtJ53PXmquFzMlUJIUJ+Y1fsQpXa5wQOuah3R3BZSyqw71RZ5VuCqtxS2EO1OBA++Bweear28zq4JIB9qJFyc5IPemhNxA70mBcyvJc5aoUmZZDtpjwTGMlQSBVZQ8b89TQBrQ3ohYO3PY05boyPvXAIORWWUbOSTz2qzCTEQ2CfancDekle5t/M2jeB6VnyIxspPlwx9qrPr7RDylj257017yWTaUYlT+VO4zOTTHlVmPykdqbsjSPbz5g7itZNwy5I2nrWfNt8xiOmakTLVt5XkDJyw55NNLxSSALtC9zVZFUoecYqe1S0P/AB8EgUXA0bmC2eGONZQ4J5FMe1jtX2xY6ZyKqQS20V4zfM0OeKdc3gluh9mUrHjriqbHoF9btPasA351zqoFl2tkkdq6RZPmCyHINV7y1tEn8xcZPPFITRHpYji+eRMtngVavhPcsEjjww54qAzrtiCxbVXqfWtOSaPcrwybm24OKaYGT9mlWMNKcDOD7Vdt3CRne4IXpVa5Mj2jgAk5JNUop8xEP+VIGS3l6sxIZAMdCKrWpZXMik7uxqJwCpzx6U+ElcHsKVxXNWC6YxFWI3GmzShxgZBUdazHl2zZ3DBq9FeI0RXytzH0p3GUmdvLO8nJPWmCT5c4zj1qy0P2iUByUXuKqPbyLMwX5lHQ0CLkV6Qg+XFXbK5j3fOCWrJi3sdoTmrccio/zLggUrjRoxQiW5bGFq7aWtqrOZB83qKwFuishLHH41OmppHkbs5qkx3L2uS25002lvkZ5JFYWmTzxqsZJMannNWp5ROpZAfyqG384EjYAvei4macssJmSQgZ+lW4pMglQMH1rGM2ydS4XaO1LPq+Y9kQAb2pXYXCeVzeHZFuQn5iB0pIY2t7qQxybEYVDFeTtG0YUe5NMuLlHhCg5kHU1VwuaMd/FBZSQiTLHrWa92FG1myPaq4GDnHWnmEyAEJ+JovcLm7YzwR24dHAb0qf+0ppWClMr3IFYEVuwbCc1Ya4mh+VjhfalsFyUik7c049TTfSvJPfE2gdacvr2pvenjp+FA2J1+lLik/hpw6CrRDFHBxgmgZ6np3oHQUrfdP0piEPoKQnH4Uo6ikP3/xoATJNMY4IH51J3P1qF/vmkykIoLOKsyyLbWckznhBnFRRfeX6VBrv/IGn+lTFX0HI5C91D+y9B1LXXP8ApE5MFv659a8x1qVrXT7WwY/vpP8ASJ/qfug/QV3HjT/kTNI/6+D/AFrgPE//ACH7n/gP/oIrsa96MexhJuNNyXoZGMnNGKQU49q6GzjQ3v1pDjk0Hr+NJ2P1oASkY8UvrTWpoTGHJNLjigfepewpkWExime9Pb7ppg+7QNjcU5I2kbao5oPSrFv/AMe03+7Q3ZCSuy7pujT3xzCpEIOGlx19hXXR29tpNqFjHlf+hMaj8P8A/IJt/pUV9/yFEqaUPazsxzlyRui7BFc367pXcR+g4JrZstOSLb5aBR9OTTbDtW1H99fpXs06UKa91HmzqSk9WMjh2n5FK/SrcMOQx8k59TSL98VoR/cb/cqmyUUjlR84x/uimsheVVYNtI+lSz/cpJvux/T+lK4DRHGj7APxIpGtAGJZuOo5p4++tOuPuH6UwK8kXIKkj3znNRBnDFX6Z64xV6P/AFK1DddKaAhNxuyjjcnQqwzVZLJ7dzPpV09lMf4VJ2N9V6VIP4qfF/rBSlTjLRgpuLuh8XiiO3ZbfX7b7KScC8thujb/AHh2rcfR9OvYVuovLkhIyk8RAz9a5TWP+QXc/wDXNv5VY+Fn/ItSfQ/zryMXh4QfunfQrSktTem0iOKL53EkY/hfn8sVkroEeRJA/n4BJBO0j0rrY/8Aj6b/AHP6VQP+sevOasdqZzu2NV2Or28uOVYYz/SrMMVsqqQ4d1GeeSKfr3/HpF9W/pVew/4+H/65D+VSMuDUCAdjFNvXGB+QrStbqN41aG6ZXAOcDAJP94CuRu+kn4/zq94f+8/+7T2Bo66GFmB8yaO4QEBjzjmkFjDEflgZYevyYNQ6d9/8R/OtKz+4f94/zp2JMlJRHc7QGjLH5cDr9avGBR94Y3cn0NJe/wCuj+v+NWU/49B9BTjJgx9rEsZzv4PRv8ascCRkK4GcMPfsRUEH/Hsfqamn/wCPhf8AcSqv1Ieug1j/AAgd6GJA2nmh/wDWD60rfeNbX0ONqzHI52dAfrSDKybiMfSkX7lDf1pp6CEbdncjH86lSc5Ak5Wox0oHU00xjpiGlzCuBSxu6HcPvfSkT7zU9aTVxJk63TsMMceuKcdRkhi8vaSB61Wfp+NLL9yncLiS3rh9yr1pH1CR9o7VFL9xag/u0BctPK0g+aRj7Zo84bduKrnqKTv+NILkzSDAGMUwNlvmJP1pD1pO4+tFxDnPzjA4p0QByuaYfvj6U6H/AFhpgNeMb8LkmkIO8ZzU8X/Hx+NLcfe/CgCsxA5BoQGVwvr3qM/0qxb9aVwJJIcqfmwAOMVXVVKnc2MVbb7p+hqg/U0mMtGSz2hQhyPWk3W5A24X3qkKD0/ClcZdKRN0lpMQxcFmaqq9KeO9AEjTKWwAcUpc4+UsB6VGP4alXofrTuwIwCD9etSKdozn8aaPvNTv4DVIQhHmDnmm7SjcLxTl6UvagCUXLhguAFqtM4kYngelOP3h9KbQA0EsvHJz3qxIVdBtypHFQJ3pw+8aEBHcW6sAYVLHvSw5SHY2VP0rQ0/vTbv74/GmBT3sDz0qKUBj8pqVu1RdzSAjIZBnNTI0Tx7mPNRzfdqBfuD60gLjhdmUGRSRMc9qev8AqBTP4qaAV1aUH1qvFZNLPgucVai6mprL7z0ILFZc7DD1x3p8E/lSCIpwTRF/r3ob/Xj60r6gX724huI0tokCAfeasa6ssXI8rlAOasP981ND9w1dxmPMmJMbSR7VI8OIgFByetWz/F9aXuKnqKxniykk4IwKuW9oICCZMVOvQ1BP2oAllCOcbufaoyEVTtbP1qJep+tKOpouMcjID0Oad5CyZPIpiffFWl+7TAzpbNCcbzmofsjROCpzzV9/vUknaobsKxWaScLyB9KaJrgKQOPepH6fhSD7lNSYMrFGlb5mOaaTHCcAZb1qQfeNRSffqkSMEkrE4JGacIyBkj61IvSnr900wGlhgBfxqRGZgEDcUxPumn2336aYFhXMa4LBfeq80+5uDketNvPvioT/AKsU2B//2Q==</content> + <contentType>image/jpeg</contentType> + <id>assistants.E0FBA361C191F8B723949467AE302BEA24E4745E</id> + <name>Helge1.jpg</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>UEsDBBQAAAgAACxEj1JexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAALESPUgYCUOZqAQAAagEAABgAAABUaHVtYm5haWxzL3RodW1ibmFpbC5wbmeJUE5HDQoaCgAAAA1JSERSAAAAtQAAAQAIAwAAAML9x+kAAAA8UExURYyQkJCTlZ6fo6qknrm2tri6vMW2qsrGv8rQ1d/Uytvm79vq9ezn5O/0+fDq5fT3+vj39////wAAAP///81aQL0AAADpSURBVHja7dK5DYAwEADB4zU2j6H/ZskpAOmk2Qom2HgyFtTU1NTU1NTU1NTU1J+us99Hz6ZexyGmPZu6LluZm6+pqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqan/6AXwWwUaPv4WoAAAAABJRU5ErkJgglBLAwQUAAgICAAsRI9SAAAAAAAAAAAAAAAACwAAAGNvbnRlbnQueG1spVddb9s2FH3vrxA0YG8M7bgDEi12H1oU2JoURZ0Be2UoSiYmiRpJWfa/3yVp0ZRjOVz8Ilu851zeb1IPn3Z1lWyZVFw0y3R+M0sT1lCR86Zcpn89f0V36afVhwdRFJyyLBe0q1mjERWNht8E2I3KnHSZdrLJBFFcZQ2pmco0zUTLmoGVhejM7uVWlN5X0XQLDtma7XQs2WBHXPISv7MFh+xckj6WbLAQ1JBeiFjyTlWoEBD1uiWan1ixq3jzzzLdaN1mGPd9f9MvboQs8fz+/h5bqTeYelzbycqicopZxcxmCs9v5njA1kyTWPsMNjSp6eoXJqNDQzR5lVW1LaMrYltOhIZuiIyuDQsep3eRx6d3kYfcmujNRE7u8BMI7ePp8VgLso7dy2BHoaKSt9FuOnTIF0J4Uw3BNag193Y2+4jde4DuL8J7yTWTAZxehFNSUR9xUZ8LGuDmGBCIbU2Z+sI3gVAThFvsxB6s8knV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</content> + <contentType>application/vnd.oasis.opendocument.text</contentType> + <id>assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7</id> + <name>Helgetext2.odt</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnHomeServerVonTorsten</form> + <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> + <id>20210415307020414701</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.by.kop-cloud.de</sender> + <timestamp>2021-04-15T08:33:39.443Z</timestamp> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml b/intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml new file mode 100644 index 0000000000000000000000000000000000000000..f6574adf394282f63334893be54078444b05fc65 --- /dev/null +++ b/intelliform-adapter/src/main/scripts/vorgang-Wahlhelferin.xml @@ -0,0 +1,84 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIiB0OmZvcm0tdmVyc2lvbj0iMi4wMTMiIHQ6dXVpZD0iNzgxNGI2YjUtMmZlYy00ZDBiLTg4OGYtYTM3N2ExOWIwZGEzIiB0OmlkPSIyMDIxMTIwODQyNjkyMDE3OTIwMCIgdDp0aW1lc3RhbXA9IjIwMjEtMTItMDhUMTA6NTE6MzIuNTMxWiIgdDpzZW5kZXI9InN0YWdlLmFmbS5zY2hsZXN3aWctaG9sc3RlaW4uZGUiIHQ6Zm9ybT0iV2FobGhlbGZlcmluIHdlcmRlbiIgdDpmb3JtLWlkPSJvZHBfd2FobGhlbGZlci9vZHBfd2FobGhlbGZlciIgdDpjdXN0b21lcj0iU2NobGVzd2lnLUhvbHN0ZWluIiB0OmN1c3RvbWVyLWlkPSJzaCIgdDpjbGllbnQ9IlNjaGxlc3dpZy1Ib2xzdGVpbiIgdDpjbGllbnQtaWQ9ImxhbmQiPgogIDxnZWJpZXRfaWQ+OTAwNzE3ODwvZ2ViaWV0X2lkPgogIDxzZXNzaW9uaWQ+ZjA1M2M0MmMtZjU0ZS00ZTZlLWIxODMtNWVmM2QxZDFlMDQyPC9zZXNzaW9uaWQ+CiAgPGFubGllZ2VuX2lkPjg5Njc5MTM8L2FubGllZ2VuX2lkPgogIDx6c3Rfb25saW5lX2RpZW5zdD5XYWhsaGVsZmVyIC0gQWx0ZW5ob2x6L0UtTWFpbC1adXN0ZWxsdW5nOzI1NDQwNDQwMDtodHRwczovL3d3dy5kYXRhcG9ydC5kZS9kYXRlbnNjaHV0ei87aHR0cHM6Ly93d3cuZGF0YXBvcnQuZGUvaW1wcmVzc3VtLztFTUFJTF9MTjs7b2xhZi5sZWllckBkYXRhcG9ydC5kZTs7dHJ1ZTwvenN0X29ubGluZV9kaWVuc3Q+CiAgPGdlYmlldGJlemVpY2hudW5nPkFsdGVuaG9sejwvZ2ViaWV0YmV6ZWljaG51bmc+CiAgPGRhdGVuc2NodXR6X3p1c3RpbW11bmc+dHJ1ZTwvZGF0ZW5zY2h1dHpfenVzdGltbXVuZz4KICA8d2FobD5MYW5kdGFnc3dhaGwgU2NobGVzd2lnIEhvaGxzdGVpbiA4LiBNYWkgMjAyMjwvd2FobD4KICA8d2VpdGVyZV93YWhsZW4+dHJ1ZTwvd2VpdGVyZV93YWhsZW4+CiAgPGVpbnNhdHpvcnQ+CiAgICA8YXVzc2VyaGFsYiBsYWJlbD0iTmljaHQgaW0gZWlnZW5lbiBXYWhsYmV6aXJrIj5mYWxzZTwvYXVzc2VyaGFsYj4KICAgIDxvdGhlciBsYWJlbD0iIj5mYWxzZTwvb3RoZXI+CiAgICA8d29obm9ydCBsYWJlbD0iTnVyIGluIFdvaG5vcnRuw6RoZSI+dHJ1ZTwvd29obm9ydD4KICA8L2VpbnNhdHpvcnQ+CiAgPGVyZmFocnVuZz5KYTwvZXJmYWhydW5nPgogIDxmdW5rdGlvbj4KICAgIDxiZWlzaXR6ZXIgbGFiZWw9IkJlaXNpdHplcjppbiI+ZmFsc2U8L2JlaXNpdHplcj4KICAgIDxzY2hyaWZ0ZnVlaHJlciBsYWJlbD0iU2NocmlmdGbDvGhyZXI6aW4iPmZhbHNlPC9zY2hyaWZ0ZnVlaHJlcj4KICAgIDxzdGVsbF9zY2hyaWZ0ZnVlaHJlciBsYWJlbD0iU3RlbGx2ZXJ0cmV0ZW5kZTpyIFNjaHJpZnRmw7xocmVyOmluIj5mYWxzZTwvc3RlbGxfc2NocmlmdGZ1ZWhyZXI+CiAgICA8c3RlbGxfd2FobHZvcnN0ZWhlciBsYWJlbD0iU3RlbGx2ZXJ0cmV0ZW5kZTpyIFdhaGx2b3JzdGVoZXI6aW4iPmZhbHNlPC9zdGVsbF93YWhsdm9yc3RlaGVyPgogICAgPHdhaGx2b3JzdGVoZXIgbGFiZWw9IldhaGx2b3JzdGVoZXI6aW4iPnRydWU8L3dhaGx2b3JzdGVoZXI+CiAgPC9mdW5rdGlvbj4KICA8cG9zdGZhY2huYWNocmljaHQ+U2VociBnZWVocnRlL3IgQW56ZWlnZW5kZSpyLCAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7SWhyIEFudHJhZyB3dXJkZSBhbiBkaWUgenVzdMOkbmRpZ2UgU3RlbGxlIGdlc2VuZGV0LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtJaHJlIFZvcmdhbmdzbnVtbWVyIHVuZCB6dXN0w6RuZGlnZSBTdGVsbGUgZmluZGVuIFNpZSBpbSBhbmdlaMOkbmd0ZW4gRG9rdW1lbnQuJmx0O2JyLyZndDtCaXR0ZSBnZWJlbiBTaWUgZGllc2UgVm9yZ2FuZ3NudW1tZXIgYmVpIGFsbGVuIEFuZnJhZ2VuIHp1IElocmVyIEFuemVpZ2UgYW4uJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7TWl0IGZyZXVuZGxpY2hlbiBHcsO8w59lbiZsdDtici8mZ3Q7SWhyZSBPbmxpbmUtQmVow7ZyZGUmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7PC9wb3N0ZmFjaG5hY2hyaWNodD4KICA8bmFtZWlkLz4KICA8cmVzdF9yZXNwb25zZV9uYW1lLz4KICA8bWFpbGJveGd1aWQvPgogIDxuYWNobmFtZT5mcmdoPC9uYWNobmFtZT4KICA8dm9ybmFtZT5mcmdoPC92b3JuYW1lPgogIDxnZWJ1cnRzZGF0dW0vPgogIDxzdGFhdGVuPkRFPC9zdGFhdGVuPgogIDxzdHJhc3NlX25yPgogICAgPHN0cmFzc2VfbnItaXRlbT4KICAgICAgPHN0cmFzc2U+c2ZnPC9zdHJhc3NlPgogICAgICA8aGF1c251bW1lcj4yMjwvaGF1c251bW1lcj4KICAgICAgPGFkcmVzc3p1c2F0ei8+CiAgICA8L3N0cmFzc2VfbnItaXRlbT4KICA8L3N0cmFzc2VfbnI+CiAgPHBsel9vcnQ+CiAgICA8cGx6X29ydC1pdGVtPgogICAgICA8cG9zdGxlaXR6YWhsPjIyMjIyPC9wb3N0bGVpdHphaGw+CiAgICAgIDxvcnQ+c2RmZ3NmZDwvb3J0PgogICAgPC9wbHpfb3J0LWl0ZW0+CiAgPC9wbHpfb3J0PgogIDxlbWFpbD5zZGZnc0Bhc2RmLmNvbTwvZW1haWw+CiAgPHRlbGVmb24+MjM0PC90ZWxlZm9uPgogIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+OTAzMDIyOTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgogIDxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+TGFuZGVzaGF1cHRzdGFkdCBLaWVsIC0gQsO8cmdlci0gdW5kCgkJCU9yZG51bmdzYW10LCBHZXdlcmJlbWVsZGVzdGVsbGU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KICA8enVzdF9rb250YWt0c3lzdGVta2VubnVuZ19uYi8+CiAgPHp1c3Rfa29udGFrdHN5c3RlbWtlbm51bmdfbG4+b2xhZi5sZWllckBkYXRhcG9ydC5kZTwvenVzdF9rb250YWt0c3lzdGVta2VubnVuZ19sbj4KICA8enVzdF9rb250YWt0c3lzdGVta2VubnVuZ193cy8+CiAgPHp1c3Rfc3RyYXNzZT5BbHRlbmhvbHplciBTdHJhw59lPC96dXN0X3N0cmFzc2U+CiAgPHp1c3RfaGF1c251bW1lcj4xMDwvenVzdF9oYXVzbnVtbWVyPgogIDx6dXN0X3Bvc3RsZWl0emFobD4yNDE2MTwvenVzdF9wb3N0bGVpdHphaGw+CiAgPG9ydElEPjkwMDcxNzg8L29ydElEPgogIDx6dXN0X29ydD5BbHRlbmhvbHo8L3p1c3Rfb3J0PgogIDx6dXN0X3RlbGVmb25udW1tZXI+KzQ5IDQwIDQyODQ2LTQwMzI8L3p1c3RfdGVsZWZvbm51bW1lcj4KICA8enVzdF9mYXhudW1tZXIvPgogIDx6dXN0X2VtYWlsYWRyZXNzZT5SYW1pbi5KZXlyYW5pQGRhdGFwb3J0LmRlPC96dXN0X2VtYWlsYWRyZXNzZT4KICA8enVzdGVsbHVuZ19uYWNocmljaHRlbmJyb2tlcj5mYWxzZTwvenVzdGVsbHVuZ19uYWNocmljaHRlbmJyb2tlcj4KICA8enVzdGVsbHVuZ19lbGVrdHJvbmlzY2g+dHJ1ZTwvenVzdGVsbHVuZ19lbGVrdHJvbmlzY2g+CjwvbXlGb3JtPg==</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>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DQovVHlwZSAvQ2F0YWxvZw0KL0xhbmcgKGRlLURFKQ0KL091dGxpbmVzIDIzIDAgUg0KL1BhZ2VzIDEwIDAgUg0KPj4KZW5kb2JqCjI2IDAgb2JqCjw8DQovQ3JlYXRvciA8ZmVmZjAwNTcwMDcyMDA2OTAwNzQwMDY1MDA3Mj4NCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMTEyMDgxMTUxNTYrMDEnMDAnKQ0KL1Byb2R1Y2VyIDxmZWZmMDA0YzAwNjkwMDYyMDA3MjAwNjUwMDRmMDA2NjAwNjYwMDY5MDA2MzAwNjUwMDIwMDAzNjAwMmUwMDM0Pg0KL0F1dGhvciA8ZmVmZjAwNGIwMDZjMDA2MTAwNzUwMDczMDAyMDAwNTcwMDYxMDA2ZTAwNmUwMDY1MDA3Mj4NCj4+CmVuZG9iagp4cmVmDQowIDI3IA0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDY3IDAwMDAwIG4NCjAwMDAwMDAyNTEgMDAwMDAgbg0KMDAwMDAwMTcxMCAwMDAwMCBuDQowMDAwMDAxNzMwIDAwMDAwIG4NCjAwMDAwMDE5MTQgMDAwMDAgbg0KMDAwMDAwMzQ4OCAwMDAwMCBuDQowMDAwMDAzNTA4IDAwMDAwIG4NCjAwMDAwMDM2OTIgMDAwMDAgbg0KMDAwMDAwNDYzNiAwMDAwMCBuDQowMDAwMDA0NjU1IDAwMDAwIG4NCjAwMDAwMDQ3NzcgMDAwMDAgbg0KMDAwMDAxODQ2MSAwMDAwMCBuDQowMDAwMDE4NDgzIDAwMDAwIG4NCjAwMDAwMTg2OTcgMDAwMDAgbg0KMDAwMDAxOTMxMyAwMDAwMCBuDQowMDAwMDE5Nzg4IDAwMDAwIG4NCjAwMDAwMjc0NDUgMDAwMDAgbg0KMDAwMDAyNzQ2NiAwMDAwMCBuDQowMDAwMDI3Njg3IDAwMDAwIG4NCjAwMDAwMjgxMDEgMDAwMDAgbg0KMDAwMDAyODM4NSAwMDAwMCBuDQowMDAwMDI4NDMyIDAwMDAwIG4NCjAwMDAwMjg0OTQgMDAwMDAgbg0KMDAwMDAyODU1NiAwMDAwMCBuDQowMDAwMDI4NzQ5IDAwMDAwIG4NCjAwMDAwMjg4NzYgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9JbmZvIDI2IDAgUg0KL0lEIFsgPGFhNThmNDE1OWVlNzI2NWY1MTg0N2ZiNmU1NmZmYTA1PiA8Y2Q3MmFiZTE4ZDk4NGM4NjAyMTJjOTU5NzM5MzNiNmU+IF0NCi9Sb290IDI1IDAgUg0KL1NpemUgMjcNCi9Eb2NDaGVja3N1bSAvOTA3Q0UzMzczRTZCREE3QzVERjk1NUNGMERBNEU3ODYNCj4+DQpzdGFydHhyZWYNCjI5MTIzDQolJUVPRg0K</content> + <contentType>application/pdf</contentType> + <id>myForm-pdf</id> + <name>Wahlhelferin.pdf</name> + </attachments> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PGh0bWwgeG1sbnM6dD0iaHR0cDovL3htbG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiI+CjxoZWFkPgo8TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CjwvaGVhZD4KPGJvZHkgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsgZm9udC1zaXplOiAxMXB0OyI+CjxwPlNlaHIgZ2VlaHJ0ZS9yIFNhY2hiZWFyYmVpdGVyKmluPC9wPgo8cD5FaW4gbmV1ZXIgQW50cmFnIHd1cmRlIGdlc3RlbGx0PC9wPgo8cD5BY2h0dW5nOiBBbnR3b3J0ZW4gU2llIG5pY2h0IGF1ZiBkaWVzZSBFLU1haWwuIERpZSBFLU1haWwgd3VyZGUgYXV0b21hdGlzY2ggZXJzdGVsbHQuIEVpbmUgQW50d29ydCB3aXJkIG5pY2h0IGJlYXJiZWl0ZXQgdW5kIGdlbGVzZW4hLiBCaXR0ZSB3ZW5kZW4gU2llIHNpY2ggYW4gZGVuIGltIEFudHJhZyBnZW5hbm50ZW4gQW50cmFnc3RlbGxlci48L3A+CjwvYm9keT4KPC9odG1sPgo=</content> + <contentType>text/xml</contentType> + <id>EmailBodySachbearbeiterTemplate</id> + <name>EmailBodySachbearbeiterTemplate.xml</name> + </attachments> + <caller/> + <client>Schleswig-Holstein</client> + <clientId>land</clientId> + <customParameters> + <key>EmailAdresseSachbearbeiter</key> + <value>markus.fraedrich@dataport.de</value> + </customParameters> + <customParameters> + <key>EmailSubjectSachbearbeiterTemplate</key> + <value>Wahlhelferin</value> + </customParameters> + <customer>Schleswig-Holstein</customer> + <customerId>sh</customerId> + <form>Wahlhelferin werden</form> + <formId>odp_wahlhelfer/odp_wahlhelfer</formId> + <id>20211208426920179200</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <primaryFormAttachmentId>myForm-pdf</primaryFormAttachmentId> + <sender>stage.afm.schleswig-holstein.de</sender> + <timestamp>2021-12-08T11:51:57.542+01:00</timestamp> + <username/> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> \ No newline at end of file diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointITCase.java b/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointITCase.java deleted file mode 100644 index 9a7976efd524cf5cac369339bf7fab1aade7b80d..0000000000000000000000000000000000000000 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointITCase.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.intelliform; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.io.IOException; -import java.util.Optional; - -import javax.xml.bind.JAXBException; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.soap.SOAPException; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.ApplicationContext; -import org.springframework.core.io.Resource; -import org.springframework.ws.test.server.MockWebServiceClient; -import org.springframework.ws.test.server.RequestCreators; -import org.springframework.ws.test.server.ResponseActions; -import org.springframework.ws.test.server.ResponseMatchers; -import org.xml.sax.SAXException; - -import de.itvsh.kop.eingangsadapter.router.VorgangRemoteService; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; - -@SpringBootTest -class FormDataEndpointITCase { - - private final static String REQUEST = "EinfachesFormularZweiAnhaengeSoapRequest.xml"; - private final static String RESPONSE = "EinfachesFormularZweiAnhaengeSoapResponse.xml"; - - @Autowired - private ApplicationContext applicationContext; - @MockBean - private VorgangRemoteService vorgangRemoteService; - - @Captor - private ArgumentCaptor<GrpcEingang> grpcEingangCaptor; - @Captor - private ArgumentCaptor<Optional<String>> organisationsEinheitIdCaptor; - - private MockWebServiceClient mockClient; - - @BeforeEach - void initTest() { - mockClient = MockWebServiceClient.createClient(applicationContext); - } - - @Nested - class TestAntragWithAttachments { - - @BeforeEach - void init() throws SAXException, IOException, ParserConfigurationException, JAXBException, SOAPException { - sendWebserviceRequest(REQUEST); - - verify(vorgangRemoteService).createVorgang(grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture()); - } - - @Nested - class checkAntragsteller { - - @Test - void validateAntragstellerEmail() { - assertThat(grpcEingangCaptor.getValue().getAntragsteller().getEmail()).isEqualTo("schneider@helgeschneider.local"); - } - } - - @Nested - class checkAttachments { - - @Test - void validateOrganisationsEinheitId() { - assertThat(organisationsEinheitIdCaptor.getValue()).isPresent().hasValue("10363455"); - } - - @Test - void checkAttachmentsCount() throws IOException { - assertThat(grpcEingangCaptor.getValue().getNumberOfAttachments()).isEqualTo(2); - } - - @Test - void checkAttachmentGroupCount() { - assertThat(grpcEingangCaptor.getValue().getAttachmentsCount()).isEqualTo(2); - } - - @Test - void checkAttachmentGroup1Count() { - GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(0); - - assertThat(group.getFilesCount()).isEqualTo(1); - } - - @Test - void checkAttachmentGroup1Files() { - GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(0).getFiles(0); - - assertThat(file.getId()).isNotNull(); - assertThat(file.getVendorId()).isEqualTo("assistants.E0FBA361C191F8B723949467AE302BEA24E4745E"); - assertThat(file.getName()).isEqualTo("Helge1.jpg"); - assertThat(file.getContentType()).isEqualTo("image/jpeg"); - assertThat(file.getContent().size()).isGreaterThan(1000); - } - - @Test - void checkAttachmentGroup2Count() { - GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(1); - - assertThat(group.getFilesCount()).isEqualTo(1); - } - - @Test - void checkAttachmentGroup2Files() { - GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(1).getFiles(0); - - assertThat(file.getId()).isNotNull(); - assertThat(file.getVendorId()).isEqualTo("assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7"); - assertThat(file.getName()).isEqualTo("Helgetext2.odt"); - assertThat(file.getContentType()).isEqualTo("application/vnd.oasis.opendocument.text"); - assertThat(file.getContent().size()).isGreaterThan(1000); - } - } - - @Nested - class validateRepresentations { - @Test - void checkRepresentationsCount() { - assertThat(grpcEingangCaptor.getValue().getRepresentationsCount()).isEqualTo(1); - assertThat(grpcEingangCaptor.getValue().getNumberOfRepresentations()).isEqualTo(1); - } - - @Test - void checkRepresentation1() { - GrpcIncomingFile file = grpcEingangCaptor.getValue().getRepresentations(0); - - assertThat(file.getId()).isNotNull(); - assertThat(file.getVendorId()).isEqualTo("myForm-xml"); - assertThat(file.getName()).isEqualTo("XML-Daten.xml"); - assertThat(file.getContentType()).isEqualTo("text/xml"); - assertThat(file.getContent().size()).isGreaterThan(1000); - } - } - } - - @Nested - class TestOtherNameForFormData { - - @Test - void shouldSucceed() throws IOException { // NOSONAR contains andExpect of mockClient - sendWebserviceRequest("soaprequest_other-name.xml") - .andExpect(ResponseMatchers.noFault()); - } - - @Test - void shouldHaveOrgaId() throws IOException { - sendWebserviceRequest("soaprequest_other-name.xml"); - - verify(vorgangRemoteService).createVorgang(grpcEingangCaptor.capture(), any()); - - assertThat(grpcEingangCaptor.getValue().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("0815"); - } - - } - - private ResponseActions sendWebserviceRequest(String requestFileName) throws IOException { - return mockClient.sendRequest(RequestCreators.withSoapEnvelope(getResource(requestFileName))) - .andExpect(ResponseMatchers.noFault()) - .andExpect(ResponseMatchers.payload(getResource(RESPONSE))); - } - - private Resource getResource(String fileName) { - return applicationContext.getResource("classpath:intelliform/" + fileName); - } -} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java similarity index 96% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentTestFactory.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java index b81e7b569e44345bd1922a88d07ae6c1bd2535fc..f53d6f8b91013f2ea2f532d26b2dccdf4cc24a6e 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentTestFactory.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; public class AttachmentTestFactory { diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdderTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdderTest.java similarity index 68% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdderTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdderTest.java index e9db311271d9e288bffa0a93f596120e80dd34ac..d458e4679ca4b19d28db86d1bc9139894c5466dc 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/AttachmentsContentAdderTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/AttachmentsContentAdderTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; @@ -30,15 +30,14 @@ import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import lombok.SneakyThrows; class AttachmentsContentAdderTest { - private final static byte[] TESTCONTENT1 = "TestBytes".getBytes(); - AttachmentsContentAdder service; private List<IncomingFileGroup> attachments; @@ -50,17 +49,17 @@ class AttachmentsContentAdderTest { service = new AttachmentsContentAdder(); - attachments = List.of(IncomingFileGroupTestFactory.createBuilder() - .files(List.of(IncomingFileTestFactory.createBuilder().content(null).build())).build()); + attachments = List.of(IncomingFileGroupTestFactory.createBuilder().clearFiles() + .files(List.of(IncomingFileTestFactory.createBuilder().file(null).build())).build()); - depositRequestFiles = List.of(IncomingFileTestFactory.createBuilder().content(TESTCONTENT1).build()); + depositRequestFiles = List.of(IncomingFileTestFactory.create()); } + @SneakyThrows @Test void testAddContentToAttachments() { - List<IncomingFileGroup> attachmentsWithContent = service.addContentToAttachments(attachments, depositRequestFiles); - assertThat(attachmentsWithContent.get(0).getFiles().get(0).getContent()).isEqualTo(TESTCONTENT1); + assertThat(attachmentsWithContent.get(0).getFiles().get(0).getContentStream()).hasBinaryContent(IncomingFileTestFactory.CONTENT); } } diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderReaderTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderReaderTest.java new file mode 100644 index 0000000000000000000000000000000000000000..32e10fdda394b35afff611d740d4a389dfc7b75c --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderReaderTest.java @@ -0,0 +1,171 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.intelliform; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.w3c.dom.Attr; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +class CustomHeaderReaderTest { + + @InjectMocks + private CustomHeaderReader reader; + + @Mock + private Document document; + @Mock + private Element element; + @Mock + private Attr attribute; + + @BeforeEach + void setup() { + when(document.getDocumentElement()).thenReturn(element); + } + + @Test + void shouldNotAddIfNotPresent() { + var formData = reader.getHeader(document); + + assertThat(formData).isEmpty(); + } + + @Nested + class TestHeaderAdded { + + @BeforeEach + void setup() { + when(element.getAttributeNode(any())).thenReturn(attribute); + } + + @Test + void shouldAddPostfachId() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_POSTFACH_ID); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.POSTFACH_ID); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_POSTFACH_ID, CustomHeaderTestFactory.POSTFACH_ID); + } + + @Test + void shouldAddVorname() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_VORNAME); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.VORNAME); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_VORNAME, CustomHeaderTestFactory.VORNAME); + } + + @Test + void shouldAddNachname() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_NACHNAME); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.NACHNAME); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_NACHNAME, CustomHeaderTestFactory.NACHNAME); + } + + @Test + void shouldAddGeburtsname() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_GEBURTSNAME); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.GEBURTSNAME); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_GEBURTSNAME, CustomHeaderTestFactory.GEBURTSNAME); + } + + @Test + void shouldAddGeburtsort() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_GEBURTSORT); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.GEBURTSORT); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_GEBURTSORT, CustomHeaderTestFactory.GEBURTSORT); + } + + @Test + void shouldAddEmail() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_EMAIL); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.EMAIL); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_EMAIL, CustomHeaderTestFactory.EMAIL); + } + + @Test + void shouldAddTelefon() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_TELEFON); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.TELEFON); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_TELEFON, CustomHeaderTestFactory.TELEFON); + } + + @Test + void shouldAddStrasse() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_STRASSE); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.STRASSE); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_STRASSE, CustomHeaderTestFactory.STRASSE); + } + + @Test + void shouldAddPlz() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_PLZ); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.PLZ); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_PLZ, CustomHeaderTestFactory.PLZ); + } + + @Test + void shouldAddOrt() { + when(attribute.getName()).thenReturn(CustomHeaderReader.HEADER_ORT); + when(attribute.getValue()).thenReturn(CustomHeaderTestFactory.ORT); + + var formData = reader.getHeader(document); + + assertThat(formData).containsEntry(CustomHeaderReader.HEADER_ORT, CustomHeaderTestFactory.ORT); + } + } + +} \ No newline at end of file diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..991624e52b8584e092c07206be10f9de50adee1e --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/CustomHeaderTestFactory.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.intelliform; + + +import java.util.HashMap; +import java.util.Map; + +public class CustomHeaderTestFactory { + + public static final String POSTFACH_ID = "postfach_id"; + public static final String VORNAME = "vorname"; + public static final String NACHNAME = "nachname"; + public static final String GEBURTSNAME = "geburtsname"; + public static final String GEBURTSORT = "geburtsort"; + public static final String EMAIL = "email"; + public static final String TELEFON = "telefon"; + public static final String STRASSE = "strasse"; + public static final String PLZ = "plz"; + public static final String ORT = "ort"; + + public static Map<String, Object> create() { + var map = new HashMap<String, Object>(); + map.put(CustomHeaderReader.HEADER_POSTFACH_ID, POSTFACH_ID); + map.put(CustomHeaderReader.HEADER_VORNAME, VORNAME); + map.put(CustomHeaderReader.HEADER_NACHNAME, NACHNAME); + map.put(CustomHeaderReader.HEADER_GEBURTSNAME, GEBURTSNAME); + map.put(CustomHeaderReader.HEADER_GEBURTSORT, GEBURTSORT); + map.put(CustomHeaderReader.HEADER_EMAIL, EMAIL); + map.put(CustomHeaderReader.HEADER_TELEFON, TELEFON); + map.put(CustomHeaderReader.HEADER_STRASSE, STRASSE); + map.put(CustomHeaderReader.HEADER_PLZ, PLZ); + map.put(CustomHeaderReader.HEADER_ORT, ORT); + return map; + } + +} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapperTest.java similarity index 87% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapperTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapperTest.java index 4a2e6c201f09cf9bf0e14a49c5c5c438b1bfb248..d7500c03e5f0e051df4083294593ad45f21d4dad 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositRequestIncomingFileMapperTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositRequestIncomingFileMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; @@ -30,7 +30,7 @@ import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFile; class DepositRequestIncomingFileMapperTest { @@ -56,7 +56,7 @@ class DepositRequestIncomingFileMapperTest { List<IncomingFile> files = mapper.mapFiles(DepositTestFactory.create()); IncomingFile file = files.get(0); - assertThat(file.getContent()).isEqualTo(AttachmentTestFactory.XML_CONTENT); + assertThat(file.getContentStream()).hasBinaryContent(AttachmentTestFactory.XML_CONTENT); assertThat(file.getContentType()).isEqualTo(AttachmentTestFactory.XML_CONTENT_TYPE); assertThat(file.getVendorId()).isEqualTo(AttachmentTestFactory.XML_ID); assertThat(file.getName()).isEqualTo(AttachmentTestFactory.XML_NAME); diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java similarity index 89% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositTestFactory.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java index 84e1a8f2b739dc85c9a00866197e3304cd56dce3..0e1a7c8aca8060edad74eb9df32e440b94e4ed5f 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/DepositTestFactory.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/DepositTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import java.util.List; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; public class DepositTestFactory { @@ -47,6 +47,7 @@ public class DepositTestFactory { static Deposit withData(DepositData data) { Deposit deposit = new Deposit(); + data.setPrimaryDataAttachmentId(AttachmentTestFactory.XML_ID); deposit.setData(data); return deposit; diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..4efaf9e227c71c43410d03d1a3a6b2ba3b4c7f79 --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointITCase.java @@ -0,0 +1,373 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.intelliform; + +import static de.ozgcloud.eingang.intelliform.XmlDaten1Container.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Optional; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.ApplicationContext; +import org.springframework.core.io.Resource; +import org.springframework.ws.test.server.MockWebServiceClient; +import org.springframework.ws.test.server.RequestCreators; +import org.springframework.ws.test.server.ResponseActions; +import org.springframework.ws.test.server.ResponseMatchers; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.router.VorgangRemoteService; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcFormData; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; +import lombok.SneakyThrows; + +@SpringBootTest +class FormDataEndpointITCase { + + private final static String TEST_FILE_PATH = "classpath:itcase/"; + + private final static String REQUEST = "EinfachesFormularZweiAnhaengeSoapRequest.xml"; + private final static String RESPONSE = "EinfachesFormularZweiAnhaengeSoapResponse.xml"; + + private static final String SOAP_REQUEST_OTHER_NAME = "XML-Daten-1-other_name_SoapRequest.xml"; + + @Autowired + private ApplicationContext applicationContext; + @MockBean + private VorgangRemoteService vorgangRemoteService; + + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + @Captor + private ArgumentCaptor<GrpcEingang> grpcEingangCaptor; + @Captor + private ArgumentCaptor<Optional<String>> organisationsEinheitIdCaptor; + + private MockWebServiceClient mockClient; + + @BeforeEach + void initTest() { + mockClient = MockWebServiceClient.createClient(applicationContext); + } + + @DisplayName("Send antrag with attachments") + @Nested + class TestAntragWithAttachments { + + @Test + void shouldSendRequest() { + sendRequest(); + + verify(vorgangRemoteService).createVorgang(any(FormData.class), any(GrpcEingang.class), any()); + } + + @Nested + class checkAntragsteller { + + @Test + void validateAntragstellerEmail() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getAntragsteller().getEmail()).isEqualTo("schneider@helgeschneider.local"); + } + + @Test + void shouldMapAntragstellerPostfachId() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getAntragsteller().getPostfachId()).isEqualTo("nameIdAsOsiPostfachIdV1"); + } + } + + @Nested + class checkAttachments { + + @Test + void validateOrganisationsEinheitId() { + sendRequest(); + + assertThat(organisationsEinheitIdCaptor.getValue()).isPresent().hasValue("10363455"); + } + + @Test + void checkAttachmentsCount() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getNumberOfAttachments()).isEqualTo(2); + } + + @Test + void checkAttachmentGroupCount() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getAttachmentsCount()).isEqualTo(2); + } + + @Test + void checkAttachmentGroup1Count() { + sendRequest(); + + GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(0); + + assertThat(group.getFilesCount()).isEqualTo(1); + } + + @Test + void checkAttachmentGroup1Files() { + sendRequest(); + + GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(0).getFiles(0); + + assertThat(file.getId()).isNotNull(); + assertThat(file.getVendorId()).isEqualTo("assistants.E0FBA361C191F8B723949467AE302BEA24E4745E"); + assertThat(file.getName()).isEqualTo("Helge1.jpg"); + assertThat(file.getContentType()).isEqualTo("image/jpeg"); + assertThat(file.getContent().size()).isZero(); + } + + @Test + void checkForAttachmentFileContentStream() { + sendRequest(); + + var fileStream = formDataCaptor.getValue().getAttachments().get(0).getFiles().get(0).getContentStream(); + + assertThat(fileStream).isNotNull(); + } + + @Test + void checkAttachmentGroup2Count() { + sendRequest(); + + GrpcIncomingFileGroup group = grpcEingangCaptor.getValue().getAttachments(1); + + assertThat(group.getFilesCount()).isEqualTo(1); + } + + @Test + void checkAttachmentGroup2Files() { + sendRequest(); + + GrpcIncomingFile file = grpcEingangCaptor.getValue().getAttachments(1).getFiles(0); + + assertThat(file.getId()).isNotNull(); + assertThat(file.getVendorId()).isEqualTo("assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7"); + assertThat(file.getName()).isEqualTo("Helgetext2.odt"); + assertThat(file.getContentType()).isEqualTo("application/vnd.oasis.opendocument.text"); + assertThat(file.getContent().size()).isZero(); + } + } + + @Nested + class validateRepresentations { + @Test + void checkRepresentationsCount() { + sendRequest(); + + assertThat(grpcEingangCaptor.getValue().getRepresentationsCount()).isEqualTo(1); + assertThat(grpcEingangCaptor.getValue().getNumberOfRepresentations()).isEqualTo(1); + } + + @Test + void checkRepresentation1() { + sendRequest(); + + GrpcIncomingFile file = grpcEingangCaptor.getValue().getRepresentations(0); + + assertThat(file.getId()).isNotNull(); + assertThat(file.getVendorId()).isEqualTo("myForm-xml"); + assertThat(file.getName()).isEqualTo("XML-Daten.xml"); + assertThat(file.getContentType()).isEqualTo("text/xml"); + assertThat(file.getContent().size()).isZero(); + } + + @Test + void checkForRepresentationFileContentStream() { + sendRequest(); + + var fileStream = formDataCaptor.getValue().getRepresentations().get(0).getContentStream(); + + assertThat(fileStream).isNotNull(); + } + } + + @DisplayName("service konto") + @Nested + class TestServiceKonto { + + @Test + void shouldReturnMappedServiceKonto() { + var eingang = sendRequest(); + + assertThat(eingang.getHeader().getServiceKonto()).isNotNull(); + assertThat(eingang.getHeader().getServiceKonto().getType()).isEqualTo("OSI"); + } + + @Test + void shoulContainsPostfachAddresses() { + var eingang = sendRequest(); + + assertThat(eingang.getHeader().getServiceKonto().getPostfachAddressesList()).hasSize(1); + } + + @Test + void shoulReturnMappedPostfachAddress() { + var postfachAddress = sendRequest().getHeader().getServiceKonto().getPostfachAddressesList().get(0); + + assertThat(postfachAddress.getVersion()).isEqualTo(PostfachAddressTestFactory.VERSION); + assertThat(postfachAddress.getIdentifier().getPropertyList()).hasSize(1); + assertThat(postfachAddress.getIdentifier().getProperty(0).getName()).isEqualTo("postfachId"); + assertThat(postfachAddress.getIdentifier().getProperty(0).getValue(0)).isEqualTo("nameIdAsOsiPostfachIdV1"); + assertThat(postfachAddress.getType()).isEqualTo(1); + } + } + + @SneakyThrows + private GrpcEingang sendRequest() { + sendWebserviceRequest(REQUEST); + + return grpcEingangCaptor.getValue(); + } + } + + @Nested + class TestOtherNameForFormData { + + @Test + void shouldSucceed() { // NOSONAR contains andExpect of mockClient + sendWebserviceRequest(SOAP_REQUEST_OTHER_NAME).andExpect(ResponseMatchers.noFault()); + } + + @Test + void shouldHaveOrgaId() { + sendWebserviceRequest(SOAP_REQUEST_OTHER_NAME); + + verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any()); + + assertThat(grpcEingangCaptor.getValue().getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("0815"); + } + + } + + @Nested + class TestKeepFormDataOrder { + + @Test + void shouldKeepEingangFieldsOrder() { + var grpcFormData = requestFormData(); + + assertThat(grpcFormData.getFieldList()).isEqualTo(XmlDaten1Container.EINGANG_FIELDS); + } + + @Test + void shouldKeepZustaendigestelleFieldsOrder() { + var formFields = requestFormData().getForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.ZUSTAENDIGESTELLE_FIELDS); + } + + @Test + void shouldKeepEmpfangendestelleFieldsOrder() { + var formFields = requestFormData().getForm(1).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.EMPFANGENDESTELLE_FIELDS); + } + + @Test + void shouldKeepErklaerungenFieldsOrder() { + var formFields = requestFormData().getForm(2).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.ERKLAERUNGEN_FIELDS); + } + + @Test + void shouldKeepAnsprechpartnerFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.ANSPRECHPARTNER_FIELDS); + } + + @Test + void shouldKeepAnschriftFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(0).getSubForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.ANSCHRIFT_FIELDS); + } + + @Test + void shouldKeepKontaktFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(0).getSubForm(1).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.KONTAKT_FIELDS); + } + + @Test + void shouldKeepVerwaltungsleistungFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(1).getSubForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.VERWALTUNGSLEISTUNG_FIELDS); + } + + @Test + void shouldKeepAusgewaehlteZustaendigestelleFieldsOrder() { + var formFields = requestFormData().getForm(3).getSubForm(1).getSubForm(0).getSubForm(0).getFieldList(); + + assertThat(formFields).isEqualTo(XmlDaten1Container.AUSGEWAEHLTE_ZUSTAENDIGESTELLE_FIELDS); + } + + private GrpcFormData requestFormData() { + sendWebserviceRequest(REQUEST_XML_NAME); + + verify(vorgangRemoteService).createVorgang(any(), grpcEingangCaptor.capture(), any()); + return grpcEingangCaptor.getValue().getFormData(); + } + } + + @SneakyThrows + private ResponseActions sendWebserviceRequest(String requestFileName) { + var response = mockClient.sendRequest(RequestCreators.withSoapEnvelope(getResource(requestFileName))) + .andExpect(ResponseMatchers.noFault()) + .andExpect(ResponseMatchers.payload(getResource(RESPONSE))); + + verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), grpcEingangCaptor.capture(), organisationsEinheitIdCaptor.capture()); + + return response; + } + + private Resource getResource(String fileName) { + return applicationContext.getResource(TEST_FILE_PATH + fileName); + } +} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java similarity index 89% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java index 3d5e2ffe159d3dc16110d5c29ca5456026d54d45..ca6112edb8c4ab9c1b57ad2ff954a1a5345ecdef 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataEndpointTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataEndpointTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; @@ -38,9 +38,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.xml.sax.SAXException; -import de.itvsh.kop.common.test.TestUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.SemantikAdapter; class FormDataEndpointTest { diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapperTest.java similarity index 95% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapperTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapperTest.java index 916d66194ed57372ad92f186dd308a7fd519c774..1f5d29a9b5d86813d0b70abc5bbdcd97d77fa180 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/FormDataIncomingFileMapperTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/FormDataIncomingFileMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; @@ -39,9 +39,9 @@ import org.junit.jupiter.api.Test; import org.w3c.dom.Document; import org.xml.sax.SAXException; -import de.itvsh.kop.common.test.TestUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; class FormDataIncomingFileMapperTest { diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..d242117c67b643533778f1ed32df8627833ec61f --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/GrpcFormFieldTestFactory.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.intelliform; + +import de.ozgcloud.vorgang.vorgang.GrpcFormField; + +public class GrpcFormFieldTestFactory { + + public static GrpcFormField create(String fieldName, String fieldValue) { + return GrpcFormField.newBuilder().setName(fieldName).setValue(fieldValue).build(); + } +} diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/JsonServiceTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/JsonServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..a6f004815921559517571eea05fe3c2dd467d62d --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/JsonServiceTest.java @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.intelliform; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import lombok.SneakyThrows; + +class JsonServiceTest { + + @InjectMocks + private JsonService service; + @Mock + private ObjectMapper objectMapper; + + @DisplayName("Map form data") + @Nested + class TestMapFormData { + + @DisplayName("with invalid json") + @Nested + class TestWithInvalidJson { + + @SneakyThrows + @BeforeEach + void mockNode() { + when(objectMapper.readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any())) + .thenThrow(JsonProcessingException.class); + } + + @SneakyThrows + @Test + void shouldCallObjectMapper() { + try { + mapFormData(); + } catch (TechnicalException e) { + verify(objectMapper).readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any()); + } + } + + @Test + void shouldThrowTechnicalException() { + assertThatThrownBy(() -> mapFormData()) + .isInstanceOf(TechnicalException.class) + .hasMessageStartingWith("Error parsing JSON") + .hasMessageContaining("ExceptionId"); + } + } + + @DisplayName("with valid json") + @Nested + class TestWithValidJson { + + @SneakyThrows + @BeforeEach + void mockNode() { + when(objectMapper.readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any())) + .thenReturn(Collections.emptyList()); + } + + @SneakyThrows + @Test + void shouldCallObjectMapper() { + mapFormData(); + + verify(objectMapper).readValue(anyString(), Mockito.<TypeReference<List<Map<String, Object>>>>any()); + } + + @Test + void shouldReturnValue() { + var list = mapFormData(); + + assertThat(list).isEmpty(); + } + } + + private List<Map<String, Object>> mapFormData() { + return service.readAsListMap("{}"); + } + } +} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculatorTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculatorTest.java similarity index 85% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculatorTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculatorTest.java index 23c8923865a9f4995f4e9971de63a9289f32a207..2aea69c062712681700aaf083424565f231f2a6f 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/RepresentationsCalculatorTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/RepresentationsCalculatorTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; @@ -31,10 +31,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; class RepresentationsCalculatorTest { diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapperTest.java similarity index 75% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapperTest.java index 66260ae807040cfe7b6d6f2a18b25d77ef9ec349..05d6314e0924f17771944d74a7c5ce927da41168 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/SemantikFormDataMapperTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/SemantikFormDataMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,10 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; -import static de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory.*; +import static de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory.*; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; import java.io.IOException; import java.util.HashMap; @@ -33,18 +35,28 @@ import java.util.Map; import javax.xml.parsers.ParserConfigurationException; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.Mock; import org.xml.sax.SAXException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; class SemantikFormDataMapperTest { - private SemantikFormDataMapper mapper = new SemantikFormDataMapper(new XmlToJavaMapsMapper(), new FormDataIncomingFileMapper(), - new RepresentationsCalculator(), new DepositRequestIncomingFileMapper(), new AttachmentsContentAdder()); + private SemantikFormDataMapper mapper; + + @Mock + private CustomHeaderReader customHeaderReader; + + @BeforeEach + void setup() { + mapper = new SemantikFormDataMapper(new XmlToJavaMapsMapper(), new FormDataIncomingFileMapper(), + new RepresentationsCalculator(), new DepositRequestIncomingFileMapper(), new AttachmentsContentAdder(), customHeaderReader); + } @Nested class TestMapFormData { @@ -106,13 +118,13 @@ class SemantikFormDataMapperTest { assertThat(pdfAttachment.get().getContentType()).isEqualTo(AttachmentTestFactory.PDF_ATTACHMENT_CONTENT_TYPE); assertThat(pdfAttachment.get().getVendorId()).isEqualTo(AttachmentTestFactory.PDF_ATTACHMENT_ID); assertThat(pdfAttachment.get().getName()).isEqualTo(AttachmentTestFactory.PDF_ATTACHMENT_NAME); - assertThat(pdfAttachment.get().getContent()).isEqualTo(AttachmentTestFactory.PDF_ATTACHMENT_CONTENT); + assertThat(pdfAttachment.get().getContentStream()).hasBinaryContent(AttachmentTestFactory.PDF_ATTACHMENT_CONTENT); } @SuppressWarnings("unchecked") private List<IncomingFile> getRepresentations(FormData formData) { - return (List<IncomingFile>) ((Map<String, Object>) formData.getFormData().get(AbstractFileMapper.FIELD_NAME_MAPPED_FILES)) - .get(AbstractFileMapper.REPRESENTATIONS); + return (List<IncomingFile>) ((Map<String, Object>) formData.getFormData().get(FilesMapperHelper.FIELD_NAME_MAPPED_FILES)) + .get(FilesMapperHelper.REPRESENTATIONS); } } @@ -136,6 +148,17 @@ class SemantikFormDataMapperTest { .containsEntry(SemantikFormDataMapper.HEADER_CLIENT_ID, "land"); } + @Test + void shouldAddBayernHeader() { + Map<String, Object> bayernHeader = Map.of(CustomHeaderReader.HEADER_POSTFACH_ID, CustomHeaderTestFactory.POSTFACH_ID); + when(customHeaderReader.getHeader(any())).thenReturn(bayernHeader); + + var formData = mapToFormData(deposit); + + verify(customHeaderReader).getHeader(any()); + assertThat(getHeader(formData)).containsEntry(CustomHeaderReader.HEADER_POSTFACH_ID, CustomHeaderTestFactory.POSTFACH_ID); + } + @SuppressWarnings("unchecked") private Map<String, Object> getHeader(FormData formData) { return (Map<String, Object>) formData.getFormData().get(SemantikFormDataMapper.HEADER_FIELD); diff --git a/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java new file mode 100644 index 0000000000000000000000000000000000000000..c933df6c346bb0144f2f4548e54d2a3b997e500d --- /dev/null +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlDaten1Container.java @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.intelliform; + + +import static de.ozgcloud.eingang.intelliform.GrpcFormFieldTestFactory.*; + +import java.util.List; + +import de.ozgcloud.vorgang.vorgang.GrpcFormField; + +public class XmlDaten1Container { + + public final static String REQUEST_XML_NAME = "XML-Daten-1-SoapRequest.xml"; + + public static final List<GrpcFormField> EINGANG_FIELDS = List.of( + create("kontaktsystemtypid", "233034600"), + create("kontaktsystemtypidln", "233034601"), + create("AnliegenID", "8966671"), + create("mailboxguid", "f977368b-6991-46b9-af18-8a2a03d9ad1b"), + create("GebietID", "9007314"), + create("logourl", "http://wafmxpa002.dpaor.de/sh/logos/kopf_9068873.doc") + ); + + public static final List<GrpcFormField> EMPFANGENDESTELLE_FIELDS = List.of( + create("OrganisationseinheitenAuswahl", "9068873"), + create("OrganisationseinheitenID", "9068873"), + create("OrganisationseinheitenBEZEICHNUNG", "Einheitlicher Ansprechpartner\n\t\t\tSchleswig-Holstein"), + create("strasse", "Reventlouallee"), + create("hausnummer", "6"), + create("postleitzahl", "24105"), + create("ortID", "9006402"), + create("ort", "Kiel"), + create("telefonnummer", "+49 431 988-8650"), + create("telefaxnummer", "+49 431 988-6161111"), + create("emailadresse", "info@ea-sh.de"), + create("demailadresse", "ea-poststelle@ea-sh.de-mail.de"), + create("kontaktsystem_kennung", "afmsh:9068873_AusnahmeLKWFahrverbot"), + create("kontaktsystem_kennungzusatz", "alle") + ); + + public static final List<GrpcFormField> ERKLAERUNGEN_FIELDS = List.of( + create("check_gebuehren", "true"), + create("check_richtigkeit", "true"), + create("check_datenschutz", "true"), + create("check_missbrauch", "true"), + create("b_gebuehren_beschriftung", """ + * Mir ist bekannt, dass durch das Einreichen + des elektronischen Antrages von der zuständigen Stelle Gebühren + erhoben werden können."""), + create("b_gebuehren_intro", """ + Gebühr bei Ausstellung des kleinen Waffenscheins: + 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. + Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur + Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur + Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die + Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, + eine Auskunft aus dem zentralen staatsanwaltschaftlichen + Verfahrensregister, eine Stellungnahme der örtlichen + Polizeidienststelle und Ihrer Wohnsitzgemeinde ein."""), + create("b_richtigkeit", "* Ich bestätige die Richtigkeit meiner Angaben."), + create("b_datenschutz", """ + * Ich erkläre mich damit einverstanden, dass der + Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner + Aufgaben meine Daten unter Einhaltung der Bestimmungen der + Datenschutz-Grundverordnung (DS-GVO) und des + Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, + verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die + für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich + mit der rechtskonformen Datenverarbeitung und Speicherung durch die + zuständige Stelle einverstanden. Mir ist bekannt, dass ich die + Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber + dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee + 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für + die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind + davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen + Daten und die mir nach den datenschutzrechtlichen Regelungen + zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung + Kenntnis erlangt."""), + create("b_missbrauch", """ + * Mir ist bekannt, dass zur Verfolgung widerrechtlicher + Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes + aufgezeichnet und verwendet werden können."""), + create("policyurl", "http://wafmxpa002.dpaor.de/sh/datenschutz/datenschutzerklaerungEA_de.doc") + ); + + public static final List<GrpcFormField> ANSPRECHPARTNER_FIELDS = List.of( + create("anrede", "Herr"), + create("vorname", "Max"), + create("familienname", "Testermann") + ); + + public static final List<GrpcFormField> ANSCHRIFT_FIELDS = List.of( + create("strasse", "Königsweg"), + create("hausnummer", "74"), + create("postleitzahl", "24837"), + create("ort", "Schleswig"), + create("staat", "Deutschland") + ); + + public static final List<GrpcFormField> KONTAKT_FIELDS = List.of( + create("telefonnummer", "+ 49 4621 9654"), + create("mobilnummer", "+49 123"), + create("telefaxnummer", "+ 49 4621 9654"), + create("emailadresse", "max.testermann@gmx.de"), + create("demailadresse", "max.testermann@gmx.de-mail.de") + ); + + public static final List<GrpcFormField> AUSGEWAEHLTE_ZUSTAENDIGESTELLE_FIELDS = List.of( + create("OrganisationseinheitenID", "9535669"), + create("OrganisationseinheitenBEZEICHNUNG", "Kreis\n\t\t\t\t\t\tSchleswig-Flensburg/Kreisverwaltung - Allgemeine\n\t\t\t\t\t\tOrdnungsangelegenheiten") + ); + + public static final List<GrpcFormField> VERWALTUNGSLEISTUNG_FIELDS = List.of( + create("GebietID", "9007314"), + create("GebietBEZEICHNUNG", "Schleswig"), + create("AnliegenID", "8966671"), + create("AnliegenBEZEICHNUNG", "Waffenschein / Kleiner Waffenschein"), + create("leikaKEYLIST", "99089008000000;99089008001000") + ); + + public static final List<GrpcFormField> ZUSTAENDIGESTELLE_FIELDS = List.of( + create("OrganisationseinheitenAuswahl", "9535669"), + create("OrganisationseinheitenID", "9535669"), + create("OrganisationseinheitenBEZEICHNUNG", "Kreis\n\t\t\tSchleswig-Flensburg/Kreisverwaltung - Allgemeine\n\t\t\tOrdnungsangelegenheiten"), + create("strasse", "Flensburger Straße"), + create("hausnummer", "7"), + create("postleitzahl", "24837"), + create("ortID", "9007314"), + create("ort", "Schleswig"), + create("telefonnummer", "04621 87-0"), + create("telefaxnummer", "04621 87-366"), + create("emailadresse", "Gefahrenabwehr@Kiel.de"), + create("kontaktsystem_kennung", "afmsh:9535669_kleinerWaffenschein"), + create("AnliegenBEZEICHNUNG", "Waffenschein / Kleiner Waffenschein"), + create("leikaKEYLIST", "99089008000000;99089008001000"), + create("auswahl_zustellung", "abholen"), + create("b_zustellung", "Ich hole den Kleinen Waffenschein selbst ab.") + ); + +} diff --git a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapperTest.java b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapperTest.java similarity index 74% rename from intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapperTest.java rename to intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapperTest.java index f7761c4832221b726bbf6f4808947d5a865a2bfc..3370469d37c2b90d4ea9e1c4130ce2b723e3feef 100644 --- a/intelliform-adapter/src/test/java/de/itvsh/kop/eingangsadapter/intelliform/XmlToJavaMapsMapperTest.java +++ b/intelliform-adapter/src/test/java/de/ozgcloud/eingang/intelliform/XmlToJavaMapsMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,35 +21,42 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.intelliform; +package de.ozgcloud.eingang.intelliform; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; -import java.io.IOException; +import java.util.Collections; import java.util.List; import java.util.Map; +import jakarta.xml.soap.Node; + import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; import org.w3c.dom.Document; -class XmlToJavaMapsMapperTest { +import de.ozgcloud.common.errorhandling.TechnicalException; - private XmlToJavaMapsMapper mapper; - private Document document; +class XmlToJavaMapsMapperTest { - @BeforeEach - void init() throws IOException { + @InjectMocks + private XmlToJavaMapsMapper mapper = new XmlToJavaMapsMapper(); + @Mock + private JsonService jsonService; - mapper = new XmlToJavaMapsMapper(); - document = mapper.parseAsW3cDocument(XmlToJavaMapsMapperTest.class.getResourceAsStream("/intelliform/SimpleFormDataMapperTestFile.xml")); - } + private final Document document = mapper.parseAsW3cDocument( + XmlToJavaMapsMapperTest.class.getResourceAsStream("/intelliform/SimpleFormDataMapperTestFile.xml")); @Test void testSimpleNode() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).containsKey("simplenode"); assertThat(formData.get("simplenode")).isInstanceOf(String.class).isEqualTo("simplenodevalue"); @@ -58,7 +65,7 @@ class XmlToJavaMapsMapperTest { @Test void testEmptyNodeNotMapped() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).doesNotContainKey("emptynode"); } @@ -71,7 +78,7 @@ class XmlToJavaMapsMapperTest { @Test void nestedMapNodeShouldBeMap() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).containsKey(MAIN_NODE_NAME); assertThat(formData.get(MAIN_NODE_NAME)).isInstanceOf(Map.class); @@ -81,7 +88,7 @@ class XmlToJavaMapsMapperTest { @SuppressWarnings("unchecked") void nestedMapNodeShouldContainValues() { - Map<String, Object> nestedMapNode = (Map<String, Object>) mapper.mapXmlToJavaMaps(document).get(MAIN_NODE_NAME); + Map<String, Object> nestedMapNode = (Map<String, Object>) mapXmlToJavaMaps().get(MAIN_NODE_NAME); assertThat(nestedMapNode).hasSize(2) .containsEntry("nestedmapnode1", "nestedmapnodevalue1") @@ -99,7 +106,7 @@ class XmlToJavaMapsMapperTest { @Test void shouldContainNestedListWithStringsNode() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).containsKey(MAIN_NODE_NAME); } @@ -107,7 +114,7 @@ class XmlToJavaMapsMapperTest { @Test void valuesShouldBeJavaList() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); @@ -118,7 +125,7 @@ class XmlToJavaMapsMapperTest { @Test void shouldContainValues() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); List<String> nestedList = (List<String>) mainNode.get(NESTED_NODE_NAME); @@ -136,7 +143,7 @@ class XmlToJavaMapsMapperTest { @Test void shouldContainNestedListWithObjectsNode() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); assertThat(formData).containsKey(MAIN_NODE_NAME); } @@ -144,7 +151,7 @@ class XmlToJavaMapsMapperTest { @Test void valuesShouldBeJavaList() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); Map<String, Object> mainNode = (Map<String, Object>) formData.get(MAIN_NODE_NAME); @@ -155,7 +162,7 @@ class XmlToJavaMapsMapperTest { @Test void shouldContainTwoElements() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); List<Object> nestedList = getNestedList(formData); assertThat(nestedList).hasSize(2); @@ -164,7 +171,7 @@ class XmlToJavaMapsMapperTest { @Test void validateLevel2ValuesOfMap1() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); List<Object> nestedList = getNestedList(formData); Map<String, Object> map1 = (Map<String, Object>) nestedList.get(0); @@ -176,7 +183,7 @@ class XmlToJavaMapsMapperTest { @Test void validateLevel2ValuesOfMap2() { - Map<String, Object> formData = mapper.mapXmlToJavaMaps(document); + Map<String, Object> formData = mapXmlToJavaMaps(); List<Object> nestedList = getNestedList(formData); Map<String, Object> map2 = (Map<String, Object>) nestedList.get(1); @@ -264,9 +271,60 @@ class XmlToJavaMapsMapperTest { return (Map<String, Object>) singleFileParentItem.get(FILE); } } + } + + @DisplayName("Get content value") + @Nested + class TestGetContentValue { + + @DisplayName("from json node") + @Nested + class TestJsonNode { + + private static final String VALID_EMPTY_JSON = "{}"; + + @Mock + private Node node; + + @BeforeEach + void mockNode() { + when(node.getNodeName()).thenReturn(XmlToJavaMapsMapper.REST_RESPONSE_NAME); + } + + @Test + void shouldCallJSONService() { + getContentValue(); - private Map<String, Object> mapXmlToJavaMaps() { - return mapper.mapXmlToJavaMaps(document); + verify(jsonService).readAsListMap(any()); + } + + @Test + void shouldReturnValueOnValidJson() { + var expectedValue = Collections.<Map<String, Object>>emptyList(); + when(jsonService.readAsListMap(anyString())).thenReturn(expectedValue); + + var value = getContentValue(); + + assertThat(value).isEqualTo(expectedValue); + } + + @Test + void shouldReturnEmptyListOnException() { + when(jsonService.readAsListMap(anyString())).thenThrow(TechnicalException.class); + + var value = getContentValue(); + + assertThat(value).isEmpty(); + } + + @SuppressWarnings("unchecked") + private List<Object> getContentValue() { + return (List<Object>) mapper.getContentValue(node, VALID_EMPTY_JSON); + } } } -} + + private Map<String, Object> mapXmlToJavaMaps() { + return mapper.mapXmlToJavaMaps(document); + } +} \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml b/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml index 767e3ce6d46e0810b26d6388f63cb606d84e5629..e01c0e94b2f5f22fd1cd9f71377591192c87d4a6 100644 --- a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml +++ b/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDaten1.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.ozg-sh.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> +<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.by.kop-cloud.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> <KontaktsystemTypA>233034600</KontaktsystemTypA> <KontaktsystemTypB>233034601</KontaktsystemTypB> <AnliegenID>8966671</AnliegenID> diff --git a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml b/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml index 0103d526a8184aeb856186dcb980f0e191faa5d8..6220390903cbc00fe567f85f7f6171be22688257 100644 --- a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml +++ b/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeXmlDatenVerschachtelt.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.ozg-sh.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> +<myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.by.kop-cloud.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> <KontaktsystemTypA>233034600</KontaktsystemTypA> <KontaktsystemTypB>233034601</KontaktsystemTypB> <AnliegenID>8966671</AnliegenID> diff --git a/intelliform-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml b/intelliform-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml index 076f3da7010bf03abf5e40c96436781221337f4a..73be33912deb4aecb41032daee5f6203d1799403 100644 --- a/intelliform-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml +++ b/intelliform-adapter/src/test/resources/intelliform/FormularSoapRequest_WithContent_XML-Daten-1.xml @@ -185,7 +185,7 @@ L3ZlcndhbHR1bmdzbGVpc3R1bmdlbj4KCTwvZm0+CjwvbXlGb3JtPg==</content> <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> <id>20210415307020414701</id> <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> + <sender>intelliform.by.kop-cloud.de</sender> <timestamp>2021-04-15T08:33:39.443Z</timestamp> <username /> </data> diff --git a/intelliform-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml b/intelliform-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml index 8759b53ba94b542007c0b94ac46e574ab81087c3..9a02da3fb9263d0c1f897eda15ee224e2d0b0762 100644 --- a/intelliform-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml +++ b/intelliform-adapter/src/test/resources/intelliform/SimpleFormDataMapperTestFile.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> <myForm> - <!-- { simplenode: "simplenodevalue" } --> <simplenode>simplenodevalue</simplenode> <emptynode /> @@ -55,4 +54,7 @@ </single_file_parent-item> </single_file_parent> -</myForm> + <rest_response_name> + [{"strName":"strNameValue","objectName":[{"objectStrName":"objectStrNameValue","objectNumberName": 1 }]}] + </rest_response_name> +</myForm> \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml b/intelliform-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml new file mode 100644 index 0000000000000000000000000000000000000000..ea9ad422542f33511886964cfb34d68c375a1c19 --- /dev/null +++ b/intelliform-adapter/src/test/resources/intelliform/XML-Daten-1-SoapRequest.xml @@ -0,0 +1,30 @@ +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCTxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+Cgk8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KCTxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+Cgk8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KCTxuYW1laWQ+Y2JhY2IwMWEtMjgxMC0xMWVjLWJiNmYtYzMxOTM5Zjg4NzRlPC9uYW1laWQ+Cgk8YW50cmFnc3RlbGxlcj4KCQk8cGVyc19hbnJlZGU+SGVyciQwMzwvcGVyc19hbnJlZGU+CgkJPHBlcnNfbmFjaG5hbWU+VGVzdGVybWFubjwvcGVyc19uYWNobmFtZT4KCQk8cGVyc192b3JuYW1lPk1heDwvcGVyc192b3JuYW1lPgoJCTxwZXJzX2dlYnVydHNuYW1lPk1heCBUZXN0ZXJtYW5uPC9wZXJzX2dlYnVydHNuYW1lPgoJCTxwZXJzX2dlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9wZXJzX2dlYnVydHNkYXR1bT4KCQk8cGVyc19nZWJ1cnRzb3J0PkZsZW5zYnVyZzwvcGVyc19nZWJ1cnRzb3J0PgoJCTxwZXJzX2dlYnVydHNsYW5kPmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX2dlYnVydHNsYW5kPgoJCTxwZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PgoJCTxiX2FucmVkZT5IZXJyPC9iX2FucmVkZT4KCQk8Yl9hbnJlZGVfc2NobHVlc3NlbG5yPjAzPC9iX2FucmVkZV9zY2hsdWVzc2VsbnI+CgkJPGJfZ2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2JfZ2VidXJ0c2xhbmQ+CgkJPGJfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+MDAwPC9iX2dlYnVydHNsYW5kX3NpZ25hdHVyPgoJCTxiX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2g8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+MDAwPC9iX3N0YWF0c2FuZ2Vob2VyaWdrZWl0X3NpZ25hdHVyPgoJCTxzaF9zdHJhc3NlPkvDtm5pZ3N3ZWc8L3NoX3N0cmFzc2U+CgkJPHNoX2hhdXNudW1tZXI+NzQ8L3NoX2hhdXNudW1tZXI+CgkJPHNoX3Bsej4yNDgzNzwvc2hfcGx6PgoJCTxvcnRfYXVzd2FobD45MDA3MzE0JDAxMDU5MDc1PC9vcnRfYXVzd2FobD4KCQk8b3J0PlNjaGxlc3dpZzwvb3J0PgoJCTxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KCQk8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDU5MDc1PC9HZWJpZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZvbm51bW1lcj4KCQk8a29udF9tb2JpbG51bW1lcj4rNDkgMTIzPC9rb250X21vYmlsbnVtbWVyPgoJCTxrb250X3RlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZheG51bW1lcj4KCQk8a29udF9lbWFpbD5tYXgudGVzdGVybWFubkBnbXguZGU8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4KCQk8cGVyc29lbmxpY2hlRWlnbnVuZz4KCQkJPG1hZW5nZWx2b3JoYW5kZW4+ZmFsc2U8L21hZW5nZWx2b3JoYW5kZW4+CgkJCTxlcm1pdHRsdW5nc3ZlcmZhaHJlbj5mYWxzZTwvZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+CgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz5mYWxzZTwvTWl0Z2xpZWRzY2hhZnRJblZlcmJvdGVybmVyVmVyZWluaWd1bmc+CgkJPC9wZXJzb2VubGljaGVFaWdudW5nPgoJPC9hbnRyYWdzdGVsbGVyPgoJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCgkJCVNjaGxlc3dpZy1GbGVuc2J1cmcvS3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQoJCQlPcmRudW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPkZsZW5zYnVyZ2VyIFN0cmHDn2U8L3N0cmFzc2U+CgkJPGhhdXNudW1tZXI+NzwvaGF1c251bW1lcj4KCQk8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CgkJPG9ydElEPjkwMDczMTQ8L29ydElEPgoJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+MDQ2MjEgODctMDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4wNDYyMSA4Ny0zNjY8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2UgLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjk1MzU2Njlfa2xlaW5lcldhZmZlbnNjaGVpbjwva29udGFrdHN5c3RlbV9rZW5udW5nPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4KCQk8QW5saWVnZW5CRVpFSUNITlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJPGF1c3dhaGxfenVzdGVsbHVuZz5hYmhvbGVuPC9hdXN3YWhsX3p1c3RlbGx1bmc+CgkJPGJfenVzdGVsbHVuZz5JY2ggaG9sZSBkZW4gS2xlaW5lbiBXYWZmZW5zY2hlaW4gc2VsYnN0IGFiLjwvYl96dXN0ZWxsdW5nPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KCTxlbXBmYW5nZW5kZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lcgoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVsPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+CgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+Cgk8L2VtcGZhbmdlbmRlc3RlbGxlPgoJPGVya2xhZXJ1bmdlbj4KCQk8Y2hlY2tfZ2VidWVocmVuPnRydWU8L2NoZWNrX2dlYnVlaHJlbj4KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+CgkJPGNoZWNrX2RhdGVuc2NodXR6PnRydWU8L2NoZWNrX2RhdGVuc2NodXR6PgoJCTxjaGVja19taXNzYnJhdWNoPnRydWU8L2NoZWNrX21pc3NicmF1Y2g+CgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyBkdXJjaCBkYXMgRWlucmVpY2hlbgoJCQlkZXMgZWxla3Ryb25pc2NoZW4gQW50cmFnZXMgdm9uIGRlciB6dXN0w6RuZGlnZW4gU3RlbGxlIEdlYsO8aHJlbgoJCQllcmhvYmVuIHdlcmRlbiBrw7ZubmVuLjwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCTxiX2dlYnVlaHJlbl9pbnRybz5HZWLDvGhyIGJlaSBBdXNzdGVsbHVuZyBkZXMga2xlaW5lbiBXYWZmZW5zY2hlaW5zOgoJCQk2MCwwMCBFdXJvLiBCZWFyYmVpdHVuZ3NnZWLDvGhyIGJlaSBWZXJzYWd1bmc6IDQ1LDAwIEV1cm8uCgkJCVNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIKCQkJRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyCgkJCVByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUKCQkJQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwKCQkJZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4KCQkJVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4KCQkJUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcgoJCQlFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyCgkJCUF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIKCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMKCQkJTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwKCQkJdmVyYXJiZWl0ZXQgdW5kIGRpZXNlIGltIFJhaG1lbiBkZXIgZ2VzZXR6bGljaGVuIEJlc3RpbW11bmdlbiBhbiBkaWUKCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoCgkJCW1pdCBkZXIgcmVjaHRza29uZm9ybWVuIERhdGVudmVyYXJiZWl0dW5nIHVuZCBTcGVpY2hlcnVuZyBkdXJjaCBkaWUKCQkJenVzdMOkbmRpZ2UgU3RlbGxlIGVpbnZlcnN0YW5kZW4uIE1pciBpc3QgYmVrYW5udCwgZGFzcyBpY2ggZGllCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyCgkJCWRlbSBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4sIFJldmVudGxvdWFsbGVlCgkJCTYsIDI0MTA1IEtpZWwgd2lkZXJydWZlbiBrYW5uLiBFaW4gV2lkZXJydWYgaXN0IGFiZXIgbnVyIHdpcmtzYW0gZsO8cgoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZAoJCQlkYXZvbiBuaWNodCBiZXRyb2ZmZW4uIMOcYmVyIGRpZSBWZXJhcmJlaXR1bmcgbWVpbmVyIHBlcnNvbmVuYmV6b2dlbmVuCgkJCURhdGVuIHVuZCBkaWUgbWlyIG5hY2ggZGVuIGRhdGVuc2NodXR6cmVjaHRsaWNoZW4gUmVnZWx1bmdlbgoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nCgkJCUtlbm50bmlzIGVybGFuZ3QuPC9iX2RhdGVuc2NodXR6PgoJCTxiX21pc3NicmF1Y2g+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgenVyIFZlcmZvbGd1bmcgd2lkZXJyZWNodGxpY2hlcgoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMKCQkJYXVmZ2V6ZWljaG5ldCB1bmQgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLjwvYl9taXNzYnJhdWNoPgoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdlbj4KCTxsb2dvdXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+Cgk8Zm0+CgkJPGFuc3ByZWNocGFydG5lcj4KCQkJPGZpcm1lbm5hbWUgLz4KCQkJPGFucmVkZT5IZXJyPC9hbnJlZGU+CgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+CgkJCTxhbnNjaHJpZnQ+CgkJCQk8c3RyYXNzZT5Lw7ZuaWdzd2VnPC9zdHJhc3NlPgoJCQkJPGhhdXNudW1tZXI+NzQ8L2hhdXNudW1tZXI+CgkJCQk8cG9zdGZhY2ggLz4KCQkJCTxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KCQkJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJCQk8b3J0c3RlaWwgLz4KCQkJCTx6dXNhdHogLz4KCQkJCTxzdGFhdD5EZXV0c2NobGFuZDwvc3RhYXQ+CgkJCTwvYW5zY2hyaWZ0PgoJCQk8a29udGFrdD4KCQkJCTx0ZWxlZm9ubnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZm9ubnVtbWVyPgoJCQkJPG1vYmlsbnVtbWVyPis0OSAxMjM8L21vYmlsbnVtbWVyPgoJCQkJPHRlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmYXhudW1tZXI+CgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPgoJCQkJPGRlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CgkJCTwva29udGFrdD4KCQk8L2Fuc3ByZWNocGFydG5lcj4KCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgoJCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZz4KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5LcmVpcwoJCQkJCQlTY2hsZXN3aWctRmxlbnNidXJnL0tyZWlzdmVyd2FsdHVuZyAtIEFsbGdlbWVpbmUKCQkJCQkJT3JkbnVuZ3NhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgoJCQkJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJCQkJPEdlYmlldEJFWkVJQ0hOVU5HPlNjaGxlc3dpZzwvR2ViaWV0QkVaRUlDSE5VTkc+CgkJCQk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJCQkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPgoJCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmc+CgkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+Cgk8L2ZtPgo8L215Rm9ybT4=</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnTestServer</form> + <formId>SimpleFormSendetAnTestServer</formId> + <id>20221212092912345678</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.ozg-sh.de</sender> + <timestamp>2022-12-12T09:30:29.443Z</timestamp> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> diff --git a/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml b/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml index 2e5cee1410d946e8d3da941e434fd37bef612243..0680f1fb09ba4e4b1a8f9d00cb22c8a32519dac5 100644 --- a/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml +++ b/intelliform-adapter/src/test/resources/intelliform/soaprequest_other-name.xml @@ -26,7 +26,7 @@ <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> <id>20210415307020414701</id> <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> + <sender>intelliform.by.kop-cloud.de</sender> <timestamp>2021-04-15T08:33:39.443Z</timestamp> <username /> </data> diff --git a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapRequest.xml b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml similarity index 96% rename from intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapRequest.xml rename to intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml index ef8db9275d1f66d726c8c6f01692385ea0140a7a..7310f90d249fba6145b33be10d2c809d55b0de1c 100644 --- a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapRequest.xml +++ b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest.xml @@ -8,7 +8,114 @@ <key>X-IntelliForm-Signed</key> <value>false</value> </attributes> - <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiIHhtbG5zOnQ9Imh0dHA6Ly94bWxucy5jaXQuZGUvaW50ZWxsaWZvcm0vdHJhbnNhY3Rpb24iIHQ6dXVpZD0iZWFjMjQ4MGUtNzE2Ni00YjE2LWJkZGQtODgwNTkxZTdkOTNiIiB0OmlkPSIyMDIxMDQxNTMwNzAyMDQxNDcwMSIgdDp0aW1lc3RhbXA9IjIwMjEtMDQtMTVUMDg6MzE6NDIuMzk4WiIgdDpzZW5kZXI9ImludGVsbGlmb3JtLm96Zy1zaC5kZSIgdDpmb3JtPSJTaW1wbGVGb3JtU2VuZGV0QW5Ib21lU2VydmVyVm9uVG9yc3RlbiIgdDpmb3JtLWlkPSJTaW1wbGVGb3JtU2VuZGV0QW5Ib21lU2VydmVyVm9uVG9yc3RlbiIgdDpjdXN0b21lcj0iS2llbCIgdDpjdXN0b21lci1pZD0iS2llbCIgdDpjbGllbnQ9InNoLWRldiIgdDpjbGllbnQtaWQ9InNoLWRldiI+PEtvbnRha3RzeXN0ZW1UeXBBPjIzMzAzNDYwMDwvS29udGFrdHN5c3RlbVR5cEE+PEtvbnRha3RzeXN0ZW1UeXBCPjIzMzAzNDYwMTwvS29udGFrdHN5c3RlbVR5cEI+PEFubGllZ2VuSUQ+ODk2NjY3MTwvQW5saWVnZW5JRD48YW50cmFnc3RlbGxlcj48c2hfc3RyYXNzZT5BbiBkZXIgU2NobmVpZGVyZWk8L3NoX3N0cmFzc2U+PHNoX2hhdXNudW1tZXI+MTwvc2hfaGF1c251bW1lcj48c2hfcGx6PjI0MTAzPC9zaF9wbHo+PG9ydF9hdXN3YWhsPjkwMDY0MDIkMDEwMDIwMDA8L29ydF9hdXN3YWhsPjxvcnQ+S2llbDwvb3J0PjxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD48R2ViaWV0QkVaRUlDSE5VTkc+S2llbDwvR2ViaWV0QkVaRUlDSE5VTkc+PEdlYmlldEdOUjk0X0dOUj4wMTAwMjAwMDwvR2ViaWV0R05SOTRfR05SPjxzdGFhdD4wMDA8L3N0YWF0Pjxpc28zMTY2bnVtZXJpc2NoPjI3NjwvaXNvMzE2Nm51bWVyaXNjaD48a29udF90ZWxlZm9ubnVtbWVyLz48a29udF9tb2JpbG51bW1lci8+PGtvbnRfdGVsZWZheG51bW1lci8+PGtvbnRfZW1haWw+c2NobmVpZGVyQGhlbGdlc2NobmVpZGVyLmxvY2FsPC9rb250X2VtYWlsPjxrb250X2RlbWFpbC8+PC9hbnRyYWdzdGVsbGVyPjxVcGxvYWQxPjxmaWxlIGNvbnRlbnQtdHlwZT0iaW1hZ2UvanBlZyIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuRTBGQkEzNjFDMTkxRjhCNzIzOTQ5NDY3QUUzMDJCRUEyNEU0NzQ1RSIgbGVuZ3RoPSIxNTUyNTEiPkhlbGdlMS5qcGc8L2ZpbGU+PC9VcGxvYWQxPjxVcGxvYWQyPjxmaWxlIGNvbnRlbnQtdHlwZT0iYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0IiBkZXNjcmlwdGlvbj0iIiBpZD0iYXNzaXN0YW50cy41MkQ3OUU1QjIxMThEMTc0MDA0NUFCODcxNTE1MzVEQ0FEMjRFOUE3IiBsZW5ndGg9Ijc5OTMiPkhlbGdldGV4dDIub2R0PC9maWxlPjwvVXBsb2FkMj48R2ViaWV0SUQ+OTAwNjQwMjwvR2ViaWV0SUQ+PHp1c3RhZW5kaWdlc3RlbGxlPjxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4xMDM2MzQ1NTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+PE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4xMDM2MzQ1NTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjxPcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+TGFuZGVzaGF1cHRzdGFkdCBLaWVsIC0gQsO8cmdlci0gdW5kIE9yZG51bmdzYW10LCBTYWNoYmVyZWljaCBHZWZhaHJlbmFid2VociwgV2FmZmVuYW5nZWxlZ2VuaGVpdGVuLCBKYWdkYmVow7ZyZGUsIEJlc3RhdHR1bmdzYW5nZWxlZ2VuaGVpdGVuPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQkVaRUlDSE5VTkc+PHN0cmFzc2U+U3RyZXNlbWFubnBsYXR6PC9zdHJhc3NlPjxoYXVzbnVtbWVyPjU8L2hhdXNudW1tZXI+PHBvc3RsZWl0emFobD4yNDEwMzwvcG9zdGxlaXR6YWhsPjxvcnRJRD45MDA2NDAyPC9vcnRJRD48b3J0PktpZWw8L29ydD48dGVsZWZvbm51bW1lci8+PHRlbGVmYXhudW1tZXI+KzQ5IDQzMSA5MDEtNjIxODE8L3RlbGVmYXhudW1tZXI+PGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+PGRlbWFpbGFkcmVzc2UvPjxrb250YWt0c3lzdGVtX2tlbm51bmcvPjxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHovPjxBbmxpZWdlbkJFWkVJQ0hOVU5HPldhZmZlbnNjaGVpbiAvIEtsZWluZXIgV2FmZmVuc2NoZWluPC9BbmxpZWdlbkJFWkVJQ0hOVU5HPjxsZWlrYUtFWUxJU1Q+OTkwODkwMDgwMDAwMDA7OTkwODkwMDgwMDEwMDA8L2xlaWthS0VZTElTVD48L3p1c3RhZW5kaWdlc3RlbGxlPjxlbXBmYW5nZW5kZXN0ZWxsZT48T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+PE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+PE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz48c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT48aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPjxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD48b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+PG9ydD5LaWVsPC9vcnQ+PHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj48dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPjxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPjxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT48a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+PGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+PC9lbXBmYW5nZW5kZXN0ZWxsZT48ZXJrbGFlcnVuZ2VuPjxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPjxjaGVja19yaWNodGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD48Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+PGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlzc2JyYXVjaD48Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPiogTWlyIGlzdCBiZWthbm50LCBkYXNzIGR1cmNoIGRhcyBFaW5yZWljaGVuIGRlcyBlbGVrdHJvbmlzY2hlbiBBbnRyYWdlcyB2b24gZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuIGVyaG9iZW4gd2VyZGVuIGvDtm5uZW4uPC9iX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+PGJfZ2VidWVocmVuX2ludHJvPkdlYsO8aHIgYmVpIEF1c3N0ZWxsdW5nIGRlcyBrbGVpbmVuIFdhZmZlbnNjaGVpbnM6IDYwLDAwIEV1cm8uIEJlYXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVyby4gClNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIgRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyIFByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUgQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwgZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4gVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4gUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz48Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+PGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlciBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyIEF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIgRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMgTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwgdmVyYXJiZWl0ZXQgIHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5nZW4gYW4gZGllIGbDvHIgZGllIEVudHNjaGVpZHVuZyB6dXN0w6RuZGlnZSBTdGVsbGUgd2VpdGVybGVpdGV0LiBFYmVuc28gYmluIGljaCBtaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiAgRGF0ZW52ZXJhcmJlaXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZSB6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVyc3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUgRWlud2lsbGlndW5nIGluIGRpZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIgZGVtIEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50bG91YWxsZWUgNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3QgYWJlciBudXIgd2lya3NhbSBmw7xyIGRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZvciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kIGRhdm9uIG5pY2h0IGJldHJvZmZlbi4gw5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4gRGF0ZW4gdW5kIGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuIHp1c3RlaGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVya2zDpHJ1bmcgS2VubnRuaXMgZXJsYW5ndC48L2JfZGF0ZW5zY2h1dHo+PGJfbWlzc2JyYXVjaD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVyIE51dHp1bmcgZGllIERhdGVuIG1laW5lcyB6dXIgRGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRnZXLDpHRlcyBhdWZnZXplaWNobmV0IHVuZCB2ZXJ3ZW5kZXQgd2VyZGVuIGvDtm5uZW4uPC9iX21pc3NicmF1Y2g+PHBvbGljeXVybD5odHRwOi8vd3d3LmVhLXNoLmluZm8vZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+PC9lcmtsYWVydW5nZW4+PGxvZ291cmw+aHR0cDovL3d3dy5lYS1zaC5pbmZvL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+PC9teUZvcm0+</content> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybQoJeG1sbnM6cGRm +PSJodHRwOi8veG1sbnMuY2l0LmRlL2Fzc2lzdGFudHMvcGRmIgoJeG1sbnM6dD0iaHR0cDovL3ht +bG5zLmNpdC5kZS9pbnRlbGxpZm9ybS90cmFuc2FjdGlvbiIgdDp1dWlkPSJlYWMyNDgwZS03MTY2 +LTRiMTYtYmRkZC04ODA1OTFlN2Q5M2IiIHQ6aWQ9IjIwMjEwNDE1MzA3MDIwNDE0NzAxIiB0OnRp +bWVzdGFtcD0iMjAyMS0wNC0xNVQwODozMTo0Mi4zOThaIiB0OnNlbmRlcj0iaW50ZWxsaWZvcm0u +b3pnLXNoLmRlIiB0OmZvcm09IlNpbXBsZUZvcm1TZW5kZXRBbkhvbWVTZXJ2ZXJWb25Ub3JzdGVu +IiB0OmZvcm0taWQ9IlNpbXBsZUZvcm1TZW5kZXRBbkhvbWVTZXJ2ZXJWb25Ub3JzdGVuIiB0OmN1 +c3RvbWVyPSJLaWVsIiB0OmN1c3RvbWVyLWlkPSJLaWVsIiB0OmNsaWVudD0ic2gtZGV2IiB0OmNs +aWVudC1pZD0ic2gtZGV2Ij4KCTxLb250YWt0c3lzdGVtVHlwQT4yMzMwMzQ2MDA8L0tvbnRha3Rz +eXN0ZW1UeXBBPgoJPEtvbnRha3RzeXN0ZW1UeXBCPjIzMzAzNDYwMTwvS29udGFrdHN5c3RlbVR5 +cEI+Cgk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJPG5hbWVpZD5uYW1lSWRBc09z +aVBvc3RmYWNoSWRWMTwvbmFtZWlkPgoJPHJlc3RfcmVzcG9uc2VfbmFtZT4KCQlbeyJtZW1iZXJj +b250ZXh0IjoiNTE1MjI2MjAtMDNkMi00NTA3LWIxZjAtMDhkODY5MjBlZmVkIiwibWVtYmVyc2Nv +cGUiOlt7InRlbmFudCI6IlNIIiwibWFpbGJveGd1aWQiOiI2ODI0ZDU3My1mZjI2LTQzNGQtODFh +ZS0yYzM2NzQwZTNjYjQiLCJtYWlsYm94bmFtZSI6IiIsIm1haWxib3hkZXNjcmlwdGlvbiI6IiIs +Im1haWxib3h0eXBlIjoxLCJndWlkIjoiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAw +MDAwIiwiaWQiOjgxMjExNTV9XX1dCgk8L3Jlc3RfcmVzcG9uc2VfbmFtZT4KCTxhbnRyYWdzdGVs +bGVyPgoJCTxzaF9zdHJhc3NlPkFuIGRlciBTY2huZWlkZXJlaTwvc2hfc3RyYXNzZT4KCQk8c2hf +aGF1c251bW1lcj4xPC9zaF9oYXVzbnVtbWVyPgoJCTxzaF9wbHo+MjQxMDM8L3NoX3Bsej4KCQk8 +b3J0X2F1c3dhaGw+OTAwNjQwMiQwMTAwMjAwMDwvb3J0X2F1c3dhaGw+CgkJPG9ydD5LaWVsPC9v +cnQ+CgkJPEdlYmlldElEPjkwMDY0MDI8L0dlYmlldElEPgoJCTxHZWJpZXRCRVpFSUNITlVORz5L +aWVsPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDAyMDAwPC9HZWJp +ZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2 +PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXIvPgoJCTxrb250X21vYmls +bnVtbWVyLz4KCQk8a29udF90ZWxlZmF4bnVtbWVyLz4KCQk8a29udF9lbWFpbD5zY2huZWlkZXJA +aGVsZ2VzY2huZWlkZXIubG9jYWw8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsLz4KCTwvYW50 +cmFnc3RlbGxlcj4KCTxVcGxvYWQxPgoJCTxmaWxlIGNvbnRlbnQtdHlwZT0iaW1hZ2UvanBlZyIg +ZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuRTBGQkEzNjFDMTkxRjhCNzIzOTQ5NDY3QUUz +MDJCRUEyNEU0NzQ1RSIgbGVuZ3RoPSIxNTUyNTEiPkhlbGdlMS5qcGc8L2ZpbGU+Cgk8L1VwbG9h +ZDE+Cgk8VXBsb2FkMj4KCQk8ZmlsZSBjb250ZW50LXR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vYXNp +cy5vcGVuZG9jdW1lbnQudGV4dCIgZGVzY3JpcHRpb249IiIgaWQ9ImFzc2lzdGFudHMuNTJENzlF +NUIyMTE4RDE3NDAwNDVBQjg3MTUxNTM1RENBRDI0RTlBNyIgbGVuZ3RoPSI3OTkzIj5IZWxnZXRl +eHQyLm9kdDwvZmlsZT4KCTwvVXBsb2FkMj4KCTxHZWJpZXRJRD45MDA2NDAyPC9HZWJpZXRJRD4K +CTx6dXN0YWVuZGlnZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+MTAz +NjM0NTU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5BdXN3YWhsPgoJCTxPcmdhbmlzYXRpb25zZWlu +aGVpdGVuSUQ+MTAzNjM0NTU8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0 +aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkxhbmRlc2hhdXB0c3RhZHQgS2llbCAtIELDvHJnZXIt +IHVuZCBPcmRudW5nc2FtdCwgU2FjaGJlcmVpY2ggR2VmYWhyZW5hYndlaHIsIFdhZmZlbmFuZ2Vs +ZWdlbmhlaXRlbiwgSmFnZGJlaMO2cmRlLCBCZXN0YXR0dW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3Jn +YW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPlN0cmVzZW1hbm5wbGF0 +ejwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj41PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+ +MjQxMDM8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVs +PC9vcnQ+CgkJPHRlbGVmb25udW1tZXIvPgoJCTx0ZWxlZmF4bnVtbWVyPis0OSA0MzEgOTAxLTYy +MTgxPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+R2VmYWhyZW5hYndlaHJAS2llbC5k +ZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlLz4KCQk8a29udGFrdHN5c3RlbV9rZW5u +dW5nLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6Lz4KCQk8QW5saWVnZW5CRVpFSUNI +TlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNI +TlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlr +YUtFWUxJU1Q+Cgk8L3p1c3RhZW5kaWdlc3RlbGxlPgoJPGVtcGZhbmdlbmRlc3RlbGxlPgoJCTxP +cmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVp +dGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjkwNjg4NzM8L09yZ2FuaXNh +dGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPkVp +bmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbjwvT3JnYW5pc2F0 +aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPlJldmVudGxvdWFsbGVlPC9zdHJh +c3NlPgoJCTxoYXVzbnVtbWVyPjY8L2hhdXNudW1tZXI+CgkJPHBvc3RsZWl0emFobD4yNDEwNTwv +cG9zdGxlaXR6YWhsPgoJCTxvcnRJRD45MDA2NDAyPC9vcnRJRD4KCQk8b3J0PktpZWw8L29ydD4K +CQk8dGVsZWZvbm51bW1lcj4rNDkgNDMxIDk4OC04NjUwPC90ZWxlZm9ubnVtbWVyPgoJCTx0ZWxl +ZmF4bnVtbWVyPis0OSA0MzEgOTg4LTYxNjExMTE8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRy +ZXNzZT5pbmZvQGVhLXNoLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2U+ZWEtcG9z +dHN0ZWxsZUBlYS1zaC5kZS1tYWlsLmRlPC9kZW1haWxhZHJlc3NlPgoJCTxrb250YWt0c3lzdGVt +X2tlbm51bmc+YWZtc2g6OTA2ODg3M19BdXNuYWhtZUxLV0ZhaHJ2ZXJib3Q8L2tvbnRha3RzeXN0 +ZW1fa2VubnVuZz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nenVzYXR6PmFsbGU8L2tvbnRha3Rz +eXN0ZW1fa2VubnVuZ3p1c2F0ej4KCTwvZW1wZmFuZ2VuZGVzdGVsbGU+Cgk8ZXJrbGFlcnVuZ2Vu +PgoJCTxjaGVja19nZWJ1ZWhyZW4+dHJ1ZTwvY2hlY2tfZ2VidWVocmVuPgoJCTxjaGVja19yaWNo +dGlna2VpdD50cnVlPC9jaGVja19yaWNodGlna2VpdD4KCQk8Y2hlY2tfZGF0ZW5zY2h1dHo+dHJ1 +ZTwvY2hlY2tfZGF0ZW5zY2h1dHo+CgkJPGNoZWNrX21pc3NicmF1Y2g+dHJ1ZTwvY2hlY2tfbWlz +c2JyYXVjaD4KCQk8Yl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPiogTWlyIGlzdCBiZWthbm50LCBk +YXNzIGR1cmNoIGRhcyBFaW5yZWljaGVuIGRlcyBlbGVrdHJvbmlzY2hlbiBBbnRyYWdlcyB2b24g +ZGVyIHp1c3TDpG5kaWdlbiBTdGVsbGUgR2Viw7xocmVuIGVyaG9iZW4gd2VyZGVuIGvDtm5uZW4u +PC9iX2dlYnVlaHJlbl9iZXNjaHJpZnR1bmc+CgkJPGJfZ2VidWVocmVuX2ludHJvPkdlYsO8aHIg +YmVpIEF1c3N0ZWxsdW5nIGRlcyBrbGVpbmVuIFdhZmZlbnNjaGVpbnM6IDYwLDAwIEV1cm8uIEJl +YXJiZWl0dW5nc2dlYsO8aHIgYmVpIFZlcnNhZ3VuZzogNDUsMDAgRXVyby4gClNpZSBzaW5kIGdl +bcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRl +IGRpZSB6dXIgRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8 +bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyIFByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1 +dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUgQmVow7ZyZGUgZWluZSB1bmJlc2No +csOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwgZWluZSBBdXNr +dW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4gVmVyZmFocmVu +c3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4gUG9saXplaWRpZW5z +dHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRy +bz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWlu +ZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOk +cmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlciBFaW5oZWl0bGljaGVyIEFuc3By +ZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyIEF1Zmdh +YmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIgRGF0 +ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMgTGFuZGVzZGF0ZW5zY2h1 +dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwgdmVyYXJi +ZWl0ZXQgIHVuZCBkaWVzZSBpbSBSYWhtZW4gZGVyIGdlc2V0emxpY2hlbiBCZXN0aW1tdW5nZW4g +YW4gZGllIGbDvHIgZGllIEVudHNjaGVpZHVuZyB6dXN0w6RuZGlnZSBTdGVsbGUgd2VpdGVybGVp +dGV0LiBFYmVuc28gYmluIGljaCBtaXQgZGVyIHJlY2h0c2tvbmZvcm1lbiAgRGF0ZW52ZXJhcmJl +aXR1bmcgdW5kIFNwZWljaGVydW5nIGR1cmNoIGRpZSB6dXN0w6RuZGlnZSBTdGVsbGUgZWludmVy +c3RhbmRlbi4gTWlyIGlzdCBiZWthbm50LCBkYXNzIGljaCBkaWUgRWlud2lsbGlndW5nIGluIGRp +ZSBWZXJhcmJlaXR1bmcgdW5kIMOcYmVybWl0dGx1bmcgamVkZXJ6ZWl0IGdlZ2Vuw7xiZXIgZGVt +IEVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIFNjaGxlc3dpZy1Ib2xzdGVpbiwgUmV2ZW50 +bG91YWxsZWUgNiwgMjQxMDUgS2llbCB3aWRlcnJ1ZmVuIGthbm4uIEVpbiBXaWRlcnJ1ZiBpc3Qg +YWJlciBudXIgd2lya3NhbSBmw7xyIGRpZSBadWt1bmZ0LiBWZXJhcmJlaXR1bmdlbiwgZGllIHZv +ciBkZW0gV2lkZXJydWYgZXJmb2xndCBzaW5kLCBzaW5kIGRhdm9uIG5pY2h0IGJldHJvZmZlbi4g +w5xiZXIgZGllIFZlcmFyYmVpdHVuZyBtZWluZXIgcGVyc29uZW5iZXpvZ2VuZW4gRGF0ZW4gdW5k +IGRpZSBtaXIgbmFjaCBkZW4gZGF0ZW5zY2h1dHpyZWNodGxpY2hlbiBSZWdlbHVuZ2VuIHp1c3Rl +aGVuZGVuIEFuc3Byw7xjaGUgdW5kIFJlY2h0ZSBoYWJlIGljaCB1bnRlciBEYXRlbnNjaHV0emVy +a2zDpHJ1bmcgS2VubnRuaXMgZXJsYW5ndC48L2JfZGF0ZW5zY2h1dHo+CgkJPGJfbWlzc2JyYXVj +aD4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyB6dXIgVmVyZm9sZ3VuZyB3aWRlcnJlY2h0bGljaGVy +IE51dHp1bmcgZGllIERhdGVuIG1laW5lcyB6dXIgRGF0ZW5laW5nYWJlIGdlbnV0enRlbiBFbmRn +ZXLDpHRlcyBhdWZnZXplaWNobmV0IHVuZCB2ZXJ3ZW5kZXQgd2VyZGVuIGvDtm5uZW4uPC9iX21p +c3NicmF1Y2g+CgkJPHBvbGljeXVybD5odHRwOi8vd3d3LmVhLXNoLmluZm8vZGF0ZW5zY2h1dHov +ZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdl +bj4KCTxsb2dvdXJsPmh0dHA6Ly93d3cuZWEtc2guaW5mby9sb2dvcy9rb3BmXzkwNjg4NzMuZG9j +PC9sb2dvdXJsPgo8L215Rm9ybT4=</content> <contentType>text/xml</contentType> <id>myForm-xml</id> <name>XML-Daten.xml</name> @@ -42,7 +149,7 @@ <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> <id>20210415307020414701</id> <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> - <sender>intelliform.ozg-sh.de</sender> + <sender>intelliform.by.kop-cloud.de</sender> <timestamp>2021-04-15T08:33:39.443Z</timestamp> <username /> </data> diff --git a/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml new file mode 100644 index 0000000000000000000000000000000000000000..7dd12502caa44f16c8d38a301b3a3f7771451b34 --- /dev/null +++ b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapRequest_XML-Daten.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8"?> +<myForm + xmlns:pdf="http://xmlns.cit.de/assistants/pdf" + xmlns:t="http://xmlns.cit.de/intelliform/transaction" t:uuid="eac2480e-7166-4b16-bddd-880591e7d93b" t:id="20210415307020414701" t:timestamp="2021-04-15T08:31:42.398Z" t:sender="intelliform.ozg-sh.de" t:form="SimpleFormSendetAnHomeServerVonTorsten" t:form-id="SimpleFormSendetAnHomeServerVonTorsten" t:customer="Kiel" t:customer-id="Kiel" t:client="sh-dev" t:client-id="sh-dev"> + <KontaktsystemTypA>233034600</KontaktsystemTypA> + <KontaktsystemTypB>233034601</KontaktsystemTypB> + <AnliegenID>8966671</AnliegenID> + <nameid>nameIdAsOsiPostfachIdV1</nameid> + <rest_response_name> + [{"membercontext":"51522620-03d2-4507-b1f0-08d86920efed","memberscope":[{"tenant":"SH","mailboxguid":"6824d573-ff26-434d-81ae-2c36740e3cb4","mailboxname":"","mailboxdescription":"","mailboxtype":1,"guid":"00000000-0000-0000-0000-000000000000","id":8121155}]}] + </rest_response_name> + <antragsteller> + <sh_strasse>An der Schneiderei</sh_strasse> + <sh_hausnummer>1</sh_hausnummer> + <sh_plz>24103</sh_plz> + <ort_auswahl>9006402$01002000</ort_auswahl> + <ort>Kiel</ort> + <GebietID>9006402</GebietID> + <GebietBEZEICHNUNG>Kiel</GebietBEZEICHNUNG> + <GebietGNR94_GNR>01002000</GebietGNR94_GNR> + <staat>000</staat> + <iso3166numerisch>276</iso3166numerisch> + <kont_telefonnummer/> + <kont_mobilnummer/> + <kont_telefaxnummer/> + <kont_email>schneider@helgeschneider.local</kont_email> + <kont_demail/> + </antragsteller> + <Upload1> + <file content-type="image/jpeg" description="" id="assistants.E0FBA361C191F8B723949467AE302BEA24E4745E" length="155251">Helge1.jpg</file> + </Upload1> + <Upload2> + <file content-type="application/vnd.oasis.opendocument.text" description="" id="assistants.52D79E5B2118D1740045AB87151535DCAD24E9A7" length="7993">Helgetext2.odt</file> + </Upload2> + <GebietID>9006402</GebietID> + <zustaendigestelle> + <OrganisationseinheitenAuswahl>10363455</OrganisationseinheitenAuswahl> + <OrganisationseinheitenID>10363455</OrganisationseinheitenID> + <OrganisationseinheitenBEZEICHNUNG>Landeshauptstadt Kiel - Bürger- und Ordnungsamt, Sachbereich Gefahrenabwehr, Waffenangelegenheiten, Jagdbehörde, Bestattungsangelegenheiten</OrganisationseinheitenBEZEICHNUNG> + <strasse>Stresemannplatz</strasse> + <hausnummer>5</hausnummer> + <postleitzahl>24103</postleitzahl> + <ortID>9006402</ortID> + <ort>Kiel</ort> + <telefonnummer/> + <telefaxnummer>+49 431 901-62181</telefaxnummer> + <emailadresse>Gefahrenabwehr@Kiel.de</emailadresse> + <demailadresse/> + <kontaktsystem_kennung/> + <kontaktsystem_kennungzusatz/> + <AnliegenBEZEICHNUNG>Waffenschein / Kleiner Waffenschein</AnliegenBEZEICHNUNG> + <leikaKEYLIST>99089008000000;99089008001000</leikaKEYLIST> + </zustaendigestelle> + <empfangendestelle> + <OrganisationseinheitenAuswahl>9068873</OrganisationseinheitenAuswahl> + <OrganisationseinheitenID>9068873</OrganisationseinheitenID> + <OrganisationseinheitenBEZEICHNUNG>Einheitlicher Ansprechpartner Schleswig-Holstein</OrganisationseinheitenBEZEICHNUNG> + <strasse>Reventlouallee</strasse> + <hausnummer>6</hausnummer> + <postleitzahl>24105</postleitzahl> + <ortID>9006402</ortID> + <ort>Kiel</ort> + <telefonnummer>+49 431 988-8650</telefonnummer> + <telefaxnummer>+49 431 988-6161111</telefaxnummer> + <emailadresse>info@ea-sh.de</emailadresse> + <demailadresse>ea-poststelle@ea-sh.de-mail.de</demailadresse> + <kontaktsystem_kennung>afmsh:9068873_AusnahmeLKWFahrverbot</kontaktsystem_kennung> + <kontaktsystem_kennungzusatz>alle</kontaktsystem_kennungzusatz> + </empfangendestelle> + <erklaerungen> + <check_gebuehren>true</check_gebuehren> + <check_richtigkeit>true</check_richtigkeit> + <check_datenschutz>true</check_datenschutz> + <check_missbrauch>true</check_missbrauch> + <b_gebuehren_beschriftung>* Mir ist bekannt, dass durch das Einreichen des elektronischen Antrages von der zuständigen Stelle Gebühren erhoben werden können.</b_gebuehren_beschriftung> + <b_gebuehren_intro>Gebühr bei Ausstellung des kleinen Waffenscheins: 60,00 Euro. Bearbeitungsgebühr bei Versagung: 45,00 Euro. +Sie sind gemäß § 39 WaffG verpflichtet, der zuständigen Behörde die zur Durchführung des Gesetzes erforderlichen Auskünfte zu erteilen. Zur Prüfung Ihrer waffenrechtlichen Zuverlässigkeit und Eignung holt die Behörde eine unbeschränkte Auskunft aus dem Bundeszentralregister, eine Auskunft aus dem zentralen staatsanwaltschaftlichen Verfahrensregister, eine Stellungnahme der örtlichen Polizeidienststelle und Ihrer Wohnsitzgemeinde ein.</b_gebuehren_intro> + <b_richtigkeit>* Ich bestätige die Richtigkeit meiner Angaben.</b_richtigkeit> + <b_datenschutz>* Ich erkläre mich damit einverstanden, dass der Einheitlicher Ansprechpartner Schleswig-Holstein zur Erfüllung seiner Aufgaben meine Daten unter Einhaltung der Bestimmungen der Datenschutz-Grundverordnung (DS-GVO) und des Landesdatenschutzgesetzes Schleswig-Holstein (LDSG-SH) speichert, verarbeitet und diese im Rahmen der gesetzlichen Bestimmungen an die für die Entscheidung zuständige Stelle weiterleitet. Ebenso bin ich mit der rechtskonformen Datenverarbeitung und Speicherung durch die zuständige Stelle einverstanden. Mir ist bekannt, dass ich die Einwilligung in die Verarbeitung und Übermittlung jederzeit gegenüber dem Einheitlicher Ansprechpartner Schleswig-Holstein, Reventlouallee 6, 24105 Kiel widerrufen kann. Ein Widerruf ist aber nur wirksam für die Zukunft. Verarbeitungen, die vor dem Widerruf erfolgt sind, sind davon nicht betroffen. Über die Verarbeitung meiner personenbezogenen Daten und die mir nach den datenschutzrechtlichen Regelungen zustehenden Ansprüche und Rechte habe ich unter Datenschutzerklärung Kenntnis erlangt.</b_datenschutz> + <b_missbrauch>* Mir ist bekannt, dass zur Verfolgung widerrechtlicher Nutzung die Daten meines zur Dateneingabe genutzten Endgerätes aufgezeichnet und verwendet werden können.</b_missbrauch> + <policyurl>http://www.ea-sh.info/datenschutz/datenschutzerklaerungEA_de.doc</policyurl> + </erklaerungen> + <logourl>http://www.ea-sh.info/logos/kopf_9068873.doc</logourl> +</myForm> \ No newline at end of file diff --git a/intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapResponse.xml b/intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapResponse.xml similarity index 100% rename from intelliform-adapter/src/test/resources/intelliform/EinfachesFormularZweiAnhaengeSoapResponse.xml rename to intelliform-adapter/src/test/resources/itcase/EinfachesFormularZweiAnhaengeSoapResponse.xml diff --git a/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml new file mode 100644 index 0000000000000000000000000000000000000000..373c0682344729257e9fcd9b8a0536c696f69822 --- /dev/null +++ b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-SoapRequest.xml @@ -0,0 +1,31 @@ +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCTxrb250YWt0c3lzdGVtdHlwaWQ+MjMzMDM0NjAwPC9rb250YWt0c3lzdGVtdHlwaWQ+Cgk8a29udGFrdHN5c3RlbXR5cGlkbG4+MjMzMDM0NjAxPC9rb250YWt0c3lzdGVtdHlwaWRsbj4KCTxBbmxpZWdlbklEPjg5NjY2NzE8L0FubGllZ2VuSUQ+Cgk8bWFpbGJveGd1aWQ+Zjk3NzM2OGItNjk5MS00NmI5LWFmMTgtOGEyYTAzZDlhZDFiPC9tYWlsYm94Z3VpZD4KCTxuYW1laWQ+Y2JhY2IwMWEtMjgxMC0xMWVjLWJiNmYtYzMxOTM5Zjg4NzRlPC9uYW1laWQ+Cgk8YW50cmFnc3RlbGxlcj4KCQk8cGVyc19hbnJlZGU+SGVyciQwMzwvcGVyc19hbnJlZGU+CgkJPHBlcnNfbmFjaG5hbWU+VGVzdGVybWFubjwvcGVyc19uYWNobmFtZT4KCQk8cGVyc192b3JuYW1lPk1heDwvcGVyc192b3JuYW1lPgoJCTxwZXJzX2dlYnVydHNuYW1lPk1heCBUZXN0ZXJtYW5uPC9wZXJzX2dlYnVydHNuYW1lPgoJCTxwZXJzX2dlYnVydHNkYXR1bT4xOTk1LTAzLTIxPC9wZXJzX2dlYnVydHNkYXR1bT4KCQk8cGVyc19nZWJ1cnRzb3J0PkZsZW5zYnVyZzwvcGVyc19nZWJ1cnRzb3J0PgoJCTxwZXJzX2dlYnVydHNsYW5kPmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX2dlYnVydHNsYW5kPgoJCTxwZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2gkRGV1dHNjaGxhbmQkMDAwPC9wZXJzX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PgoJCTxiX2FucmVkZT5IZXJyPC9iX2FucmVkZT4KCQk8Yl9hbnJlZGVfc2NobHVlc3NlbG5yPjAzPC9iX2FucmVkZV9zY2hsdWVzc2VsbnI+CgkJPGJfZ2VidXJ0c2xhbmQ+RGV1dHNjaGxhbmQ8L2JfZ2VidXJ0c2xhbmQ+CgkJPGJfZ2VidXJ0c2xhbmRfc2lnbmF0dXI+MDAwPC9iX2dlYnVydHNsYW5kX3NpZ25hdHVyPgoJCTxiX3N0YWF0c2FuZ2Vob2VyaWdrZWl0PmRldXRzY2g8L2Jfc3RhYXRzYW5nZWhvZXJpZ2tlaXQ+CgkJPGJfc3RhYXRzYW5nZWhvZXJpZ2tlaXRfc2lnbmF0dXI+MDAwPC9iX3N0YWF0c2FuZ2Vob2VyaWdrZWl0X3NpZ25hdHVyPgoJCTxzaF9zdHJhc3NlPkvDtm5pZ3N3ZWc8L3NoX3N0cmFzc2U+CgkJPHNoX2hhdXNudW1tZXI+NzQ8L3NoX2hhdXNudW1tZXI+CgkJPHNoX3Bsej4yNDgzNzwvc2hfcGx6PgoJCTxvcnRfYXVzd2FobD45MDA3MzE0JDAxMDU5MDc1PC9vcnRfYXVzd2FobD4KCQk8b3J0PlNjaGxlc3dpZzwvb3J0PgoJCTxHZWJpZXRJRD45MDA3MzE0PC9HZWJpZXRJRD4KCQk8R2ViaWV0QkVaRUlDSE5VTkc+U2NobGVzd2lnPC9HZWJpZXRCRVpFSUNITlVORz4KCQk8R2ViaWV0R05SOTRfR05SPjAxMDU5MDc1PC9HZWJpZXRHTlI5NF9HTlI+CgkJPHN0YWF0PjAwMDwvc3RhYXQ+CgkJPGlzbzMxNjZudW1lcmlzY2g+Mjc2PC9pc28zMTY2bnVtZXJpc2NoPgoJCTxrb250X3RlbGVmb25udW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZvbm51bW1lcj4KCQk8a29udF9tb2JpbG51bW1lcj4rNDkgMTIzPC9rb250X21vYmlsbnVtbWVyPgoJCTxrb250X3RlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L2tvbnRfdGVsZWZheG51bW1lcj4KCQk8a29udF9lbWFpbD5tYXgudGVzdGVybWFubkBnbXguZGU8L2tvbnRfZW1haWw+CgkJPGtvbnRfZGVtYWlsPm1heC50ZXN0ZXJtYW5uQGdteC5kZS1tYWlsLmRlPC9rb250X2RlbWFpbD4KCQk8cGVyc29lbmxpY2hlRWlnbnVuZz4KCQkJPG1hZW5nZWx2b3JoYW5kZW4+ZmFsc2U8L21hZW5nZWx2b3JoYW5kZW4+CgkJCTxlcm1pdHRsdW5nc3ZlcmZhaHJlbj5mYWxzZTwvZXJtaXR0bHVuZ3N2ZXJmYWhyZW4+CgkJCTxNaXRnbGllZHNjaGFmdEluVmVyYm90ZXJuZXJWZXJlaW5pZ3VuZz5mYWxzZTwvTWl0Z2xpZWRzY2hhZnRJblZlcmJvdGVybmVyVmVyZWluaWd1bmc+CgkJPC9wZXJzb2VubGljaGVFaWdudW5nPgoJPC9hbnRyYWdzdGVsbGVyPgoJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuQXVzd2FobD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPjk1MzU2Njk8L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPktyZWlzCgkJCVNjaGxlc3dpZy1GbGVuc2J1cmcvS3JlaXN2ZXJ3YWx0dW5nIC0gQWxsZ2VtZWluZQoJCQlPcmRudW5nc2FuZ2VsZWdlbmhlaXRlbjwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkJFWkVJQ0hOVU5HPgoJCTxzdHJhc3NlPkZsZW5zYnVyZ2VyIFN0cmHDn2U8L3N0cmFzc2U+CgkJPGhhdXNudW1tZXI+NzwvaGF1c251bW1lcj4KCQk8cG9zdGxlaXR6YWhsPjI0ODM3PC9wb3N0bGVpdHphaGw+CgkJPG9ydElEPjkwMDczMTQ8L29ydElEPgoJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+MDQ2MjEgODctMDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4wNDYyMSA4Ny0zNjY8L3RlbGVmYXhudW1tZXI+CgkJPGVtYWlsYWRyZXNzZT5HZWZhaHJlbmFid2VockBLaWVsLmRlPC9lbWFpbGFkcmVzc2U+CgkJPGRlbWFpbGFkcmVzc2UgLz4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjk1MzU2Njlfa2xlaW5lcldhZmZlbnNjaGVpbjwva29udGFrdHN5c3RlbV9rZW5udW5nPgoJCTxrb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHogLz4KCQk8QW5saWVnZW5CRVpFSUNITlVORz5XYWZmZW5zY2hlaW4gLyBLbGVpbmVyIFdhZmZlbnNjaGVpbjwvQW5saWVnZW5CRVpFSUNITlVORz4KCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJPGF1c3dhaGxfenVzdGVsbHVuZz5hYmhvbGVuPC9hdXN3YWhsX3p1c3RlbGx1bmc+CgkJPGJfenVzdGVsbHVuZz5JY2ggaG9sZSBkZW4gS2xlaW5lbiBXYWZmZW5zY2hlaW4gc2VsYnN0IGFiLjwvYl96dXN0ZWxsdW5nPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KCTxlbXBmYW5nZW5kZXN0ZWxsZT4KCQk8T3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+OTA2ODg3MzwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbkF1c3dhaGw+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45MDY4ODczPC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5FaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lcgoJCQlTY2hsZXN3aWctSG9sc3RlaW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQk8c3RyYXNzZT5SZXZlbnRsb3VhbGxlZTwvc3RyYXNzZT4KCQk8aGF1c251bW1lcj42PC9oYXVzbnVtbWVyPgoJCTxwb3N0bGVpdHphaGw+MjQxMDU8L3Bvc3RsZWl0emFobD4KCQk8b3J0SUQ+OTAwNjQwMjwvb3J0SUQ+CgkJPG9ydD5LaWVsPC9vcnQ+CgkJPHRlbGVmb25udW1tZXI+KzQ5IDQzMSA5ODgtODY1MDwvdGVsZWZvbm51bW1lcj4KCQk8dGVsZWZheG51bW1lcj4rNDkgNDMxIDk4OC02MTYxMTExPC90ZWxlZmF4bnVtbWVyPgoJCTxlbWFpbGFkcmVzc2U+aW5mb0BlYS1zaC5kZTwvZW1haWxhZHJlc3NlPgoJCTxkZW1haWxhZHJlc3NlPmVhLXBvc3RzdGVsbGVAZWEtc2guZGUtbWFpbC5kZTwvZGVtYWlsYWRyZXNzZT4KCQk8a29udGFrdHN5c3RlbV9rZW5udW5nPmFmbXNoOjkwNjg4NzNfQXVzbmFobWVMS1dGYWhydmVyYm90PC9rb250YWt0c3lzdGVtX2tlbm51bmc+CgkJPGtvbnRha3RzeXN0ZW1fa2VubnVuZ3p1c2F0ej5hbGxlPC9rb250YWt0c3lzdGVtX2tlbm51bmd6dXNhdHo+Cgk8L2VtcGZhbmdlbmRlc3RlbGxlPgoJPGVya2xhZXJ1bmdlbj4KCQk8Y2hlY2tfZ2VidWVocmVuPnRydWU8L2NoZWNrX2dlYnVlaHJlbj4KCQk8Y2hlY2tfcmljaHRpZ2tlaXQ+dHJ1ZTwvY2hlY2tfcmljaHRpZ2tlaXQ+CgkJPGNoZWNrX2RhdGVuc2NodXR6PnRydWU8L2NoZWNrX2RhdGVuc2NodXR6PgoJCTxjaGVja19taXNzYnJhdWNoPnRydWU8L2NoZWNrX21pc3NicmF1Y2g+CgkJPGJfZ2VidWVocmVuX2Jlc2NocmlmdHVuZz4qIE1pciBpc3QgYmVrYW5udCwgZGFzcyBkdXJjaCBkYXMgRWlucmVpY2hlbgoJCQlkZXMgZWxla3Ryb25pc2NoZW4gQW50cmFnZXMgdm9uIGRlciB6dXN0w6RuZGlnZW4gU3RlbGxlIEdlYsO8aHJlbgoJCQllcmhvYmVuIHdlcmRlbiBrw7ZubmVuLjwvYl9nZWJ1ZWhyZW5fYmVzY2hyaWZ0dW5nPgoJCTxiX2dlYnVlaHJlbl9pbnRybz5HZWLDvGhyIGJlaSBBdXNzdGVsbHVuZyBkZXMga2xlaW5lbiBXYWZmZW5zY2hlaW5zOgoJCQk2MCwwMCBFdXJvLiBCZWFyYmVpdHVuZ3NnZWLDvGhyIGJlaSBWZXJzYWd1bmc6IDQ1LDAwIEV1cm8uCgkJCVNpZSBzaW5kIGdlbcOkw58gwqcgMzkgV2FmZkcgdmVycGZsaWNodGV0LCBkZXIgenVzdMOkbmRpZ2VuIEJlaMO2cmRlIGRpZSB6dXIKCQkJRHVyY2hmw7xocnVuZyBkZXMgR2VzZXR6ZXMgZXJmb3JkZXJsaWNoZW4gQXVza8O8bmZ0ZSB6dSBlcnRlaWxlbi4gWnVyCgkJCVByw7xmdW5nIElocmVyIHdhZmZlbnJlY2h0bGljaGVuIFp1dmVybMOkc3NpZ2tlaXQgdW5kIEVpZ251bmcgaG9sdCBkaWUKCQkJQmVow7ZyZGUgZWluZSB1bmJlc2NocsOkbmt0ZSBBdXNrdW5mdCBhdXMgZGVtIEJ1bmRlc3plbnRyYWxyZWdpc3RlciwKCQkJZWluZSBBdXNrdW5mdCBhdXMgZGVtIHplbnRyYWxlbiBzdGFhdHNhbndhbHRzY2hhZnRsaWNoZW4KCQkJVmVyZmFocmVuc3JlZ2lzdGVyLCBlaW5lIFN0ZWxsdW5nbmFobWUgZGVyIMO2cnRsaWNoZW4KCQkJUG9saXplaWRpZW5zdHN0ZWxsZSB1bmQgSWhyZXIgV29obnNpdHpnZW1laW5kZSBlaW4uPC9iX2dlYnVlaHJlbl9pbnRybz4KCQk8Yl9yaWNodGlna2VpdD4qIEljaCBiZXN0w6R0aWdlIGRpZSBSaWNodGlna2VpdCBtZWluZXIgQW5nYWJlbi48L2JfcmljaHRpZ2tlaXQ+CgkJPGJfZGF0ZW5zY2h1dHo+KiBJY2ggZXJrbMOkcmUgbWljaCBkYW1pdCBlaW52ZXJzdGFuZGVuLCBkYXNzIGRlcgoJCQlFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4genVyIEVyZsO8bGx1bmcgc2VpbmVyCgkJCUF1ZmdhYmVuIG1laW5lIERhdGVuIHVudGVyIEVpbmhhbHR1bmcgZGVyIEJlc3RpbW11bmdlbiBkZXIKCQkJRGF0ZW5zY2h1dHotR3J1bmR2ZXJvcmRudW5nIChEUy1HVk8pIHVuZCBkZXMKCQkJTGFuZGVzZGF0ZW5zY2h1dHpnZXNldHplcyBTY2hsZXN3aWctSG9sc3RlaW4gKExEU0ctU0gpIHNwZWljaGVydCwKCQkJdmVyYXJiZWl0ZXQgdW5kIGRpZXNlIGltIFJhaG1lbiBkZXIgZ2VzZXR6bGljaGVuIEJlc3RpbW11bmdlbiBhbiBkaWUKCQkJZsO8ciBkaWUgRW50c2NoZWlkdW5nIHp1c3TDpG5kaWdlIFN0ZWxsZSB3ZWl0ZXJsZWl0ZXQuIEViZW5zbyBiaW4gaWNoCgkJCW1pdCBkZXIgcmVjaHRza29uZm9ybWVuIERhdGVudmVyYXJiZWl0dW5nIHVuZCBTcGVpY2hlcnVuZyBkdXJjaCBkaWUKCQkJenVzdMOkbmRpZ2UgU3RlbGxlIGVpbnZlcnN0YW5kZW4uIE1pciBpc3QgYmVrYW5udCwgZGFzcyBpY2ggZGllCgkJCUVpbndpbGxpZ3VuZyBpbiBkaWUgVmVyYXJiZWl0dW5nIHVuZCDDnGJlcm1pdHRsdW5nIGplZGVyemVpdCBnZWdlbsO8YmVyCgkJCWRlbSBFaW5oZWl0bGljaGVyIEFuc3ByZWNocGFydG5lciBTY2hsZXN3aWctSG9sc3RlaW4sIFJldmVudGxvdWFsbGVlCgkJCTYsIDI0MTA1IEtpZWwgd2lkZXJydWZlbiBrYW5uLiBFaW4gV2lkZXJydWYgaXN0IGFiZXIgbnVyIHdpcmtzYW0gZsO8cgoJCQlkaWUgWnVrdW5mdC4gVmVyYXJiZWl0dW5nZW4sIGRpZSB2b3IgZGVtIFdpZGVycnVmIGVyZm9sZ3Qgc2luZCwgc2luZAoJCQlkYXZvbiBuaWNodCBiZXRyb2ZmZW4uIMOcYmVyIGRpZSBWZXJhcmJlaXR1bmcgbWVpbmVyIHBlcnNvbmVuYmV6b2dlbmVuCgkJCURhdGVuIHVuZCBkaWUgbWlyIG5hY2ggZGVuIGRhdGVuc2NodXR6cmVjaHRsaWNoZW4gUmVnZWx1bmdlbgoJCQl6dXN0ZWhlbmRlbiBBbnNwcsO8Y2hlIHVuZCBSZWNodGUgaGFiZSBpY2ggdW50ZXIgRGF0ZW5zY2h1dHplcmtsw6RydW5nCgkJCUtlbm50bmlzIGVybGFuZ3QuPC9iX2RhdGVuc2NodXR6PgoJCTxiX21pc3NicmF1Y2g+KiBNaXIgaXN0IGJla2FubnQsIGRhc3MgenVyIFZlcmZvbGd1bmcgd2lkZXJyZWNodGxpY2hlcgoJCQlOdXR6dW5nIGRpZSBEYXRlbiBtZWluZXMgenVyIERhdGVuZWluZ2FiZSBnZW51dHp0ZW4gRW5kZ2Vyw6R0ZXMKCQkJYXVmZ2V6ZWljaG5ldCB1bmQgdmVyd2VuZGV0IHdlcmRlbiBrw7ZubmVuLjwvYl9taXNzYnJhdWNoPgoJCTxwb2xpY3l1cmw+aHR0cDovL3dhZm14cGEwMDIuZHBhb3IuZGUvc2gvZGF0ZW5zY2h1dHovZGF0ZW5zY2h1dHplcmtsYWVydW5nRUFfZGUuZG9jPC9wb2xpY3l1cmw+Cgk8L2Vya2xhZXJ1bmdlbj4KCTxsb2dvdXJsPmh0dHA6Ly93YWZteHBhMDAyLmRwYW9yLmRlL3NoL2xvZ29zL2tvcGZfOTA2ODg3My5kb2M8L2xvZ291cmw+Cgk8Zm0+CgkJPGFuc3ByZWNocGFydG5lcj4KCQkJPGZpcm1lbm5hbWUgLz4KCQkJPGFucmVkZT5IZXJyPC9hbnJlZGU+CgkJCTx2b3JuYW1lPk1heDwvdm9ybmFtZT4KCQkJPGZhbWlsaWVubmFtZT5UZXN0ZXJtYW5uPC9mYW1pbGllbm5hbWU+CgkJCTxhbnNjaHJpZnQ+CgkJCQk8c3RyYXNzZT5Lw7ZuaWdzd2VnPC9zdHJhc3NlPgoJCQkJPGhhdXNudW1tZXI+NzQ8L2hhdXNudW1tZXI+CgkJCQk8cG9zdGZhY2ggLz4KCQkJCTxwb3N0bGVpdHphaGw+MjQ4Mzc8L3Bvc3RsZWl0emFobD4KCQkJCTxvcnQ+U2NobGVzd2lnPC9vcnQ+CgkJCQk8b3J0c3RlaWwgLz4KCQkJCTx6dXNhdHogLz4KCQkJCTxzdGFhdD5EZXV0c2NobGFuZDwvc3RhYXQ+CgkJCTwvYW5zY2hyaWZ0PgoJCQk8a29udGFrdD4KCQkJCTx0ZWxlZm9ubnVtbWVyPisgNDkgNDYyMSA5NjU0PC90ZWxlZm9ubnVtbWVyPgoJCQkJPG1vYmlsbnVtbWVyPis0OSAxMjM8L21vYmlsbnVtbWVyPgoJCQkJPHRlbGVmYXhudW1tZXI+KyA0OSA0NjIxIDk2NTQ8L3RlbGVmYXhudW1tZXI+CgkJCQk8ZW1haWxhZHJlc3NlPm1heC50ZXN0ZXJtYW5uQGdteC5kZTwvZW1haWxhZHJlc3NlPgoJCQkJPGRlbWFpbGFkcmVzc2U+bWF4LnRlc3Rlcm1hbm5AZ214LmRlLW1haWwuZGU8L2RlbWFpbGFkcmVzc2U+CgkJCTwva29udGFrdD4KCQk8L2Fuc3ByZWNocGFydG5lcj4KCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZ2VuPgoJCQk8dmVyd2FsdHVuZ3NsZWlzdHVuZz4KCQkJCTxhdXNnZXdhZWhsdGVfenVzdGFlbmRpZ2VzdGVsbGU+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRD45NTM1NjY5PC9PcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+CgkJCQkJPE9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz5LcmVpcwoJCQkJCQlTY2hsZXN3aWctRmxlbnNidXJnL0tyZWlzdmVyd2FsdHVuZyAtIEFsbGdlbWVpbmUKCQkJCQkJT3JkbnVuZ3NhbmdlbGVnZW5oZWl0ZW48L09yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5CRVpFSUNITlVORz4KCQkJCTwvYXVzZ2V3YWVobHRlX3p1c3RhZW5kaWdlc3RlbGxlPgoJCQkJPEdlYmlldElEPjkwMDczMTQ8L0dlYmlldElEPgoJCQkJPEdlYmlldEJFWkVJQ0hOVU5HPlNjaGxlc3dpZzwvR2ViaWV0QkVaRUlDSE5VTkc+CgkJCQk8QW5saWVnZW5JRD44OTY2NjcxPC9BbmxpZWdlbklEPgoJCQkJPEFubGllZ2VuQkVaRUlDSE5VTkc+V2FmZmVuc2NoZWluIC8gS2xlaW5lciBXYWZmZW5zY2hlaW48L0FubGllZ2VuQkVaRUlDSE5VTkc+CgkJCQk8bGVpa2FLRVlMSVNUPjk5MDg5MDA4MDAwMDAwOzk5MDg5MDA4MDAxMDAwPC9sZWlrYUtFWUxJU1Q+CgkJCQk8bGVpa2FCRVpFSUNITlVORyAvPgoJCQk8L3ZlcndhbHR1bmdzbGVpc3R1bmc+CgkJPC92ZXJ3YWx0dW5nc2xlaXN0dW5nZW4+Cgk8L2ZtPgo8L215Rm9ybT4=</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>XML-Daten.xml</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnTestServer</form> + <formId>SimpleFormSendetAnTestServer</formId> + <id>20221212092912345678</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.ozg-sh.de</sender> + <timestamp>2022-12-12T09:30:29.443Z</timestamp> + <nameid>nameIdAsPostfachIdV1</nameid> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> diff --git a/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml new file mode 100644 index 0000000000000000000000000000000000000000..74090b931a76f21c01bb7a3a3ab3f1c6b2568c0a --- /dev/null +++ b/intelliform-adapter/src/test/resources/itcase/XML-Daten-1-other_name_SoapRequest.xml @@ -0,0 +1,30 @@ +<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> + <soap:Body> + <ns2:deposit xmlns:ns2="http://xmlns.cit.de/intelliform/2009/webservices/backend"> + <data> + <attachments> + <attributes> + <key>X-IntelliForm-Signed</key> + <value>false</value> + </attributes> + <content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG15Rm9ybSB4bWxuczpwZGY9Imh0dHA6Ly94bWxucy5jaXQuZGUvYXNzaXN0YW50cy9wZGYiCgl4bWxuczp0PSJodHRwOi8veG1sbnMuY2l0LmRlL2ludGVsbGlmb3JtL3RyYW5zYWN0aW9uIgoJdDppZD0iMjAyMDExMTgzNjU2NzA4NjYxMDEiIHQ6dGltZXN0YW1wPSIyMDIwLTExLTE4VDA5OjA5OjI3LjYyN1oiCgl0OnNlbmRlcj0iYWZtLnNjaGxlc3dpZy1ob2xzdGVpbi5kZSIKCXQ6Zm9ybT0iS2xlaW5lciBXYWZmZW5zY2hlaW4gZ2VtLiDCpyAxMCBBYnMuIDQgU2F0eiA0IFdhZmZlbmdlc2V0eiAoV2FmZkcpIgoJdDpmb3JtLWlkPSJ3YWZmZW4va2xlaW5lcldhZmZlbnNjaGVpbiIKCXQ6Y3VzdG9tZXI9IkVpbmhlaXRsaWNoZXIgQW5zcHJlY2hwYXJ0bmVyIiB0OmN1c3RvbWVyLWlkPSJlYS1zaCIKCXQ6Y2xpZW50PSJTY2hsZXN3aWctSG9sc3RlaW4iIHQ6Y2xpZW50LWlkPSJsYW5kIj4KCQoJPHp1c3RhZW5kaWdlc3RlbGxlPgoJCTxPcmdhbmlzYXRpb25zZWluaGVpdGVuSUQ+MDgxNTwvT3JnYW5pc2F0aW9uc2VpbmhlaXRlbklEPgoJPC96dXN0YWVuZGlnZXN0ZWxsZT4KPC9teUZvcm0+</content> + <contentType>text/xml</contentType> + <id>myForm-xml</id> + <name>anderer-name-Daten.xml</name> + </attachments> + <caller /> + <client>sh-dev</client> + <clientId>sh-dev</clientId> + <customer>Kiel</customer> + <customerId>Kiel</customerId> + <form>SimpleFormSendetAnHomeServerVonTorsten</form> + <formId>SimpleFormSendetAnHomeServerVonTorsten</formId> + <id>20210415307020414701</id> + <primaryDataAttachmentId>myForm-xml</primaryDataAttachmentId> + <sender>intelliform.by.kop-cloud.de</sender> + <timestamp>2021-04-15T08:33:39.443Z</timestamp> + <username /> + </data> + </ns2:deposit> + </soap:Body> +</soap:Envelope> \ No newline at end of file diff --git a/lombok.config b/lombok.config index e13d17eb9f02c8e08f5ec3059b4e5ce9aabbe5ae..d07dd9b0e2b0281fbf514a968b9451cb6af62f93 100644 --- a/lombok.config +++ b/lombok.config @@ -27,4 +27,4 @@ lombok.log.slf4j.flagUsage = ERROR lombok.log.log4j.flagUsage = ERROR lombok.data.flagUsage = ERROR lombok.nonNull.exceptionType = IllegalArgumentException -lombok.addLombokGeneratedAnnotation = true +lombok.addLombokGeneratedAnnotation = true \ No newline at end of file diff --git a/pom.xml b/pom.xml index eea52b415b5d09f9985d1205e84e98c74f485f11..81e30d85a39c967e9baea23baefa798f930cba67 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -25,19 +27,20 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <name>Eingangs Adapter - Parent</name> - <packaging>pom</packaging> - <version>0.25.1</version> <parent> - <groupId>de.itvsh.kop.common</groupId> - <artifactId>kop-common-parent</artifactId> - <version>1.3.0</version> - <relativePath /> <!-- lookup parent from repository --> + <groupId>de.ozgcloud.common</groupId> + <artifactId>ozgcloud-common-parent</artifactId> + <version>3.0.1</version> + <relativePath/> <!-- lookup parent from repository --> </parent> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> + <packaging>pom</packaging> + <name>OZG-Cloud Eingang Manager</name> + <modules> <module>common</module> <module>formsolutions-adapter</module> @@ -45,20 +48,23 @@ <module>router</module> <module>forwarder</module> <module>semantik-adapter</module> + <module>formcycle-adapter</module> + <module>xta-adapter</module> + <module>enterprise-adapter</module> </modules> <properties> <mapstruct.version>1.4.2.Final</mapstruct.version> - <pluto.version>1.1.0</pluto.version> + <vorgang-manager.version>2.4.0</vorgang-manager.version> <jsoup.version>1.14.3</jsoup.version> <xmlschema.version>2.3.0</xmlschema.version> - <kop.license.version>1.3.0</kop.license.version> <!-- plugins --> - <jaxb2-plugin.version>0.14.0</jaxb2-plugin.version> - <mojo-jaxb2-plugin.version>2.5.0</mojo-jaxb2-plugin.version> + <jaxb2-plugin.version>0.15.2</jaxb2-plugin.version> + <jaxb3-plugin.version>0.15.0</jaxb3-plugin.version> + <mojo-jaxb2-plugin.version>3.1.0</mojo-jaxb2-plugin.version> </properties> <dependencyManagement> @@ -66,29 +72,29 @@ <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <version>${project.version}</version> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> <version>${project.version}</version> </dependency> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>semantik-adapter</artifactId> <version>${project.version}</version> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-interface</artifactId> - <version>${pluto.version}</version> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> + <version>${vorgang-manager.version}</version> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-utils</artifactId> - <version>${pluto.version}</version> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + <version>${vorgang-manager.version}</version> </dependency> <dependency> @@ -105,16 +111,16 @@ <!-- Test --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> <version>${project.version}</version> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-utils</artifactId> - <version>${pluto.version}</version> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> + <version>${vorgang-manager.version}</version> <type>test-jar</type> <scope>test</scope> </dependency> @@ -128,7 +134,7 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> - <mainClass>de.itvsh.kop.eingangsadapter.Application</mainClass> + <mainClass>de.ozgcloud.eingang.Application</mainClass> </configuration> </plugin> @@ -146,6 +152,18 @@ </execution> </executions> </plugin> + <plugin> + <groupId>com.evolvedbinary.maven.jvnet</groupId> + <artifactId>jaxb30-maven-plugin</artifactId> + <version>${jaxb3-plugin.version}</version> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + </plugin> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> @@ -159,32 +177,12 @@ </executions> </plugin> <!-- end::webservice --> - <plugin> - <groupId>com.mycila</groupId> - <artifactId>license-maven-plugin</artifactId> - <version>4.1</version> - <configuration> - <licenseSets> - <licenseSet> - <header>license/eupl_v1_2_de/header.txt</header> - <excludes> - <exclude>**/README</exclude> - <exclude>src/test/resources/**</exclude> - <exclude>src/main/resources/**</exclude> - </excludes> - </licenseSet> - </licenseSets> - </configuration> - <dependencies> - <dependency> - <groupId>de.itvsh.kop.common</groupId> - <artifactId>kop-common-license</artifactId> - <version>${kop.license.version}</version> - </dependency> - </dependencies> - </plugin> </plugins> </pluginManagement> + + <plugins> + + </plugins> </build> <distributionManagement> @@ -200,4 +198,4 @@ </snapshotRepository> </distributionManagement> -</project> \ No newline at end of file +</project> diff --git a/release-erstellen.sh b/release-erstellen.sh new file mode 100755 index 0000000000000000000000000000000000000000..a5f3ac8504c3079b9c257fda15dd63422290d8d3 --- /dev/null +++ b/release-erstellen.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + + +if [ "$#" -ne 1 ]; then + echo "Aufruf: ozg-release-erstellen.sh JA" + echo "Als Parameter bitte 'JA' eintragen zur Sicherheit" + exit 1 +fi + + +## alle -SNAPSHOT in pom.xmls entfernen +SED_PARAMS="-i" +if [[ "$OSTYPE" =~ ^darwin ]]; then + SED_PARAMS="$SED_PARAMS '' -e" +fi +find . -name pom.xml -exec sed $SED_PARAMS 's/-SNAPSHOT//g' {} + + +## release version auslesen +NEWVERSION=$(xmlstarlet sel -N w="http://maven.apache.org/POM/4.0.0" -t -v '//w:project/w:version' -n pom.xml) + +echo +echo "NEXT STEPS:" +echo "***********" +echo "Änderungen prüfen" +echo "git commit -a -m 'release version "$NEWVERSION"'" +echo "git push" +echo "git tag "$NEWVERSION +echo "git push --tags" diff --git a/release-startdev.sh b/release-startdev.sh new file mode 100755 index 0000000000000000000000000000000000000000..3ec2e48fd8de63468faa3e12e3a409aa72110a5c --- /dev/null +++ b/release-startdev.sh @@ -0,0 +1,87 @@ +#!/bin/bash +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + + +#set -x + +if [ "$#" -ne 1 ]; then + echo "Aufruf: ozg-release-startdev.sh NEWVERSION" + exit 1 +fi + +NEWVERSION=$1 + +echo + +# pom.xml:main -> project.version setzen +# projectname/pom.xml:parent -> project.parent.version setzen +# projectname/pom.xml:parent,main -> project.parent.version und project.version setzen +# +PROJECTS="pom.xml:main + common/pom.xml:parent + enterprise-adapter/pom.xml:parent + formcycle-adapter/formcycle-adapter-impl/pom.xml:parent + formcycle-adapter/formcycle-adapter-interface/pom.xml:main + formcycle-adapter/pom.xml:parent + formsolutions-adapter/pom.xml:parent + xta-adapter/pom.xml:parent + forwarder/pom.xml:parent + intelliform-adapter/pom.xml:parent + router/pom.xml:parent + semantik-adapter/pom.xml:parent + " + +for PROJECT in $PROJECTS; +do + POMFILE=$(echo $PROJECT | cut -d':' -f1) + ACTIONS=$(echo $PROJECT | cut -d':' -f2) + + ## Auf SNAPSHOT Versionen testen + if fgrep -q "SNAPSHOT" $POMFILE; then + RED='\033[0;31m' + NC='\033[0m' + echo "${RED}ERROR: Datei "$POMFILE" enthält noch SNAPSHOT Versionen, das sollte hier nicht passieren.${NC}" + exit 1 + fi + + ## Versionen setzen + if [[ $ACTIONS == *"main"* ]] ; then + xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u '//w:project/w:version' -v $NEWVERSION $POMFILE + fi + + if [[ $ACTIONS == *"parent"* ]]; then + xmlstarlet ed --pf -L -N w="http://maven.apache.org/POM/4.0.0" -u '//w:project/w:parent/w:version' -v $NEWVERSION $POMFILE + fi +done + + + +echo +echo "NEXT STEPS:" +echo "***********" +echo "Änderungen prüfen" +echo "git commit -a -m 'start development "$NEWVERSION"'" +echo "git push" + diff --git a/router/pom.xml b/router/pom.xml index 5d533d9f289b4bba640c3c823b77a5df47b66437..ebf7c373c96ee71bba85263d174318df6abab39d 100644 --- a/router/pom.xml +++ b/router/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -26,9 +27,9 @@ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> <relativePath>../</relativePath> </parent> @@ -38,16 +39,16 @@ <dependencies> <!-- own Projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-interface</artifactId> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-interface</artifactId> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-utils</artifactId> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> </dependency> <!-- spring --> @@ -70,14 +71,14 @@ <!-- Test --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> </dependency> <dependency> - <groupId>de.itvsh.ozg.pluto</groupId> - <artifactId>pluto-utils</artifactId> + <groupId>de.ozgcloud.vorgang</groupId> + <artifactId>vorgang-manager-utils</artifactId> <type>test-jar</type> <scope>test</scope> </dependency> @@ -101,4 +102,4 @@ </plugin> </plugins> </build> -</project> \ No newline at end of file +</project> diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java b/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java deleted file mode 100644 index 2eaaed5e8847b70a952295ffd3e55ba623bc84b7..0000000000000000000000000000000000000000 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteService.java +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.router; - -import java.io.ByteArrayInputStream; -import java.util.List; -import java.util.Optional; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.google.protobuf.ByteString; - -import de.itvsh.kop.common.binaryfile.GrpcFileUploadUtils; -import de.itvsh.kop.common.errorhandling.TechnicalException; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileMetaData; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileRequest; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileResponse; -import de.itvsh.ozg.pluto.grpc.command.GrpcCallContext; -import de.itvsh.ozg.pluto.vorgang.GrpcCreateVorgangRequest; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcFinishCreationRequest; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -import io.grpc.stub.CallStreamObserver; -import io.grpc.stub.StreamObserver; -import lombok.Getter; -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; - -@Log4j2 -@Service -public class VorgangRemoteService { - - @Autowired - private PlutoServerResolver plutoServerResolver; - - public String createVorgang(GrpcEingang eingang, Optional<String> organisationsEinheitId) { - var plutoStub = plutoServerResolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(organisationsEinheitId); - LOG.info("Connecting to pluto server " + plutoStub.getChannel().authority() + "; OrganisationsEinheitId: " + organisationsEinheitId); - - return createVorgang(eingang, plutoStub, getBinaryFileServiceStub(organisationsEinheitId)); - } - - public String createVorgang(GrpcEingang eingang, VorgangServiceBlockingStub remoteStub, BinaryFileServiceStub remoteAsyncStub) { - return new VorgangCreator(eingang, remoteStub, remoteAsyncStub).create(); - } - - private BinaryFileServiceStub getBinaryFileServiceStub(Optional<String> organisationseinheitenId) { - return plutoServerResolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(organisationseinheitenId); - } - - @RequiredArgsConstructor - public class VorgangCreator { - - static final String VORGANG_ATTACHMENT_FIELD = "vorgangAttachment"; - static final String CALL_CONTEXT_CLIENT = "eingangAdpater"; - - private final GrpcEingang eingang; - private final VorgangServiceBlockingStub vorgangRemoteStub; - private final BinaryFileServiceStub binaryFileRemoteStub; - - @Getter - private String vorgangId; - @Getter - private List<GrpcIncomingFileGroup> uploadedAttachments; - @Getter - private List<GrpcIncomingFile> uploadedRepresentations; - - String create() { - vorgangId = startCreation(); - - uploadedAttachments = uploadAttachments(); - uploadedRepresentations = uploadRepresentations(); - - return finishCreation(); - } - - String startCreation() { - return vorgangRemoteStub.startCreation(buildStartCreationRequest()).getVorgangId(); - } - - private GrpcCreateVorgangRequest buildStartCreationRequest() { - var eingangWithoutFiles = eingang.toBuilder().clearAttachments().clearRepresentations().build(); - return GrpcCreateVorgangRequest.newBuilder().setEingang(eingangWithoutFiles).build(); - } - - List<GrpcIncomingFileGroup> uploadAttachments() { - return eingang.getAttachmentsList().stream().map(this::uploadAttachment).toList(); - } - - private GrpcIncomingFileGroup uploadAttachment(GrpcIncomingFileGroup attachment) { - var filesWithId = attachment.getFilesList().stream() - .map(file -> file.toBuilder().setId(uploadIncomingFile(file)).build()) - .toList(); - - return GrpcIncomingFileGroup.newBuilder().setName(attachment.getName()).addAllFiles(filesWithId).build(); - } - - List<GrpcIncomingFile> uploadRepresentations() { - return eingang.getRepresentationsList().stream().map(rep -> rep.toBuilder().setId(uploadIncomingFile(rep)).build()).toList(); - } - - String uploadIncomingFile(GrpcIncomingFile incomingFile) { - var resultFuture = GrpcFileUploadUtils - .createSender(this::buildChunkRequest, new ByteArrayInputStream(incomingFile.getContent().toByteArray()), - this::buildCallStreamObserver) - .withMetaData(buildMetaDataRequest(incomingFile)) - .send(); - - var response = waitUntilFutureToComplete(resultFuture); - - return response.getFileId(); - } - - GrpcUploadBinaryFileRequest buildChunkRequest(byte[] bytes) { - return GrpcUploadBinaryFileRequest.newBuilder().setFileContent((ByteString.copyFrom(bytes))).build(); - } - - private CallStreamObserver<GrpcUploadBinaryFileRequest> buildCallStreamObserver( - StreamObserver<GrpcUploadBinaryFileResponse> responseObserver) { - return (CallStreamObserver<GrpcUploadBinaryFileRequest>) binaryFileRemoteStub.uploadBinaryFileAsStream(responseObserver); - } - - GrpcUploadBinaryFileRequest buildMetaDataRequest(GrpcIncomingFile ingomingFile) { - return GrpcUploadBinaryFileRequest.newBuilder() - .setMetadata(GrpcUploadBinaryFileMetaData.newBuilder() - .setContext(GrpcCallContext.newBuilder().setClient(CALL_CONTEXT_CLIENT).build()) - .setVorgangId(getVorgangId()) - .setField(VORGANG_ATTACHMENT_FIELD) - .setContentType(ingomingFile.getContentType()) - .setSize(ingomingFile.getSize()) - .setFileName(ingomingFile.getName())) - .build(); - } - - GrpcUploadBinaryFileResponse waitUntilFutureToComplete(CompletableFuture<GrpcUploadBinaryFileResponse> streamFuture) { - try { - return streamFuture.get(10, TimeUnit.MINUTES); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new TechnicalException(e.getMessage(), e); - } catch (ExecutionException | TimeoutException e) { - throw new TechnicalException(e.getMessage(), e); - } - } - - String finishCreation() { - return vorgangRemoteStub.finishCreation(buildFinishCreationRequest()).getMessage(); - } - - GrpcFinishCreationRequest buildFinishCreationRequest() { - return GrpcFinishCreationRequest.newBuilder() - .addAllAttachments(getAttachmentsWithoutContent()) - .addAllRepresentations(getRepresentationsWithoutContent()) - .setVorgangId(getVorgangId()) - .build(); - } - - private List<GrpcIncomingFileGroup> getAttachmentsWithoutContent() { - return getUploadedAttachments().stream().map(this::clearContent).toList(); - } - - private GrpcIncomingFileGroup clearContent(GrpcIncomingFileGroup fileGroup) { - var files = fileGroup.getFilesList().stream().map(this::clearContent).toList(); - return fileGroup.toBuilder().clearFiles().addAllFiles(files).build(); - } - - private List<GrpcIncomingFile> getRepresentationsWithoutContent() { - return getUploadedRepresentations().stream().map(this::clearContent).toList(); - } - - private GrpcIncomingFile clearContent(GrpcIncomingFile file) { - return file.toBuilder().clearContent().build(); - } - } -} \ No newline at end of file diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/CallContext.java b/router/src/main/java/de/ozgcloud/eingang/router/CallContext.java similarity index 88% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/CallContext.java rename to router/src/main/java/de/ozgcloud/eingang/router/CallContext.java index 23e17807494155467e9cbcc74997822b95d8f9d4..849ea8da91625984df517ea57e3688a0c04ddcee 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/CallContext.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/CallContext.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/FileIdMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java similarity index 87% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/FileIdMapper.java rename to router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java index 001c66742696377d6307873c4ac1b18be9f2ef84..c1d4b06341ea800eec52e4586b495887cbc0c199 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/FileIdMapper.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/FileIdMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import org.mapstruct.Mapper; -import de.itvsh.kop.common.binaryfile.FileId; +import de.ozgcloud.common.binaryfile.FileId; @Mapper interface FileIdMapper { diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcClientsProperties.java b/router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java similarity index 83% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcClientsProperties.java rename to router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java index 1d065dc8bd109e892b21f09b33c635ae679f6817..95db9f888dc96c2bef9380554ca211240a542bc3 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcClientsProperties.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/GrpcClientsProperties.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,12 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.Map; +import jakarta.validation.constraints.NotEmpty; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import org.springframework.validation.annotation.Validated; import lombok.Getter; import lombok.Setter; @@ -34,6 +37,7 @@ import lombok.Setter; @Getter @Setter @Configuration +@Validated @ConfigurationProperties(prefix = "grpc") public class GrpcClientsProperties { @@ -42,8 +46,9 @@ public class GrpcClientsProperties { @Getter @Setter static class ClientProperty { + @NotEmpty private String address; - private String negotationType; + private String negotationType = "TLS"; } } diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java similarity index 75% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapper.java rename to router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java index 8fe72c7e5c8fba95e77750e0f20eff7b1b59b1f1..452289417c37013336cb7058f48f5d32312d7296 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapper.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/GrpcEingangMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.UUID; @@ -34,21 +34,22 @@ import org.mapstruct.ReportingPolicy; import com.google.protobuf.ByteString; -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; -import de.itvsh.ozg.pluto.vorgang.GrpcAntragsteller; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; -import de.itvsh.ozg.pluto.vorgang.GrpcZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; +import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; +import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle; @Mapper(unmappedTargetPolicy = ReportingPolicy.WARN, // unmappedSourcePolicy = ReportingPolicy.WARN, // nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, // nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, // collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, // - uses = GrpcFormDataMapper.class) + uses = { GrpcFormDataMapper.class, ServiceKontoMapper.class }) public interface GrpcEingangMapper { @Mapping(source = "antragsteller.data", target = "antragsteller.otherData") @@ -76,10 +77,9 @@ public interface GrpcEingangMapper { @Mapping(target = "organisationseinheitenIdBytes", ignore = true) @Mapping(target = "unknownFields", ignore = true) @Mapping(target = "allFields", ignore = true) + GrpcZustaendigeStelle toZustaendigeStelle(ZustaendigeStelle zustaendigeStelle); - GrpcZustaendigeStelle toZustaendigeStelle(de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigeStelle zustaendigeStelle); - - GrpcAntragsteller map(Antragsteller antragsteller); + GrpcAntragsteller toAntragsteller(Antragsteller antragsteller); default String uuidToString(UUID id) { return id.toString(); @@ -90,6 +90,8 @@ public interface GrpcEingangMapper { @Mapping(target = "attachments", ignore = true) @Mapping(target = "representation", ignore = true) @Mapping(target = "representations", ignore = true) + // TOASK: Wird aktuell nicht gebraucht, trotzdem implementiern? + @Mapping(target = "header.serviceKonto", ignore = true) FormData toFormData(GrpcEingang eingang); } diff --git a/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java b/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..e95858f4d97384c13ade5d636bd55c493f2bfa24 --- /dev/null +++ b/router/src/main/java/de/ozgcloud/eingang/router/ServiceKontoMapper.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.router; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.vorgang.common.GrpcObject; +import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper; +import de.ozgcloud.vorgang.vorgang.GrpcPostfachAddress; +import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; + +@Component +class ServiceKontoMapper { + + @Autowired + private GrpcObjectMapper grpcObjectMapper; + + public GrpcServiceKonto toServiceKonto(ServiceKonto serviceKonto) { + return GrpcServiceKonto.newBuilder() + .setType(serviceKonto.getType()) + .addAllPostfachAddresses(getPostfachAddresses(serviceKonto)) + .build(); + } + + private List<GrpcPostfachAddress> getPostfachAddresses(ServiceKonto serviceKonto) { + return serviceKonto.getPostfachAddresses().stream().map(this::fromPostfachAddress).toList(); + } + + private GrpcPostfachAddress fromPostfachAddress(PostfachAddress postfachAddress) { + return GrpcPostfachAddress.newBuilder() + .setVersion(postfachAddress.getVersion()) + .setType(postfachAddress.getType()) + .setIdentifier(mapFromIdentifier(postfachAddress.getIdentifier())) + .build(); + } + + GrpcObject mapFromIdentifier(PostfachAddressIdentifier identifier) { + return grpcObjectMapper.fromMap(Map.of(StringBasedIdentifier.POSTFACH_ID_FIELD, getStringBasedValue(identifier))); + } + + private String getStringBasedValue(PostfachAddressIdentifier identifier) { + return ((StringBasedIdentifier) identifier).getPostfachId(); + } +} \ No newline at end of file diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoListProperties.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java similarity index 57% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoListProperties.java rename to router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java index 764833b722fb6677b21c4576e4716fa688fafb03..55e81ba2dbf0832d035268c78d8c8a186bcb9783 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoListProperties.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerListProperties.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; @@ -35,18 +35,18 @@ import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Collectors; -import javax.validation.Constraint; -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintValidatorContext; -import javax.validation.Payload; -import javax.validation.constraints.NotNull; +import jakarta.validation.Constraint; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.Payload; +import jakarta.validation.constraints.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.validation.annotation.Validated; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.PlutoListPropertiesConstraint; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.VorgangManagerListPropertiesConstraint; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @@ -54,10 +54,10 @@ import lombok.Setter; @Getter @Setter @Configuration -@ConfigurationProperties(prefix = "kop.adapter") +@ConfigurationProperties(prefix = "ozgcloud.adapter") @Validated -@PlutoListPropertiesConstraint -class PlutoListProperties { +@VorgangManagerListPropertiesConstraint +class VorgangManagerListProperties { enum FallbackStrategy { DENY, FUNDSTELLE @@ -74,16 +74,16 @@ class PlutoListProperties { private RoutingStrategy routingStrategy; private Optional<FallbackStrategy> fallbackStrategy = Optional.empty(); - private Optional<String> targetPlutoName = Optional.empty(); - private Optional<String> fundstellePlutoName = Optional.empty(); + private Optional<String> targetVorgangManagerName = Optional.empty(); + private Optional<String> fundstelleVorgangManagerName = Optional.empty(); private Map<String, String> organisationseinheiten = Collections.emptyMap(); @Documented - @Constraint(validatedBy = PlutoListPropertiesValidator.class) + @Constraint(validatedBy = VorgangManagerListPropertiesValidator.class) @Target({ ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) - static @interface PlutoListPropertiesConstraint { + static @interface VorgangManagerListPropertiesConstraint { String message() default "Routing Configuration invalid"; Class<?>[] groups() default {}; @@ -92,34 +92,34 @@ class PlutoListProperties { } @AllArgsConstructor - public static class PlutoListPropertiesValidator implements ConstraintValidator<PlutoListPropertiesConstraint, PlutoListProperties> { + public static class VorgangManagerListPropertiesValidator implements ConstraintValidator<VorgangManagerListPropertiesConstraint, VorgangManagerListProperties> { - private static final Predicate<PlutoListProperties> IS_SINGLE_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.SINGLE; - private static final Predicate<PlutoListProperties> HAS_TARGET_NAME = props -> props.getTargetPlutoName().isPresent(); + private static final Predicate<VorgangManagerListProperties> IS_SINGLE_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.SINGLE; + private static final Predicate<VorgangManagerListProperties> HAS_TARGET_NAME = props -> props.getTargetVorgangManagerName().isPresent(); - private static final Predicate<PlutoListProperties> IS_MULTI_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.MULTI; - private static final Predicate<PlutoListProperties> HAS_FALLBACK_STRATEGY = props -> Objects.nonNull(props.getFallbackStrategy()); + private static final Predicate<VorgangManagerListProperties> IS_MULTI_ROUTING = props -> props.getRoutingStrategy() == RoutingStrategy.MULTI; + private static final Predicate<VorgangManagerListProperties> HAS_FALLBACK_STRATEGY = props -> Objects.nonNull(props.getFallbackStrategy()); - private static final Predicate<PlutoListProperties> IS_FALLBACK_TO_FUNDSTELLE = props -> props.getFallbackStrategy() + private static final Predicate<VorgangManagerListProperties> IS_FALLBACK_TO_FUNDSTELLE = props -> props.getFallbackStrategy() .map(strategy -> strategy == FallbackStrategy.FUNDSTELLE).orElse(false); - private static final Predicate<PlutoListProperties> HAS_FUNDSTELLE = props -> props.getFundstellePlutoName().isPresent(); + private static final Predicate<VorgangManagerListProperties> HAS_FUNDSTELLE = props -> props.getFundstelleVorgangManagerName().isPresent(); @Override - public boolean isValid(PlutoListProperties value, ConstraintValidatorContext context) { + public boolean isValid(VorgangManagerListProperties value, ConstraintValidatorContext context) { return IS_SINGLE_ROUTING.and(HAS_TARGET_NAME) .or(IS_MULTI_ROUTING.and(HAS_FALLBACK_STRATEGY)) .and(IS_FALLBACK_TO_FUNDSTELLE.negate().or(HAS_FUNDSTELLE)) - .and(this::hasAllPlutosConfigured) + .and(this::hasAllVorgangManagersConfigured) .test(value); } - private boolean hasAllPlutosConfigured(PlutoListProperties props) { + private boolean hasAllVorgangManagersConfigured(VorgangManagerListProperties props) { var clientNames = props.getClientProperties() .map(ps -> ps.getClient()) .map(Map::keySet) .orElse(Collections.emptySet()); - return props.getOrganisationseinheiten().values().stream().map(plutoName -> clientNames.contains("pluto-" + plutoName)) + return props.getOrganisationseinheiten().values().stream().map(organisationseinheitName -> clientNames.contains("vorgang-manager-" + organisationseinheitName)) .collect(Collectors.reducing(true, Boolean::logicalAnd)); } } diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolver.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java similarity index 80% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolver.java rename to router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java index a86d3463c73ae7d53675c04f73c78c0eab9fd3c5..287b7117b3e5036bd69dc00b35ecdeca7d66982b 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolver.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangManagerServerResolver.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,24 +21,24 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.Collection; import java.util.Collections; import java.util.Optional; -import javax.annotation.PostConstruct; -import javax.validation.Valid; +import jakarta.annotation.PostConstruct; +import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.FallbackStrategy; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.RoutingStrategy; -import de.itvsh.kop.eingangsadapter.router.errorhandling.AdapterConfigurationException; -import de.itvsh.kop.eingangsadapter.router.errorhandling.UnknownOrganisationseinheitException; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.FallbackStrategy; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.RoutingStrategy; +import de.ozgcloud.eingang.router.errorhandling.AdapterConfigurationException; +import de.ozgcloud.eingang.router.errorhandling.UnknownOrganisationseinheitException; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.Channel; import io.grpc.stub.AbstractStub; import lombok.NonNull; @@ -49,15 +49,15 @@ import net.devh.boot.grpc.client.stubfactory.StubFactory; @Component @Log4j2 -class PlutoServerResolver { +public class VorgangManagerServerResolver { - static final String CHANNEL_NAME_PREFIX = "pluto-"; + static final String CHANNEL_NAME_PREFIX = "vorgang-manager-"; @Autowired private GrpcChannelFactory grpcChannelFactory; @Autowired @Valid - private PlutoListProperties properties; + private VorgangManagerListProperties properties; @Autowired(required = false) private Collection<StubFactory> stubFactories = Collections.emptyList(); @@ -105,7 +105,7 @@ class PlutoServerResolver { Optional<String> target; if (properties.getRoutingStrategy() == RoutingStrategy.SINGLE) { - target = properties.getTargetPlutoName(); + target = properties.getTargetVorgangManagerName(); } else { target = organisationsEinheitId.map(properties.getOrganisationseinheiten()::get); } @@ -122,8 +122,8 @@ class PlutoServerResolver { if (fallbackStrategy == FallbackStrategy.DENY) { throw new UnknownOrganisationseinheitException(); } else { - return properties.getFundstellePlutoName().map(this::addChannelPrefix).orElseThrow(() -> new AdapterConfigurationException( - "Property 'fundstellePlutoName' is missing but required for fallbackStrategy 'FUNDSTELLE'")); + return properties.getFundstelleVorgangManagerName().map(this::addChannelPrefix).orElseThrow(() -> new AdapterConfigurationException( + "Property 'fundstelleVorgangManagerName' is missing but required for fallbackStrategy 'FUNDSTELLE'")); } }).orElseThrow(() -> { LOG.warn("Missing required routing fallback Strategy. Falling back to 'DENY'"); diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java new file mode 100644 index 0000000000000000000000000000000000000000..b624e08b2d308eaf00688add1456309a2563c03e --- /dev/null +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangRemoteService.java @@ -0,0 +1,219 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.router; + +import java.io.InputStream; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.google.protobuf.ByteString; + +import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils; +import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils.FileSender; +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileMetaData; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse; +import de.ozgcloud.vorgang.grpc.command.GrpcCallContext; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationRequest; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import io.grpc.stub.CallStreamObserver; +import io.grpc.stub.StreamObserver; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Service +public class VorgangRemoteService { + + @Autowired + private VorgangManagerServerResolver vorgangManagerServerResolver; + + public String createVorgang(FormData formData, GrpcEingang eingang, Optional<String> organisationsEinheitenId) { + var vorgangManagerStub = vorgangManagerServerResolver.resolveVorgangServiceBlockingStubByOrganisationseinheitenId(organisationsEinheitenId); + LOG.info("Connecting to vorgang-manager server " + vorgangManagerStub.getChannel().authority() + "; OrganisationsEinheitId: " + organisationsEinheitenId); + + return createVorgang(formData, eingang, vorgangManagerStub, getBinaryFileServiceStub(organisationsEinheitenId)); + } + + public String createVorgang(FormData formData, GrpcEingang eingang, VorgangServiceBlockingStub remoteStub, + BinaryFileServiceStub remoteAsyncStub) { + return new VorgangCreator(formData, eingang, remoteStub, remoteAsyncStub).create(); + } + + private BinaryFileServiceStub getBinaryFileServiceStub(Optional<String> organisationsEinheitenId) { + return vorgangManagerServerResolver.resolveBinaryFileServiceStubByOrganisationsEinheitId(organisationsEinheitenId); + } + + @RequiredArgsConstructor + public class VorgangCreator { + + static final String VORGANG_ATTACHMENT_FIELD = "vorgangAttachment"; + static final String CALL_CONTEXT_CLIENT = "eingangAdpater"; + + private final FormData formData; + private final GrpcEingang eingang; + private final VorgangServiceBlockingStub vorgangRemoteStub; + private final BinaryFileServiceStub binaryFileRemoteStub; + + @Getter + private String vorgangId; + @Getter + private List<IncomingFileGroup> uploadedAttachments; + @Getter + private List<IncomingFile> uploadedRepresentations; + + String create() { + vorgangId = startCreation(); + + uploadedAttachments = uploadAttachments(); + uploadedRepresentations = uploadRepresentations(); + + finishCreation(); + return vorgangId; + } + + String startCreation() { + return vorgangRemoteStub.startCreation(buildStartCreationRequest(eingang)).getVorgangId(); + } + + private GrpcCreateVorgangRequest buildStartCreationRequest(GrpcEingang eingang) { + var eingangWithoutFiles = eingang.toBuilder().clearAttachments().clearRepresentations().build(); + return GrpcCreateVorgangRequest.newBuilder().setEingang(eingangWithoutFiles).build(); + } + + List<IncomingFileGroup> uploadAttachments() { + return formData.getAttachments().stream().map(this::uploadAttachment).toList(); + } + + private IncomingFileGroup uploadAttachment(IncomingFileGroup attachment) { + var filesWithId = attachment.getFiles().stream().map(file -> file.toBuilder().id(uploadIncomingFile(file)).build()).toList(); + + return IncomingFileGroup.builder().name(attachment.getName()).files(filesWithId).build(); + } + + List<IncomingFile> uploadRepresentations() { + return formData.getRepresentations().stream() + .map(representation -> representation.toBuilder().id(uploadIncomingFile(representation)).build()).toList(); + } + + String uploadIncomingFile(IncomingFile incomingFile) { + var fileContentStream = incomingFile.getContentStreamForFinalRead(); + + var resultFuture = GrpcFileUploadUtils.createSender(this::buildChunkRequest, fileContentStream, + this::buildCallStreamObserver) + .withMetaData(buildMetaDataRequest(incomingFile)) + .send(); + + return waitUntilFutureToComplete(resultFuture, fileContentStream).getFileId(); + } + + GrpcUploadBinaryFileRequest buildChunkRequest(byte[] bytes, Integer length) { + return GrpcUploadBinaryFileRequest.newBuilder().setFileContent((ByteString.copyFrom(bytes, 0, length))).build(); + } + + private CallStreamObserver<GrpcUploadBinaryFileRequest> buildCallStreamObserver( + StreamObserver<GrpcUploadBinaryFileResponse> responseObserver) { + return (CallStreamObserver<GrpcUploadBinaryFileRequest>) binaryFileRemoteStub.uploadBinaryFileAsStream(responseObserver); + } + + GrpcUploadBinaryFileRequest buildMetaDataRequest(IncomingFile ingomingFile) { + return GrpcUploadBinaryFileRequest.newBuilder() + .setMetadata(GrpcUploadBinaryFileMetaData.newBuilder() + .setContext(GrpcCallContext.newBuilder().setClient(CALL_CONTEXT_CLIENT).build()) + .setVorgangId(getVorgangId()) + .setField(VORGANG_ATTACHMENT_FIELD) + .setContentType(ingomingFile.getContentType()) + .setSize(ingomingFile.getSize()) + .setFileName(ingomingFile.getName())) + .build(); + } + + GrpcUploadBinaryFileResponse waitUntilFutureToComplete(FileSender<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse> fileSender, + InputStream fileContentStream) { + try { + return fileSender.getResultFuture().get(2, TimeUnit.MINUTES); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + fileSender.cancelOnError(e); + throw new TechnicalException("Waiting for finishing upload was interrupted.", e); + } catch (ExecutionException | TimeoutException e) { + fileSender.cancelOnTimeout(); + throw new TechnicalException("Error / Timeout on uploading data.", e); + } finally { + IOUtils.closeQuietly(fileContentStream); + } + } + + String finishCreation() { + return vorgangRemoteStub.finishCreation(buildFinishCreationRequest()).getMessage(); + } + + GrpcFinishCreationRequest buildFinishCreationRequest() { + return GrpcFinishCreationRequest.newBuilder() + .addAllAttachments(getAttachmentsWithoutContent()) + .addAllRepresentations(getRepresentationsWithoutContent()) + .setVorgangId(getVorgangId()) + .build(); + } + + private List<GrpcIncomingFileGroup> getAttachmentsWithoutContent() { + return getUploadedAttachments().stream().map(this::toIncomingFileGroup).toList(); + } + + private GrpcIncomingFileGroup toIncomingFileGroup(IncomingFileGroup incomingFileGroup) { + return GrpcIncomingFileGroup.newBuilder() + .setName(incomingFileGroup.getName()) + .addAllFiles(incomingFileGroup.getFiles().stream().map(this::toIncomingFile).toList()).build(); + } + + private List<GrpcIncomingFile> getRepresentationsWithoutContent() { + return getUploadedRepresentations().stream().map(this::toIncomingFile).toList(); + } + + private GrpcIncomingFile toIncomingFile(IncomingFile incomingFile) { + return GrpcIncomingFile.newBuilder().clearContent() + .setId(incomingFile.getId()) + .setContentType(incomingFile.getContentType()) + .setName(incomingFile.getName()) + .setSize(incomingFile.getSize()).build(); + } + } +} \ No newline at end of file diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java similarity index 76% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangService.java rename to router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java index 1c897a83fcbe8e7f01d7afb2295ea535b8133a6b..868659b734df4ea5ab58a9d847c71edd243544e2 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/VorgangService.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,28 +21,29 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; @Service public class VorgangService { @Autowired private VorgangRemoteService remoteService; + @Autowired private GrpcEingangMapper grpcEingangMapper; - public void createVorgang(FormData formData) { + public String createVorgang(FormData formData) { var eingang = grpcEingangMapper.toEingang(formData); - var organisationseinheitenId = Optional.ofNullable(formData.getZustaendigeStelle()).map(ZustaendigeStelle::getOrganisationseinheitenId); + var organisationsEinheitenId = Optional.ofNullable(formData.getZustaendigeStelle()).map(ZustaendigeStelle::getOrganisationseinheitenId); - remoteService.createVorgang(eingang, organisationseinheitenId); + return remoteService.createVorgang(formData, eingang, organisationsEinheitenId); } } \ No newline at end of file diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/AdapterConfigurationException.java b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java similarity index 89% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/AdapterConfigurationException.java rename to router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java index 5fe69ed2263d7e420e5780041fed8c5f3e48bb63..c596ffe10d04406924d6351f3fa0894ab489656b 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/AdapterConfigurationException.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/AdapterConfigurationException.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router.errorhandling; +package de.ozgcloud.eingang.router.errorhandling; public class AdapterConfigurationException extends RuntimeException { diff --git a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/UnknownOrganisationseinheitException.java b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java similarity index 90% rename from router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/UnknownOrganisationseinheitException.java rename to router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java index 5b8ad44d2b7e9693272d25ba073556578e01a529..8740bdf4167c340b1659ca98d24114c28329c018 100644 --- a/router/src/main/java/de/itvsh/kop/eingangsadapter/router/errorhandling/UnknownOrganisationseinheitException.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/errorhandling/UnknownOrganisationseinheitException.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router.errorhandling; +package de.ozgcloud.eingang.router.errorhandling; public class UnknownOrganisationseinheitException extends RuntimeException { diff --git a/router/src/main/resources/META-INF/spring/README.md b/router/src/main/resources/META-INF/spring/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c744f13890773a0fba0f09de0dc276c374cd4fe9 --- /dev/null +++ b/router/src/main/resources/META-INF/spring/README.md @@ -0,0 +1,6 @@ +# Autoconfiguration.imports + +Fix for using grpc starter with spring-boot 3. +Remove wenn PR ist released: + +https://github.com/yidongnan/grpc-spring-boot-starter/pull/775/commits/836fcabaa9327d75640c37dbb0bc7f45a20b563e \ No newline at end of file diff --git a/router/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/router/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000000000000000000000000000000000000..099d759980592d22435720bf65909618aa0d3c2a --- /dev/null +++ b/router/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,6 @@ +net.devh.boot.grpc.client.autoconfigure.GrpcClientAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientMetricAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientHealthAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientSecurityAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcClientTraceAutoConfiguration +net.devh.boot.grpc.client.autoconfigure.GrpcDiscoveryClientAutoConfiguration \ No newline at end of file diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/IncomingFileTestFactory.java b/router/src/test/java/de/itvsh/kop/eingangsadapter/router/IncomingFileTestFactory.java deleted file mode 100644 index ba9f931227024e0980a762cb32b9343e144b6127..0000000000000000000000000000000000000000 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/IncomingFileTestFactory.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.router; - -import java.util.UUID; - -import de.itvsh.kop.common.binaryfile.FileId; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class IncomingFileTestFactory { - - public static final FileId ID = FileId.createNew(); - public static final String VENDOR_ID = UUID.randomUUID().toString(); - public static final String NAME = "XML-Daten.xml"; - public static final String CONTENT_TYPE_STR = "application/xml"; - public static final byte[] CONTENT = "Da ziehe ich meinen virtuellen Hut!".getBytes(); - public static final long SIZE = CONTENT.length; - - public static IncomingFile create() { - return createBuilder().build(); - } - - public static IncomingFile.IncomingFileBuilder createBuilder() { - return IncomingFile.builder() - .id(ID.toString()) - .vendorId(VENDOR_ID) - .name(NAME) - .contentType(CONTENT_TYPE_STR) - .size(SIZE) - .content(CONTENT); - } -} diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..e7fbc2a6de22ef4cd73d3719433326f517ac0e6a --- /dev/null +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangHeaderTestFactory.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.router; + +import static de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory.*; + +import de.ozgcloud.vorgang.vorgang.GrpcEingangHeader; +import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; + +public class GrpcEingangHeaderTestFactory { + + public static GrpcEingangHeader create() { + return createBuilder().build(); + } + + public static GrpcEingangHeader.Builder createBuilder() { + return GrpcEingangHeader.newBuilder() + .setRequestId(REQUEST_ID) + .setCreatedAt(CREATED_AT_STR) + .setFormId(FORM_ID) + .setFormEngineName(FORM_ENGINE_NAME) + .setFormName(FORM_NAME) + .setSender(SENDER) + .setServiceKonto(GrpcServiceKonto.newBuilder().build()) + .setVorgangNummer(VORGANG_NUMMER); + } +} diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperITCase.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java similarity index 74% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperITCase.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java index 0a8d2e0ff8acfd5c93fa5560ed1b230b66be00ae..9c4caee30e902c4af410fc32c3174a29911e89a9 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperITCase.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperITCase.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; @@ -32,25 +32,21 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.itvsh.kop.eingangsadapter.common.formdata.AntragstellerTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory; -import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; -class GrpcEingangMapperITCase { +import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; - @InjectMocks - private GrpcEingangMapper MAPPER_INSTANCE = Mappers.getMapper(GrpcEingangMapper.class); +@SpringBootTest +class GrpcEingangMapperITCase { - @Spy - private GrpcFormDataMapper grpcFormDataMapper = Mappers.getMapper(GrpcFormDataMapper.class); + @Autowired + private GrpcEingangMapper grpcEingangMapper; @DisplayName("Mapped GrpcEingang") @Nested @@ -63,7 +59,7 @@ class GrpcEingangMapperITCase { @Test void antragstellerShouldBeMapped() { - var antragSteller = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()).getAntragsteller(); + var antragSteller = grpcEingangMapper.toEingang(FormDataTestFactory.create()).getAntragsteller(); assertThat(antragSteller.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID); assertThat(antragSteller.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); @@ -73,7 +69,7 @@ class GrpcEingangMapperITCase { @Test void dataShouldBeMapped() { - var antragsteller = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()).getAntragsteller(); + var antragsteller = grpcEingangMapper.toEingang(FormDataTestFactory.create()).getAntragsteller(); assertThat(antragsteller.getOtherData().getFieldList()).hasSize(1); assertThat(antragsteller.getOtherData().getField(0).getName()).isEqualTo(AntragstellerTestFactory.GEBIET_BEZEICHNUNG_KEY); @@ -87,11 +83,11 @@ class GrpcEingangMapperITCase { @Test void eingangShouldHaveZustaendigeStelle() { - var zustaendigeStelle = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()).getZustaendigeStelle(); + var zustaendigeStelle = grpcEingangMapper.toEingang(FormDataTestFactory.create()).getZustaendigeStelle(); assertThat(zustaendigeStelle).isNotNull(); - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigsStelleTestFactory.ORGANISATIONSEINHEIT_ID); - assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigsStelleTestFactory.EMAIL); + assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); + assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleTestFactory.EMAIL); } } @@ -104,7 +100,7 @@ class GrpcEingangMapperITCase { @BeforeEach void init() { - eingang = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()); + eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create()); } @Test @@ -134,7 +130,7 @@ class GrpcEingangMapperITCase { assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(attachment.getContent()).isEmpty(); } @Test @@ -152,7 +148,7 @@ class GrpcEingangMapperITCase { assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(attachment.getContent()).isEmpty(); } } @@ -163,7 +159,7 @@ class GrpcEingangMapperITCase { @Test void testRepresentations() { - GrpcEingang eingang = MAPPER_INSTANCE.toEingang(FormDataTestFactory.create()); + GrpcEingang eingang = grpcEingangMapper.toEingang(FormDataTestFactory.create()); assertThat(eingang.getRepresentationsCount()).isEqualTo(1); @@ -172,7 +168,7 @@ class GrpcEingangMapperITCase { assertThat(representation.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(representation.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(representation.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(representation.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(representation.getContent()).isEmpty(); } } @@ -183,7 +179,7 @@ class GrpcEingangMapperITCase { @Test void valueListShouldGenerateFields() { - GrpcEingang eingang = MAPPER_INSTANCE + GrpcEingang eingang = grpcEingangMapper .toEingang(FormDataTestFactory.createBuilder().formData(Map.of("key", List.of("value1", "value2"))).build()); assertThat(eingang.getFormData().getFieldCount()).isEqualTo(2); @@ -192,7 +188,7 @@ class GrpcEingangMapperITCase { @Test void objectListShouldGenerateSubForms() { - GrpcEingang eingang = MAPPER_INSTANCE + GrpcEingang eingang = grpcEingangMapper .toEingang(FormDataTestFactory.createBuilder() .formData(Map.of("key-1", List.of(Map.of("sub_key", "value1"), Map.of("sub_key", "value2")))).build()); diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java similarity index 55% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java index ddccf616fd26b2dc3dc424599f25e8c51d10e30b..bad753ccad83e5ce8ad7fbbc34bd48eff158c9c5 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcEingangMapperTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; @@ -35,53 +35,81 @@ import org.mapstruct.factory.Mappers; import org.mockito.InjectMocks; import org.mockito.Mock; -import de.itvsh.kop.eingangsadapter.common.formdata.AntragstellerTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory; -import de.itvsh.kop.pluto.common.grpc.GrpcFormDataMapper; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcFormData; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; +import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper; +import de.ozgcloud.vorgang.vorgang.GrpcAntragsteller; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcFormData; +import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; +import de.ozgcloud.vorgang.vorgang.GrpcZustaendigeStelle; class GrpcEingangMapperTest { @InjectMocks private GrpcEingangMapper mapper = Mappers.getMapper(GrpcEingangMapper.class); - @Mock private GrpcFormDataMapper grpcFormDataMapper; + @Mock + private ServiceKontoMapper serviceKontoMapper; + + @DisplayName("To antragsteller") + @Nested + class TestToAntragsteller { - @BeforeEach - void mockMapperReturnValues() { - lenient().when(grpcFormDataMapper.mapToFormData(anyMap())) - .thenReturn(GrpcFormData.newBuilder().addField(GrpcFormFieldTestFactory.create()).build()); + @Test + void antragstellerShouldBeMapped() { + var mapped = toAntragsteller(); + + assertThat(mapped.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID); + assertThat(mapped.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); + assertThat(mapped.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); + + } + + private GrpcAntragsteller toAntragsteller() { + return mapper.toAntragsteller(AntragstellerTestFactory.create()); + } } - @DisplayName("Mapped GrpcEingang") + @DisplayName("To zustaendigeStelle") @Nested - class TestToEingang { + class TestToZustaendigeStelle { - @Nested - @DisplayName("Mapped Antragsteller") - class TestMappingAntragsteller { + @Test + void eingangShouldHaveZustaendigeStelle() { + var zustaendigeStelle = toZustaendigeStelle(); - @Test - void antragstellerShouldBeMapped() { + assertThat(zustaendigeStelle).isNotNull(); + assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID); + assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleTestFactory.EMAIL); + } - var mapped = mapper.map(AntragstellerTestFactory.create()); + private GrpcZustaendigeStelle toZustaendigeStelle() { + return mapper.toZustaendigeStelle(ZustaendigeStelleTestFactory.create()); + } + } - assertThat(mapped.getPostfachId()).isEqualTo(AntragstellerTestFactory.POSTFACH_ID); - assertThat(mapped.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); - assertThat(mapped.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); + @DisplayName("To eingang") + @Nested + class TestToEingang { - } + @BeforeEach + void mockMapperReturnValues() { + when(grpcFormDataMapper.mapToFormData(anyMap())) + .thenReturn(GrpcFormData.newBuilder().addField(GrpcFormFieldTestFactory.create()).build()); + when(serviceKontoMapper.toServiceKonto(any())).thenReturn(GrpcServiceKonto.newBuilder().build()); + } + + @Nested + @DisplayName("Mapped Antragsteller") + class TestMappingAntragsteller { @Test void dataShouldBeMapped() { - - var antragsteller = mapper.toEingang(FormDataTestFactory.create()).getAntragsteller(); + var antragsteller = toEingang().getAntragsteller(); assertThat(antragsteller.getOtherData().getFieldList()).hasSize(1); assertThat(antragsteller.getOtherData().getField(0).getName()).isEqualTo(GrpcFormFieldTestFactory.TEST_NAME); @@ -89,84 +117,60 @@ class GrpcEingangMapperTest { } } - @Nested - @DisplayName("Mapped Zustaendinge Stelle") - class TestZustaendigeStelle { - @Test - void eingangShouldHaveZustaendigeStelle() { - - var zustaendigeStelle = mapFilledZustaendigeStelle(); - - assertThat(zustaendigeStelle).isNotNull(); - assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigsStelleTestFactory.ORGANISATIONSEINHEIT_ID); - assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigsStelleTestFactory.EMAIL); - } - - private GrpcZustaendigeStelle mapFilledZustaendigeStelle() { - var eingang = mapper.toEingang(FormDataTestFactory.create()); - assertThat(eingang.getZustaendigeStelle()).isNotNull(); - return eingang.getZustaendigeStelle(); - } - } - @Nested @DisplayName("Test mapped Attachments") class TestAttachments { - private GrpcEingang eingang; - - @BeforeEach - void init() { - - eingang = mapper.toEingang(FormDataTestFactory.create()); - } - @Test void validateNumberOfAttachments() { + var eingang = toEingang(); assertThat(eingang.getNumberOfAttachments()).isEqualTo(2); } @Test void validateNumberOfAttachmentGroups() { + var eingang = toEingang(); assertThat(eingang.getAttachmentsCount()).isEqualTo(2); } @Test void validateGroup1AttachmentCount() { + var eingang = toEingang(); assertThat(eingang.getAttachmentsList().get(0).getFilesCount()).isEqualTo(1); } @Test void validateGroup1Attachment() { + var eingang = toEingang(); - GrpcIncomingFile attachment = eingang.getAttachmentsList().get(0).getFilesList().get(0); - + var attachment = eingang.getAttachmentsList().get(0).getFilesList().get(0); assertThat(attachment.getId()).isEqualTo(IncomingFileTestFactory.ID); assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(attachment.getContent()).isEmpty(); } @Test void validateGroup2AttachmentCount() { + var eingang = toEingang(); assertThat(eingang.getAttachmentsList().get(1).getFilesCount()).isEqualTo(1); } @Test void validateGroup2Attachment() { + var eingang = toEingang(); - GrpcIncomingFile attachment = eingang.getAttachmentsList().get(1).getFilesList().get(0); - + var attachment = eingang.getAttachmentsList().get(1).getFilesList().get(0); assertThat(attachment.getId()).isEqualTo(IncomingFileTestFactory.ID); assertThat(attachment.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(attachment.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(attachment.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(attachment.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(attachment.getContent()).isEmpty(); } } @@ -176,18 +180,32 @@ class GrpcEingangMapperTest { @Test void testRepresentations() { - - GrpcEingang eingang = mapper.toEingang(FormDataTestFactory.create()); + var eingang = toEingang(); assertThat(eingang.getRepresentationsCount()).isEqualTo(1); - - GrpcIncomingFile representation = eingang.getRepresentationsList().get(0); + var representation = eingang.getRepresentationsList().get(0); assertThat(representation.getId()).isEqualTo(IncomingFileTestFactory.ID); assertThat(representation.getVendorId()).isEqualTo(IncomingFileTestFactory.VENDOR_ID); assertThat(representation.getName()).isEqualTo(IncomingFileTestFactory.NAME); assertThat(representation.getContentType()).isEqualTo(IncomingFileTestFactory.CONTENT_TYPE); - assertThat(representation.getContent().toByteArray()).isEqualTo(IncomingFileTestFactory.CONTENT); + assertThat(representation.getContent()).isEmpty(); } } + + @Nested + @DisplayName("Test mapped Header") + class TestHeader { + @Test + void shouldMapAllFields() { + var header = toEingang().getHeader(); + + assertThat(header).usingRecursiveAssertion().isEqualTo(GrpcEingangHeaderTestFactory.create()); + + } + } + + private GrpcEingang toEingang() { + return mapper.toEingang(FormDataTestFactory.create()); + } } -} +} \ No newline at end of file diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcFormFieldTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java similarity index 88% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcFormFieldTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java index 6c28f5ec8e4479ec4871d71451317fc6046b1c41..b65a7bab79dd5baa3af9f5fcf59b21e34e82b362 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcFormFieldTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcFormFieldTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; -import de.itvsh.ozg.pluto.vorgang.GrpcFormField; +import de.ozgcloud.vorgang.vorgang.GrpcFormField; public class GrpcFormFieldTestFactory { diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileGroupTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java similarity index 85% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileGroupTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java index 368457a1d7bde4459049942e99f7601fcc56749a..b33fe6d242326d1cd9af8f5d52839f86fb6f4d0f 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileGroupTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileGroupTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,10 +21,10 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFileGroup; public class GrpcIncomingFileGroupTestFactory { diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java similarity index 88% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java index 5791af7d10bfee3bcb8618bc0838986336cf3187..6255b0120085d6afc2c021d3661d434b7a1ac860 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/GrpcIncomingFileTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcIncomingFileTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,12 +21,12 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import com.google.protobuf.ByteString; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcIncomingFile; public class GrpcIncomingFileTestFactory { diff --git a/router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d9a1b7b43721de0442aaf083b06748eee983e032 --- /dev/null +++ b/router/src/test/java/de/ozgcloud/eingang/router/ServiceKontoMapperTest.java @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.router; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.vorgang.common.GrpcObject; +import de.ozgcloud.vorgang.common.GrpcProperty; +import de.ozgcloud.vorgang.common.grpc.GrpcObjectMapper; +import de.ozgcloud.vorgang.vorgang.GrpcServiceKonto; + +class ServiceKontoMapperTest { + + @InjectMocks + private ServiceKontoMapper mapper; + @Mock + private GrpcObjectMapper grpcObjectMapper; + + @Nested + @DisplayName("To servicekonto") + class TestMapServiceKonto { + + private final GrpcProperty grpcProperty = GrpcProperty.newBuilder() + .setName(StringBasedIdentifier.POSTFACH_ID_FIELD) + .addValue(PostfachAddressTestFactory.POSTFACH_ID) + .build(); + private final GrpcObject grpcObject = GrpcObject.newBuilder() + .addProperty(grpcProperty) + .build(); + + @BeforeEach + void mockGrpcObjectMapper() { + when(grpcObjectMapper.fromMap(any())).thenReturn(grpcObject); + } + + @Test + void shouldCallGrpcMapper() { + getServiceKontoFromMappedEingang(); + + verify(grpcObjectMapper).fromMap(any()); + } + + @Test + void shouldBeExist() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto).isNotNull(); + } + + @Test + void shouldContainsType() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoTestFactory.TYPE); + } + + @DisplayName("postfach address") + @Nested + class TestPostfachAddress { + + @Test + void shouldHasSize() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getPostfachAddressesList()).hasSize(1); + } + + @Test + void shouldContainsVersion() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getPostfachAddressesList().get(0).getVersion()).isEqualTo(PostfachAddressTestFactory.VERSION); + } + + @Test + void shouldContainsIdentifier() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getPostfachAddressesList().get(0).getIdentifier().getPropertyList()).hasSize(1); + + var property = serviceKonto.getPostfachAddressesList().get(0).getIdentifier().getPropertyList().get(0); + assertThat(property.getName()).isEqualTo(StringBasedIdentifier.POSTFACH_ID_FIELD); + assertThat(property.getValue(0)).isEqualTo(PostfachAddressTestFactory.POSTFACH_ID); + } + + @Test + void shouldContainsType() { + var serviceKonto = getServiceKontoFromMappedEingang(); + + assertThat(serviceKonto.getPostfachAddressesList().get(0).getType()).isEqualTo(PostfachAddressTestFactory.POSTFACH_ADDRESS_TYPE); + } + } + + private GrpcServiceKonto getServiceKontoFromMappedEingang() { + return mapper.toServiceKonto(ServiceKontoTestFactory.create()); + } + } +} \ No newline at end of file diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java similarity index 72% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java index 84009f740ad51add1e2d301c3a62a3966775765b..c91d4792a32fe38af4e26aeb48e6005f0979c145 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; @@ -29,21 +29,20 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; - import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import de.itvsh.kop.eingangsadapter.router.GrpcClientsProperties.ClientProperty; +import de.ozgcloud.eingang.router.GrpcClientsProperties.ClientProperty; +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import jakarta.validation.ValidatorFactory; -class PlutoListPropertiesTest { +class VorgangManagerListPropertiesTest { @Nested class TestSingleRouting { - private PlutoListProperties props = PlutoListPropertiesTestFactory.createForSingleRouting(); + private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createForSingleRouting(); @Test void shouldBeValid() { @@ -62,8 +61,8 @@ class PlutoListPropertiesTest { } @Test - void shouldViolateMissingTargetPlutoName() { - props.setTargetPlutoName(Optional.empty()); + void shouldViolateMissingTargetVorgangManagerName() { + props.setTargetVorgangManagerName(Optional.empty()); var violations = getValidator().validate(props); @@ -73,7 +72,7 @@ class PlutoListPropertiesTest { @Nested class TestMultiRouting { - private PlutoListProperties props = PlutoListPropertiesTestFactory.createForMultiRouting(); + private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createForMultiRouting(); @Test void shouldBeValid() { @@ -95,7 +94,7 @@ class PlutoListPropertiesTest { @Nested class TestFallbackFundstelle { - private PlutoListProperties props = PlutoListPropertiesTestFactory.createWithFundstelle(); + private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createWithFundstelle(); @Test void shouldBeValid() { @@ -106,7 +105,7 @@ class PlutoListPropertiesTest { @Test void shouldViolateMissingFundstelle() { - props.setFundstellePlutoName(Optional.empty()); + props.setFundstelleVorgangManagerName(Optional.empty()); var violations = getValidator().validate(props); @@ -116,12 +115,12 @@ class PlutoListPropertiesTest { @Nested class TestClientProperties { - private PlutoListProperties props = PlutoListPropertiesTestFactory.createForMultiRouting(); + private VorgangManagerListProperties props = VorgangManagerListPropertiesTestFactory.createForMultiRouting(); @Test - void shouldViolateMissingPluto() { + void shouldViolateMissingVorgangManager() { Map<String, ClientProperty> clientMap = new HashMap<>(props.getClientProperties().get().getClient()); - clientMap.remove("pluto-kiel"); + clientMap.remove("vorgang-manager-kiel"); props.getClientProperties().get().setClient(clientMap); var violations = getValidator().validate(props); diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java similarity index 61% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java index cde90b59e4f9419fb6cc2b91cf094f99820f400f..67e83b52f2fbe8b0b58518192e80fc84e736ebe8 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoListPropertiesTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerListPropertiesTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,44 +21,53 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import java.util.Map; import java.util.Optional; -import de.itvsh.kop.eingangsadapter.router.GrpcClientsProperties.ClientProperty; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.FallbackStrategy; -import de.itvsh.kop.eingangsadapter.router.PlutoListProperties.RoutingStrategy; +import de.ozgcloud.eingang.router.GrpcClientsProperties.ClientProperty; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.FallbackStrategy; +import de.ozgcloud.eingang.router.VorgangManagerListProperties.RoutingStrategy; -class PlutoListPropertiesTestFactory { +class VorgangManagerListPropertiesTestFactory { static final FallbackStrategy FALLBACK_STRATEGY = FallbackStrategy.DENY; - static final String FUNDSTELLE_PLUTO_NAME = "fundstelle"; - static final String FUNDSTELLE_CHANNEL_NAME = "pluto-" + FUNDSTELLE_PLUTO_NAME; + static final String FUNDSTELLE_VORGANG_MANAGER_NAME = "fundstelle"; + static final String FUNDSTELLE_CHANNEL_NAME = "vorgang-manager-" + FUNDSTELLE_VORGANG_MANAGER_NAME; static final String ORGANISATIONSEINHEIT_ID = "123"; - static final String PLUTO_NAME = "kiel"; - static final String CHANNEL_NAME = "pluto-" + PLUTO_NAME; + static final String VORGANG_MANAGER_NAME = "kiel"; + static final String CHANNEL_NAME = "vorgang-manager-" + VORGANG_MANAGER_NAME; static final String ADDRESS = "127.0.0.1"; - static PlutoListProperties createWithFundstelle() { + static VorgangManagerListProperties createWithFundstelle() { var props = createForMultiRouting(); props.setFallbackStrategy(Optional.of(FallbackStrategy.FUNDSTELLE)); - props.setFundstellePlutoName(Optional.of(FUNDSTELLE_PLUTO_NAME)); + props.setFundstelleVorgangManagerName(Optional.of(FUNDSTELLE_VORGANG_MANAGER_NAME)); return props; } - static PlutoListProperties createForMultiRouting() { - var props = new PlutoListProperties(); + static VorgangManagerListProperties createForMultiRouting() { + var props = new VorgangManagerListProperties(); props.setFallbackStrategy(Optional.of(FALLBACK_STRATEGY)); props.setRoutingStrategy(RoutingStrategy.MULTI); - props.setOrganisationseinheiten(Map.of(ORGANISATIONSEINHEIT_ID, PLUTO_NAME)); + props.setOrganisationseinheiten(Map.of(ORGANISATIONSEINHEIT_ID, VORGANG_MANAGER_NAME)); props.setClientProperties(Optional.of(createClientProperties())); return props; } + static VorgangManagerListProperties createForSingleRouting() { + var props = new VorgangManagerListProperties(); + props.setRoutingStrategy(RoutingStrategy.SINGLE); + props.setTargetVorgangManagerName(Optional.of(VORGANG_MANAGER_NAME)); + props.setClientProperties(Optional.of(createClientProperties())); + + return props; + } + static GrpcClientsProperties createClientProperties() { var property = new ClientProperty(); property.setAddress(ADDRESS); @@ -67,11 +76,4 @@ class PlutoListPropertiesTestFactory { return properties; } - static PlutoListProperties createForSingleRouting() { - var props = new PlutoListProperties(); - props.setRoutingStrategy(RoutingStrategy.SINGLE); - props.setTargetPlutoName(Optional.of(PLUTO_NAME)); - return props; - } - } diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverITCase.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java similarity index 72% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverITCase.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java index 5788f639fc442b2973fa3ad2490e6a109495111d..f9fd92c18b706c086616365dc532c51a3c87f0d8 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverITCase.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverITCase.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; @@ -31,19 +31,21 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; -@SpringBootTest -class PlutoServerResolverITCase { +@SpringBootTest(properties = { + "grpc.client.vorgang-manager-kiel.address=static://127.0.0.1:9090" +}) +class VorgangManagerServerResolverITCase { @Autowired - private PlutoServerResolver resolver; + private VorgangManagerServerResolver resolver; @Test void shouldReturnVorgangServiceBlockingStub() { var created = resolver - .resolveVorgangServiceBlockingStubByOrganisationseinheitenId(Optional.of(PlutoListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); + .resolveVorgangServiceBlockingStubByOrganisationseinheitenId(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); assertThat(created).isNotNull().isInstanceOf(VorgangServiceBlockingStub.class); } @@ -51,7 +53,7 @@ class PlutoServerResolverITCase { @Test void shouldReturnBinaryFileServiceStub() { var created = resolver - .resolveBinaryFileServiceStubByOrganisationsEinheitId(Optional.of(PlutoListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); + .resolveBinaryFileServiceStubByOrganisationsEinheitId(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); assertThat(created).isNotNull().isInstanceOf(BinaryFileServiceStub.class); } diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java similarity index 66% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java index 84999d9caf5a9f1a2514ca3c78e783c7d750a945..1a34ffcfab0a9ac65242f403acbb12585fd2b19d 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,17 +21,17 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.util.Arrays; import java.util.Collections; import java.util.Optional; -import org.assertj.core.util.Arrays; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -40,20 +40,19 @@ import org.mockito.Mock; import org.mockito.Spy; import org.springframework.test.util.ReflectionTestUtils; -import de.itvsh.kop.eingangsadapter.router.errorhandling.AdapterConfigurationException; -import de.itvsh.kop.eingangsadapter.router.errorhandling.UnknownOrganisationseinheitException; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.eingang.router.errorhandling.AdapterConfigurationException; +import de.ozgcloud.eingang.router.errorhandling.UnknownOrganisationseinheitException; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.Channel; import io.grpc.stub.AbstractStub; import net.devh.boot.grpc.client.channelfactory.GrpcChannelFactory; import net.devh.boot.grpc.client.inject.StubTransformer; import net.devh.boot.grpc.client.stubfactory.StubFactory; -class PlutoServerResolverTest { - +class VorgangManagerServerResolverTest { @Spy @InjectMocks - private PlutoServerResolver resolver; + private VorgangManagerServerResolver resolver; @Mock private GrpcChannelFactory channelFactory; @@ -65,9 +64,9 @@ class PlutoServerResolverTest { @Test void shouldCallChannelFactory() { - resolver.createChannelByName(PlutoListPropertiesTestFactory.PLUTO_NAME); + resolver.createChannelByName(VorgangManagerListPropertiesTestFactory.VORGANG_MANAGER_NAME); - verify(channelFactory).createChannel(PlutoListPropertiesTestFactory.PLUTO_NAME); + verify(channelFactory).createChannel(VorgangManagerListPropertiesTestFactory.VORGANG_MANAGER_NAME); } } @@ -79,17 +78,17 @@ class PlutoServerResolverTest { @Test void shouldCreateChannel() { - setProperties(PlutoListPropertiesTestFactory.createWithFundstelle()); + setProperties(VorgangManagerListPropertiesTestFactory.createWithFundstelle()); var channel = resolver.getFundstelleChannelName(); - assertThat(channel).isNotNull().isEqualTo(PlutoListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); + assertThat(channel).isNotNull().isEqualTo(VorgangManagerListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); } @Test void shouldThrowExceptionIfFundstelleIsMissing() { - var props = PlutoListPropertiesTestFactory.createWithFundstelle(); - props.setFundstellePlutoName(Optional.empty()); + var props = VorgangManagerListPropertiesTestFactory.createWithFundstelle(); + props.setFundstelleVorgangManagerName(Optional.empty()); setProperties(props); assertThrows(AdapterConfigurationException.class, () -> resolver.getFundstelleChannelName()); @@ -101,7 +100,7 @@ class PlutoServerResolverTest { @Test void shouldThrowException() { - setProperties(PlutoListPropertiesTestFactory.createForMultiRouting()); + setProperties(VorgangManagerListPropertiesTestFactory.createForMultiRouting()); assertThrows(UnknownOrganisationseinheitException.class, () -> resolver.getFundstelleChannelName()); } @@ -113,30 +112,30 @@ class PlutoServerResolverTest { @Test void shouldUseSingleName() { - setProperties(PlutoListPropertiesTestFactory.createForSingleRouting()); + setProperties(VorgangManagerListPropertiesTestFactory.createForSingleRouting()); var name = resolver.getChannelName(Optional.empty()); - assertThat(name).contains(PlutoListPropertiesTestFactory.CHANNEL_NAME); + assertThat(name).contains(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); } @Test void shouldUseNameFromMap() { - setProperties(PlutoListPropertiesTestFactory.createForMultiRouting()); + setProperties(VorgangManagerListPropertiesTestFactory.createForMultiRouting()); - var name = resolver.getChannelName(Optional.of(PlutoListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); + var name = resolver.getChannelName(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID)); - assertThat(name).contains(PlutoListPropertiesTestFactory.CHANNEL_NAME); + assertThat(name).contains(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); } @Test void shouldGetFundstellenName() { - setProperties(PlutoListPropertiesTestFactory.createWithFundstelle()); + setProperties(VorgangManagerListPropertiesTestFactory.createWithFundstelle()); var name = resolver.getChannelName(Optional.of("4711")); verify(resolver).getFundstelleChannelName(); - assertThat(name).isEqualTo(PlutoListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); + assertThat(name).isEqualTo(VorgangManagerListPropertiesTestFactory.FUNDSTELLE_CHANNEL_NAME); } } @@ -180,7 +179,7 @@ class PlutoServerResolverTest { @BeforeEach void initTest() { - doReturn(PlutoListPropertiesTestFactory.CHANNEL_NAME).when(resolver).getChannelName(any()); + doReturn(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME).when(resolver).getChannelName(any()); doReturn(channel).when(resolver).createChannelByName(any()); } @@ -188,7 +187,7 @@ class PlutoServerResolverTest { void shouldGetChannel() { createStub(); - verify(resolver).createChannelByName(PlutoListPropertiesTestFactory.CHANNEL_NAME); + verify(resolver).createChannelByName(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); } @Test @@ -206,7 +205,7 @@ class PlutoServerResolverTest { } private AbstractStub<?> createStub() { - return resolver.createStub(Optional.of(PlutoListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID), stubFactory, stubClass); + return resolver.createStub(Optional.of(VorgangManagerListPropertiesTestFactory.ORGANISATIONSEINHEIT_ID), stubFactory, stubClass); } } @@ -225,13 +224,13 @@ class PlutoServerResolverTest { @Test void shouldCallTransform() { - resolver.applyStubTransformers(stub, PlutoListPropertiesTestFactory.CHANNEL_NAME); + resolver.applyStubTransformers(stub, VorgangManagerListPropertiesTestFactory.CHANNEL_NAME); - verify(transformer).transform(PlutoListPropertiesTestFactory.CHANNEL_NAME, stub); + verify(transformer).transform(VorgangManagerListPropertiesTestFactory.CHANNEL_NAME, stub); } } - private void setProperties(PlutoListProperties properties) { + private void setProperties(VorgangManagerListProperties properties) { ReflectionTestUtils.setField(resolver, "properties", properties); } } diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTestFactory.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java similarity index 79% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTestFactory.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java index d14887cfb5834e697bfbde38bcf98f0a9f682c73..7710d2c2a474db14b2d18c230fdebe285576fdbb 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/PlutoServerResolverTestFactory.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangManagerServerResolverTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,19 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.CallOptions; import io.grpc.Channel; import io.grpc.ClientCall; import io.grpc.MethodDescriptor; import io.grpc.stub.AbstractStub; -public class PlutoServerResolverTestFactory { +public class VorgangManagerServerResolverTestFactory { public static AbstractStub<?> createAbstractStub() { return VorgangServiceGrpc.newBlockingStub(new TestChannel()); diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java similarity index 69% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteServiceTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java index 27ff53b55afe4f0b741ae774db1bceefc43224a0..7e7add42f20f2291c91b906c0779cd3599d236a8 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangRemoteServiceTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangRemoteServiceTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,13 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.io.InputStream; import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; @@ -45,34 +46,42 @@ import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; -import de.itvsh.kop.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; -import de.itvsh.kop.eingangsadapter.router.VorgangRemoteService.VorgangCreator; -import de.itvsh.ozg.pluto.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileMetaData; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileRequest; -import de.itvsh.ozg.pluto.grpc.binaryFile.GrpcUploadBinaryFileResponse; -import de.itvsh.ozg.pluto.vorgang.GrpcCreateVorgangRequest; -import de.itvsh.ozg.pluto.vorgang.GrpcCreateVorgangResponse; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; -import de.itvsh.ozg.pluto.vorgang.GrpcFinishCreationRequest; -import de.itvsh.ozg.pluto.vorgang.GrpcFinishCreationResponse; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFile; -import de.itvsh.ozg.pluto.vorgang.GrpcIncomingFileGroup; -import de.itvsh.ozg.pluto.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; +import de.ozgcloud.common.binaryfile.GrpcFileUploadUtils.FileSender; +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.router.VorgangRemoteService.VorgangCreator; +import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServiceStub; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileMetaData; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileRequest; +import de.ozgcloud.vorgang.grpc.binaryFile.GrpcUploadBinaryFileResponse; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangRequest; +import de.ozgcloud.vorgang.vorgang.GrpcCreateVorgangResponse; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; +import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationRequest; +import de.ozgcloud.vorgang.vorgang.GrpcFinishCreationResponse; +import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.stub.CallStreamObserver; +import lombok.SneakyThrows; class VorgangRemoteServiceTest { @InjectMocks private VorgangRemoteService remoteService; @Mock - private final VorgangServiceBlockingStub vorgangStub = PlutoServerResolverTestFactory.createVorgangBlockingStub(); + private final VorgangServiceBlockingStub vorgangStub = VorgangManagerServerResolverTestFactory.createVorgangBlockingStub(); @Mock - private final BinaryFileServiceStub binaryFileStub = PlutoServerResolverTestFactory.createBinaryFileStub(); + private final BinaryFileServiceStub binaryFileStub = VorgangManagerServerResolverTestFactory.createBinaryFileStub(); + @Mock + private GrpcEingangMapper eingangMapper; private VorgangCreator vorgangCreator; + private final FormData formData = FormDataTestFactory.create(); private final GrpcEingang eingang = GrpcEingang.newBuilder() .addAttachments(GrpcIncomingFileGroupTestFactory.create()) .addRepresentations(GrpcIncomingFileTestFactory.create()) @@ -82,7 +91,7 @@ class VorgangRemoteServiceTest { @BeforeEach void init() { - vorgangCreator = spy(remoteService.new VorgangCreator(eingang, vorgangStub, binaryFileStub)); + vorgangCreator = spy(remoteService.new VorgangCreator(formData, eingang, vorgangStub, binaryFileStub)); } @Nested @@ -152,10 +161,10 @@ class VorgangRemoteServiceTest { } @Test - void shouldReturnMessage() { + void shouldReturnVorgangId() { var result = createVorgang(); - assertThat(result).isEqualTo(finishResponse.getMessage()); + assertThat(result).isEqualTo(vorgangId); } private String createVorgang() { @@ -175,14 +184,14 @@ class VorgangRemoteServiceTest { void shouldCallUploadIncomingFile() { vorgangCreator.uploadAttachments(); - verify(vorgangCreator).uploadIncomingFile(any(GrpcIncomingFile.class)); + verify(vorgangCreator, times(2)).uploadIncomingFile(any(IncomingFile.class)); } @Test void shouldSetFileId() { var uploadedAttachments = vorgangCreator.uploadAttachments(); - assertThat(uploadedAttachments.get(0).getFilesList().get(0).getId()).isEqualTo(fileId); + assertThat(uploadedAttachments.get(0).getFiles().get(0).getId()).isEqualTo(fileId); } } @@ -198,7 +207,7 @@ class VorgangRemoteServiceTest { void shouldCallUploadIncomingFile() { vorgangCreator.uploadRepresentations(); - verify(vorgangCreator).uploadIncomingFile(any(GrpcIncomingFile.class)); + verify(vorgangCreator).uploadIncomingFile(any(IncomingFile.class)); } @Test @@ -260,19 +269,30 @@ class VorgangRemoteServiceTest { } private GrpcUploadBinaryFileMetaData buildMetaData() { - return vorgangCreator.buildMetaDataRequest(GrpcIncomingFileTestFactory.create()).getMetadata(); + return vorgangCreator.buildMetaDataRequest(IncomingFileTestFactory.create()).getMetadata(); } } @Nested class TestWaitUntilFutureToComplete { + @Mock + private FileSender<GrpcUploadBinaryFileRequest, GrpcUploadBinaryFileResponse> sender; + @Mock private CompletableFuture<GrpcUploadBinaryFileResponse> streamFuture; + @Mock + private InputStream inputStream; + + @BeforeEach + void initSender() { + when(sender.getResultFuture()).thenReturn(streamFuture); + } + @Test void shouldNotThrowException() { - assertDoesNotThrow(() -> vorgangCreator.waitUntilFutureToComplete(streamFuture)); + assertDoesNotThrow(() -> vorgangCreator.waitUntilFutureToComplete(sender, inputStream)); } @ParameterizedTest @@ -281,15 +301,41 @@ class VorgangRemoteServiceTest { throws InterruptedException, ExecutionException, TimeoutException { doThrow(exception).when(streamFuture).get(anyLong(), any(TimeUnit.class)); - assertThrows(TechnicalException.class, () -> vorgangCreator.waitUntilFutureToComplete(streamFuture)); + assertThrows(TechnicalException.class, () -> vorgangCreator.waitUntilFutureToComplete(sender, inputStream)); + } + + @ParameterizedTest + @ValueSource(classes = { InterruptedException.class, ExecutionException.class, TimeoutException.class }) + @SneakyThrows + void shouldCloseFileContentStreamOnException(Class<Exception> exception) { + doThrow(exception).when(streamFuture).get(anyLong(), any(TimeUnit.class)); + + try { + vorgangCreator.waitUntilFutureToComplete(sender, inputStream); + } catch (Exception e) { + // ignored + } + verify(inputStream).close(); + } + + @Test + @SneakyThrows + void shouldCloseFileContent() { + try { + vorgangCreator.waitUntilFutureToComplete(sender, inputStream); + } catch (Exception e) { + // ignored + } + + verify(inputStream).close(); } } @Nested class TestBuildFinishCreationRequest { - private final GrpcIncomingFileGroup attachment = GrpcIncomingFileGroupTestFactory.create(); - private final GrpcIncomingFile representation = GrpcIncomingFileTestFactory.create(); + private final IncomingFileGroup attachment = IncomingFileGroupTestFactory.create(); + private final IncomingFile representation = IncomingFileTestFactory.create(); @BeforeEach void mock() { diff --git a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java similarity index 78% rename from router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangServiceTest.java rename to router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java index 3056945535f319314658570642b9b41e3d36b884..7405693b00b2206bd9a7775260c485a4c30d64c4 100644 --- a/router/src/test/java/de/itvsh/kop/eingangsadapter/router/VorgangServiceTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.router; +package de.ozgcloud.eingang.router; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -34,10 +34,10 @@ import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory; -import de.itvsh.ozg.pluto.vorgang.GrpcEingang; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; +import de.ozgcloud.vorgang.vorgang.GrpcEingang; class VorgangServiceTest { @@ -63,7 +63,7 @@ class VorgangServiceTest { void shouldCallRemoteService() { callCreateVorgangNew(); - verify(remoteService).createVorgang(eingang, Optional.ofNullable(ZustaendigsStelleTestFactory.ORGANISATIONSEINHEIT_ID)); + verify(remoteService).createVorgang(formData, eingang, Optional.ofNullable(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEIT_ID)); } private void callCreateVorgangNew() { diff --git a/run_filereader.sh b/run_filereader.sh new file mode 100755 index 0000000000000000000000000000000000000000..66434cf93b2f315dc64c06e8e45ea2e6f7da98ee --- /dev/null +++ b/run_filereader.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + + +set -x + +TEST_DIR=/tmp/kop-afm-filereader + +rm -R $TEST_DIR +mkdir -p $TEST_DIR +cp -a src/test/resources/intelliform/filereader/example/* $TEST_DIR + + +./mvnw spring-boot:run -Dspring-boot.run.arguments="--ozgcloud.adapter.intelliform.filereader.path=file:$TEST_DIR" diff --git a/run_helm_test.sh b/run_helm_test.sh new file mode 100755 index 0000000000000000000000000000000000000000..185d2abc694ac8ff6644a69bb82fa753dabcd5f2 --- /dev/null +++ b/run_helm_test.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + + +set -e + +helm template ./src/main/helm/ -f src/test/helm-linter-values.yaml +helm lint -f src/test/helm-linter-values.yaml ./src/main/helm/ +cd src/main/helm && helm unittest -f '../../test/helm/*.yaml' . \ No newline at end of file diff --git a/run_local.sh b/run_local.sh new file mode 100755 index 0000000000000000000000000000000000000000..67ca638cb61c2024d3edc7585925f855ee37bc1a --- /dev/null +++ b/run_local.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + + + +./mvnw spring-boot:run -Dspring-boot.run.profiles=local diff --git a/semantik-adapter/pom.xml b/semantik-adapter/pom.xml index 8e70d6c19a7089d0619616ea7e37d4d35caba510..0295000ce5c8b72183a623970437fac48ba17940 100644 --- a/semantik-adapter/pom.xml +++ b/semantik-adapter/pom.xml @@ -1,6 +1,7 @@ +<?xml version="1.0"?> <!-- - Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den Ministerpräsidenten des Landes Schleswig-Holstein Staatskanzlei Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -23,15 +24,13 @@ unter der Lizenz sind dem Lizenztext zu entnehmen. --> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> - <groupId>de.itvsh.kop.eingangsadapter</groupId> - <artifactId>parent</artifactId> - <version>0.25.1</version> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> </parent> <artifactId>semantik-adapter</artifactId> @@ -40,13 +39,24 @@ <dependencies> <!-- own projects --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>router</artifactId> </dependency> + + <!-- Tools --> + <dependency> + <groupId>com.fasterxml.jackson.dataformat</groupId> + <artifactId>jackson-dataformat-xml</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-collections4</artifactId> + </dependency> <!-- test --> <dependency> - <groupId>de.itvsh.kop.eingangsadapter</groupId> + <groupId>de.ozgcloud.eingang</groupId> <artifactId>common</artifactId> <type>test-jar</type> <scope>test</scope> @@ -83,4 +93,4 @@ </plugin> </plugins> </build> -</project> \ No newline at end of file +</project> diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java deleted file mode 100644 index 02e1acfe3ed0bd2efc5b37405bcdb572abd06de8..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AbstractFileMapper.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; - -//TODO Vererbung ausbauen und durch Utils ersetzen -public abstract class AbstractFileMapper implements EngineBasedMapper { - public static final String ATTACHMENTS = "parsedAttachments"; - public static final String REPRESENTATIONS = "parsedRepresentations"; - public static final String FIELD_NAME_MAPPED_FILES = "mappedFiles"; - - @Override - public FormData parseFormData(FormData formData) { - var processed = processFiles(formData); - - return removeProcessedData(processed); - } - - protected FormData processFiles(FormData formData) { - var builder = formData.toBuilder(); - Optional.ofNullable(getMappedFiles(formData)).ifPresent(files -> { - addAttachments(builder, formData); - addRepresentations(builder, formData); - }); - - return builder.build(); - } - - @SuppressWarnings("unchecked") - protected FormData.FormDataBuilder addAttachments(FormData.FormDataBuilder builder, FormData formData) { - Optional.ofNullable((List<IncomingFileGroup>) getMappedFiles(formData).get(ATTACHMENTS)) - .ifPresent(attachments -> builder - .attachments(attachments) - .numberOfAttachments(getSizeOfAttachments(attachments))); - - return builder; - } - - private int getSizeOfAttachments(List<IncomingFileGroup> attachments) { - return attachments.stream().flatMap(attachmentGroup -> attachmentGroup.getFiles().stream()).toList().size(); - } - - @SuppressWarnings("unchecked") - protected FormData.FormDataBuilder addRepresentations(FormData.FormDataBuilder builder, FormData formData) { - Optional.ofNullable((List<IncomingFile>) getMappedFiles(formData).get(REPRESENTATIONS)) - .ifPresent(representations -> builder.representations(representations).numberOfRepresentations(representations.size())); - - return builder; - } - - protected Map<String, Object> getMappedFiles(FormData formData) { - return FormDataUtils.getSubMap(formData, FIELD_NAME_MAPPED_FILES); - } - - protected FormData removeProcessedData(FormData formData) { - return FormDataUtils.from(formData).remove(FIELD_NAME_MAPPED_FILES).build(); - - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapper.java deleted file mode 100644 index b3b2ca8063a167058f29bd1be4000019f1f9d531..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapper.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import java.util.HashMap; -import java.util.Map; - -import org.springframework.stereotype.Component; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader; - -@Component -class AfmHeaderMapper implements AfmEngineBasedMapper { - - static final String AFM_FORMENGINE_NAME = "AFM"; - - static final String HEADER_FIELD = "header"; - - static final String ID = "t:id"; - static final String TIMESTAMP = "t:timestamp"; - static final String FORM_ID = "t:form-id"; - static final String FORM = "t:form"; - static final String SENDER = "t:sender"; - - @Override - public FormData parseFormData(FormData formData) { - var header = buildHeader(formData); - var processed = formData.toBuilder().header(header).build(); - - return removeMappedData(processed); - } - - private FormHeader buildHeader(FormData formData) { - var headerDataMap = getHeaderMap(formData); - - return FormHeader.builder() - .requestId((String) headerDataMap.get(ID)) - .createdAt(ZonedDateTime.parse((String) headerDataMap.get(TIMESTAMP), DateTimeFormatter.ISO_OFFSET_DATE_TIME)) - .formId((String) headerDataMap.get(FORM_ID)) - .formName((String) headerDataMap.get(FORM)) - .sender((String) headerDataMap.get(SENDER)) - .formEngineName(AFM_FORMENGINE_NAME) - .build(); - } - - FormData removeMappedData(FormData formData) { - var data = new HashMap<>(formData.getFormData()); - data.remove(HEADER_FIELD); - return formData.toBuilder().formData(data).build(); - } - - @SuppressWarnings("unchecked") - private Map<String, Object> getHeaderMap(FormData formData) { - return (Map<String, Object>) formData.getFormData().get(HEADER_FIELD); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java deleted file mode 100644 index 5aea6ce1d47d063f9a596ec96ecb41754b6b81a1..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapper.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.springframework.stereotype.Component; - -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; - -@Component -public class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBasedMapper { - - public static final String ANTRAGSTELLER_PANEL_IDENTIFIER = "Antragstellende Person"; - - public static final String POSTKORBHANDLE = "postkorbhandle"; - - public static final String VORNAME_KEY = "AS_Vorname"; - public static final String NACHNAME_KEY = "AS_Name"; - - @Override - public FormData parseFormData(FormData formData) { - return FormDataUtils.from(formData) - .remove(POSTKORBHANDLE) - .builder() - .antragsteller(buildAntragsteller(formData)) - .build(); - } - - Antragsteller buildAntragsteller(FormData formData) { - var antragstellerData = findAntragstellerData(formData.getFormData()); - - return Antragsteller.builder() - .postfachId(getPostkorbhandle(formData)) - .vorname(getVorname(antragstellerData)) - .nachname(getNachname(antragstellerData)) - .build(); - } - - private String getVorname(Map<String, String> antragstellerData) { - return Optional.ofNullable(antragstellerData.get(VORNAME_KEY)).orElse(null); - } - - private String getNachname(Map<String, String> antragstellerData) { - return Optional.ofNullable(antragstellerData.get(NACHNAME_KEY)).orElse(null); - } - - private String getPostkorbhandle(FormData formData) { - return (String) formData.getFormData().get(POSTKORBHANDLE); - } - - private Map<String, String> findAntragstellerData(Map<String, Object> formData) { - var names = new HashMap<String, String>(); - addContent(getAssistantPanels(formData), names); - return names; - } - - private void addContent(List<Map<String, Object>> panels, Map<String, String> names) { - panels.stream().forEach(entry -> handleContentEntry(entry, names)); - } - - private void handleContentEntry(Map<String, Object> entry, Map<String, String> names) { - if (entry.containsKey(COMPONENTS)) { - addContent(getComponentList(entry), names); - } else if (entry.containsKey(STRING_VALUE)) { - names.put((String) entry.get(IDENTIFIER), (String) entry.get(STRING_VALUE)); - } - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getComponentList(Map<String, Object> entry) { - return (List<Map<String, Object>>) entry.get(COMPONENTS); - } - - @SuppressWarnings("unchecked") - private List<Map<String, Object>> getAssistantPanels(Map<String, Object> formData) { - return ((List<Map<String, Object>>) ((Map<String, Object>) formData.get(ASSISTANT)).get(PANELS)); - } - -} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapper.java deleted file mode 100644 index a6e99bef7707bf6854ad0cdaeaea13839b29c080..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapper.java +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.URLConnection; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.UUID; -import java.util.zip.ZipEntry; -import java.util.zip.ZipException; -import java.util.zip.ZipInputStream; - -import org.springframework.stereotype.Component; -import org.springframework.util.MimeTypeUtils; - -import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import lombok.extern.log4j.Log4j2; - -@Component -@Log4j2 -class FormSolutionsFilesMapper extends AbstractFileMapper implements FormSolutionsEngineBasedMapper { - - public static final String EXTRAHIERTE_ATTACHMENTS = "Extrahierte Attachments"; - - @Override - @SuppressWarnings("unchecked") - protected FormData.FormDataBuilder addAttachments(FormData.FormDataBuilder builder, FormData formData) { - Optional.ofNullable((List<IncomingFileGroup>) getMappedFiles(formData).get(ATTACHMENTS)) - .ifPresent(attachments -> { - var files = collectZipContent(attachments); - builder.attachments(files).numberOfAttachments(getAttachmentCount(files)); - }); - return builder; - } - - List<IncomingFileGroup> collectZipContent(List<IncomingFileGroup> attachmentZip) { - if (attachmentZip.isEmpty()) { - return Collections.emptyList(); - } - - return fillIncomingFileGroupList(attachmentZip); - } - - private List<IncomingFileGroup> fillIncomingFileGroupList(List<IncomingFileGroup> attachmentZips) { - byte[] zipFile = attachmentZips.get(0).getFiles().get(0).getContent(); - return processZipContent(attachmentZips, zipFile); - } - - private List<IncomingFileGroup> processZipContent(List<IncomingFileGroup> attachmentZips, byte[] zipFile) { - IncomingFileGroup fileGroup = IncomingFileGroup.builder().name(EXTRAHIERTE_ATTACHMENTS).build(); - try (ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(zipFile))) { - addIncomingFile(fileGroup, zipIn); - } catch (ZipException e) { - LOG.info("Unable to extract ZIP file, attaching unextracted file. Cause: {}", e.getMessage()); - fileGroup = attachmentZips.get(0); - } catch (IOException e) { - throw new TechnicalException("Error extracting zip content.", e); - } - return List.of(fileGroup); - } - - private void addIncomingFile(IncomingFileGroup fileGroup, ZipInputStream zipIn) throws IOException { - ZipEntry zipEntry = zipIn.getNextEntry(); - while (Objects.nonNull(zipEntry)) { - fileGroup.getFiles().add(createIncomingFile(zipIn, zipEntry)); - zipEntry = zipIn.getNextEntry(); - } - } - - private IncomingFile createIncomingFile(ZipInputStream zipIn, ZipEntry zipEntry) throws IOException { - return IncomingFile.builder() - .content(readZipEntry(zipIn)) - .name(zipEntry.getName()) - .contentType(getContentType(zipEntry.getName())) - .id(UUID.randomUUID().toString()) - .size(zipEntry.getSize()) - .build(); - } - - byte[] readZipEntry(ZipInputStream zipIn) throws IOException { - byte[] content = new byte[0]; - try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - byte[] buffer = new byte[1024]; - int len; - while ((len = zipIn.read(buffer)) > 0) { - baos.write(buffer, 0, len); - } - content = baos.toByteArray(); - } - - return content; - } - - String getContentType(String name) { - return Objects.requireNonNullElse(URLConnection.guessContentTypeFromName(name), MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); - } - - int getAttachmentCount(List<IncomingFileGroup> fileGroups) { - if (fileGroups.isEmpty()) { - return 0; - } - - return Optional.ofNullable(fileGroups.get(0)).map(fileGroup -> fileGroup.getFiles().size()).orElse(0); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapper.java deleted file mode 100644 index 31558e952f16cbb16f7c2a5dd1f84406dd2de25f..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapper.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.springframework.stereotype.Component; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -@Component -public class FormSolutionsPanelMapper implements FormSolutionsEngineBasedMapper { - public static final String COMPONENTS = "components"; - public static final String STRING_VALUE = "stringValue"; - public static final String PANELS = "panels"; - - static final Predicate<Map<String, Object>> IS_NODE_COMPONENT = component -> Objects.nonNull(component.get(IDENTIFIER)) - && Objects.nonNull(component.get(STRING_VALUE)); - static final Predicate<Map<String, Object>> HAS_CONTENT = component -> Objects.nonNull(component.get(COMPONENTS)) - || Objects.nonNull(component.get(STRING_VALUE)); - - @Override - public FormData parseFormData(FormData formData) { - var res = mapPanels(getPanels(formData)); - // TODO was passiert hier? Sieht nach dem join von zwei maps aus nur irre - // komilziert - Map<String, Object> combinedMap = Stream.concat(res.entrySet().stream(), formData.getFormData().entrySet().stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - - return formData.toBuilder().formData(combinedMap).build(); - } - - Map<String, Object> mapPanels(List<Map<String, Object>> panels) { - return panels.stream().collect(Collectors.toMap(panel -> (String) panel.get(IDENTIFIER), panel -> mapComponents(panel.get(COMPONENTS)))); - } - - @SuppressWarnings("unchecked") - Map<String, Object> mapComponents(Object components) { - if (components instanceof List) { - return ((List<Map<String, Object>>) components).stream().filter(HAS_CONTENT) - .collect(Collectors.toMap(component -> (String) component.get(IDENTIFIER), - this::mapComponent)); - } - - return new HashMap<>(); - } - - Object mapComponent(Map<String, Object> component) { - if (IS_NODE_COMPONENT.test(component)) { - return component.get(STRING_VALUE); - } - - return mapComponents(component.get(COMPONENTS)); - } - - @SuppressWarnings("unchecked") - List<Map<String, Object>> getPanels(FormData formData) { - return (List<Map<String, Object>>) ((Map<String, Object>) formData.getFormData().get(ASSISTANT)).get(PANELS); - } - -} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java similarity index 70% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java index 0cdf2991d73c8a57ab8eb3a92db137acfbfea029..417af9fe228e33bdbfc8f3e184a7c61b2c44cfc5 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,20 +21,22 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik; +package de.ozgcloud.eingang.semantik; + +import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.router.VorgangService; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter; -import de.itvsh.kop.eingangsadapter.semantik.formbased.FormBasedSemantikAdapter; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.router.VorgangService; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.formbased.FormBasedSemantikAdapter; @Service public class SemantikAdapter { - @Autowired + @Autowired(required = false) private EngineBasedSemantikAdapter engineBasedAdapter; @Autowired private FormBasedSemantikAdapter formBasedAdapter; @@ -42,15 +44,18 @@ public class SemantikAdapter { @Autowired private VorgangService vorgangService; - public void processFormData(FormData formData) { + public String processFormData(FormData formData) { formData = parseByEngineAdapter(formData); formData = parseByFormAdapter(formData); - vorgangService.createVorgang(formData); + return vorgangService.createVorgang(formData); } private FormData parseByEngineAdapter(FormData formData) { - return engineBasedAdapter.parseFormData(formData); + if (Objects.nonNull(engineBasedAdapter)) { + return engineBasedAdapter.parseFormData(formData); + } + return formData; } private FormData parseByFormAdapter(FormData formData) { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java new file mode 100644 index 0000000000000000000000000000000000000000..414528c394827d5587c9e408754afe30cae0e1e5 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ReadZipException.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.common; + +public class ReadZipException extends RuntimeException { + + public ReadZipException(String message) { + super(message); + } + + public ReadZipException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java new file mode 100644 index 0000000000000000000000000000000000000000..75c1404fb8283cb0c4815b9c105f4f00b8441953 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReader.java @@ -0,0 +1,242 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.common; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLConnection; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +import org.springframework.util.MimeTypeUtils; + +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.DeleteOnCloseInputStream; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import lombok.Getter; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +public class ZipAttachmentReader { + + public static final String TMP_FILE_SUFFIX = ".ozg-cloud.tmp"; + public static final String SOURCE_ZIP_PREFIX = "zip-attachment"; + static final String TARGET_ATTACHMENT_PREFIX = "ozg_fs_attachment_"; + + private static final double ZIP_MAX_THRESHOLD = 100; + private static final int ZIP_MAX_TOTAL_SIZE = 500 * 1024 * 1024; + private static final int ZIP_MAX_ENTRIES = 100; + + private final File sourceZipFile; + @Getter + private final String sourceFileName; + + ZipAttachmentReader() { + this.sourceZipFile = null; + this.sourceFileName = null; + } + + private ZipAttachmentReader(InputStream sourceZipInputStream, String originalFileName) { + try { + this.sourceZipFile = saveSourceZipToFile(sourceZipInputStream, SOURCE_ZIP_PREFIX); + sourceZipInputStream.close(); + } catch (IOException e) { + throw new TechnicalException("Can not save original ZIP.", e); + } + this.sourceFileName = originalFileName; + } + + private ZipAttachmentReader(File sourceZipInputFile, String originalFileName) { + this.sourceZipFile = sourceZipInputFile; + this.sourceFileName = originalFileName; + } + + public static ZipAttachmentReader from(InputStream sourceZipInputStream, String originalFileName) { + return new ZipAttachmentReader(sourceZipInputStream, originalFileName); + } + + public static ZipAttachmentReader from(File sourceZipInputFile, String originalFileName) { + return new ZipAttachmentReader(sourceZipInputFile, originalFileName); + } + + protected static File saveSourceZipToFile(InputStream inputStream, String namePrefix) { + try { + File tempFile = File.createTempFile(namePrefix, TMP_FILE_SUFFIX); + Files.copy(inputStream, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + tempFile.deleteOnExit(); + return tempFile; + } catch (IOException e) { + throw new ReadZipException("Cannot save source ZIP file to local storage. Processing interrupted.", e); + } + } + + public List<IncomingFile> readContent() throws ReadZipException { + try (ZipInputStream sourceZipInputStream = new ZipInputStream(new FileInputStream(sourceZipFile))) { + return readContent(sourceZipInputStream); + } catch (IOException e) { + throw new ReadZipException("Cannot save file contained in ZIP. Processing interrupted.", e); + } + } + + public void deleteSourceFile() { + try { + Files.delete(sourceZipFile.toPath()); + } catch (IOException e) { + LOG.error("Error deleting source ZIP file.", e); + } + } + + List<IncomingFile> readContent(ZipInputStream sourceZipInputStream) throws IOException, ReadZipException { + ZipEntry nextEntry = entryExists(sourceZipInputStream.getNextEntry()); + List<IncomingFile> extractedFiles = new ArrayList<>(); + + AtomicInteger totalExtractedSize = new AtomicInteger(); + int totalZipEntries = 0; + + while (Objects.nonNull(nextEntry)) { + + final ZipEntry currentEntry = nextEntry; + + Optional.of(currentEntry) + .filter(entry -> !entry.isDirectory()) + .map(entry -> createLocalTempFile()) + .map(localFile -> { + int size = saveZipFileToLocalFile(currentEntry, sourceZipInputStream, localFile); + extractedFiles.add(createContentEntry(localFile, currentEntry)); + return size; + }) + .ifPresent(totalExtractedSize::addAndGet); + + totalZipEntries++; + checkTotalExtractedSize(totalExtractedSize.get()); + checkTotalZipEntries(totalZipEntries); + + nextEntry = sourceZipInputStream.getNextEntry(); + } + + return extractedFiles; + } + + File createLocalTempFile() { + try { + File localFile = File.createTempFile(TARGET_ATTACHMENT_PREFIX, TMP_FILE_SUFFIX); + localFile.deleteOnExit(); + return localFile; + } catch (IOException e) { + throw new ReadZipException("Could not create tmp file", e); + } + } + + void checkTotalExtractedSize(Integer totalExtractedSize) { + if (totalExtractedSize > ZIP_MAX_TOTAL_SIZE) { + throw new ReadZipException("Total size of uncompressed zip file is to high (" + totalExtractedSize + "> " + ZIP_MAX_TOTAL_SIZE + ")"); + } + } + + private void checkTotalZipEntries(Integer totalZipEntries) { + if (totalZipEntries > ZIP_MAX_ENTRIES) { + throw new ReadZipException("Total entries in zip file exceeded (" + totalZipEntries + "> " + ZIP_MAX_ENTRIES + ")"); + } + } + + private ZipEntry entryExists(ZipEntry entry) { + if (Objects.isNull(entry)) { + throw new ReadZipException("Zip archive either invalid or empty."); + } + return entry; + } + + int saveZipFileToLocalFile(ZipEntry zipEntry, InputStream inputStream, File localFile) { + try { + + try (FileOutputStream out = new FileOutputStream(localFile)) { + int totalSizeEntry = 0; + + int readBytes = -1; + byte[] buffer = new byte[2048]; + while ((readBytes = inputStream.read(buffer)) > 0) { // Compliant + out.write(buffer, 0, readBytes); + totalSizeEntry += readBytes; + + double compressionRatio = (double) totalSizeEntry / zipEntry.getCompressedSize(); + if (compressionRatio > ZIP_MAX_THRESHOLD) { + throw new ReadZipException( + "Ratio between compressed and uncompressed data is highly suspicious (" + compressionRatio + + "), looks like a Zip Bomb Attack"); + } + } + + return totalSizeEntry; + } + } catch (IOException e) { + throw new ReadZipException("Cannot save file contained in ZIP. Processing interrupted.", e); + } + } + + IncomingFile createContentEntry(File file, ZipEntry zipEntry) { + return IncomingFile.builder() + .name(zipEntry.getName()) + .size(zipEntry.getSize()) + .contentType(getContentType(zipEntry.getName())) + .file(file) + .build(); + } + + @Deprecated + public InputStream getSourceZipAsStream() { + try { + return new DeleteOnCloseInputStream(sourceZipFile); + } catch (FileNotFoundException e) { + throw new TechnicalException("Original ZIP was deleted", e); + } + } + + public File getSourceZip() { + return sourceZipFile; + } + + public long getSourceFileSize() { + try { + return Files.size(sourceZipFile.toPath()); + } catch (IOException e) { + throw new TechnicalException("Cannot get size of source ZIP.", e); + } + } + + String getContentType(String name) { + Objects.requireNonNull(name); + return Objects.requireNonNullElse(URLConnection.guessContentTypeFromName(name), MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java similarity index 81% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java index 2b33205c216fc69ae0edfbe107c9dbd3c9f6bae2..814568b9d4508b0cae7a2adaa7419ba7e88177cc 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; -interface EngineBasedMapper { +public interface EngineBasedMapper { FormData parseFormData(FormData formData); -} \ No newline at end of file +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java similarity index 84% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedSemantikAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java index 9d68792ba07436c3808072e36be01307c0337683..66d3539659c0689c29fb800a70365cc925922112 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/EngineBasedSemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/EngineBasedSemantikAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; public interface EngineBasedSemantikAdapter { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..0c246bba2450df865e75a9960bb0d722576c2908 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelper.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class FilesMapperHelper { + + public static final String REPRESENTATIONS = "parsedRepresentations"; + public static final String FIELD_NAME_MAPPED_FILES = "mappedFiles"; + public static final String ATTACHMENTS = "parsedAttachments"; + + public static Optional<Map<String, Object>> getMappedFiles(FormData formData) { + return Optional.ofNullable(formData).map(FormData::getFormData).map(map -> (Map<String, Object>) map.get(FIELD_NAME_MAPPED_FILES)); + } + + public static Optional<List<IncomingFileGroup>> getAttachedFileGroups(FormData formData) { + return getMappedFiles(formData).map(mappedFiles -> (List<IncomingFileGroup>) mappedFiles.get(ATTACHMENTS)); + } + + public static Optional<List<IncomingFile>> getRepresentations(FormData formData) { + return getMappedFiles(formData).map(mappedFiles -> (List<IncomingFile>) mappedFiles.get(REPRESENTATIONS)); + } + + public static int countAttachedFiles(Collection<IncomingFileGroup> fileGroups) { + return fileGroups.stream().filter(Objects::nonNull).mapToInt(group -> group.getFiles().size()).sum(); + } + + public static FormData removeProcessedData(FormData formData) { + return FormDataUtils.from(formData).remove(FIELD_NAME_MAPPED_FILES).build(); + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..d7489764bbc6e2f378a1f85876efbc36d45eccbb --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java @@ -0,0 +1,127 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; + +@Component +public class ServiceKontoBuildHelper { + + public static final int POSTFACH_ADDRESS_DEFAULT = 1; + public static final String POSTFACH_TYPE_OSI = "OSI"; + public static final String POSTFACH_TYPE_BAYERN_ID = "BayernID"; + public static final String POSTFACH_VERSION = "1.0"; + + public static final String REST_RESPONSE_NAME = "rest_response_name"; + public static final String REST_RESPONSE_NAME_MEMBER_SCOPE = "memberscope"; + public static final String REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE = "mailboxtype"; + + public ServiceKonto buildOsiServiceKonto(String postfachId) { + return buildDefault(postfachId); + } + + public ServiceKonto buildOsiServiceKonto(String postfachId, FormData formData) { + return Optional.ofNullable(getRestResponseNames(formData)) + .filter(names -> !names.isEmpty()) + .map(restResponseNames -> buildWithRestResponseNames(postfachId, restResponseNames)) + .orElseGet(() -> buildDefault(postfachId)); + } + + ServiceKonto buildDefault(String postfachId) { + return ServiceKonto.builder().type(POSTFACH_TYPE_OSI).postfachAddress(buildPostfachAddress(postfachId)).build(); + } + + @SuppressWarnings("unchecked") + private List<Map<String, Object>> getRestResponseNames(FormData formData) { + return Optional.ofNullable(formData.getFormData().get(REST_RESPONSE_NAME)) + .filter(Objects::nonNull) + .map(List.class::cast) + .orElse(Collections.emptyList()); + } + + ServiceKonto buildWithRestResponseNames(String postfachId, List<Map<String, Object>> restResponseNames) { + return ServiceKonto.builder() + .type(POSTFACH_TYPE_OSI) + .postfachAddresses(buildPostfachAddresses(buildIdentifier(postfachId), restResponseNames)) + .build(); + } + + List<PostfachAddress> buildPostfachAddresses(PostfachAddressIdentifier identifier, List<Map<String, Object>> restResponseNames) { + return restResponseNames.stream().map(entry -> buildOsiPostfachV1Address(identifier, entry)).toList(); + } + + PostfachAddress buildOsiPostfachV1Address(PostfachAddressIdentifier identifier, Map<String, Object> restResponseName) { + return buildOsiPostfachV1Address(identifier, getPostfachAddressType(restResponseName)); + } + + PostfachAddress buildOsiPostfachV1Address(PostfachAddressIdentifier identifier, int postfachAddressType) { + return PostfachAddress.builder() + .type(postfachAddressType) + .version(POSTFACH_VERSION) + .identifier(identifier) + .build(); + } + + int getPostfachAddressType(Map<String, Object> restResponseName) { + return getMailboxType(restResponseName); + } + + private Integer getMailboxType(Map<String, Object> restResponseName) { + return (Integer) getMemberScope(restResponseName).get(REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE); + } + + @SuppressWarnings("unchecked") + private Map<String, Object> getMemberScope(Map<String, Object> restResponseName) { + return ((List<Map<String, Object>>) restResponseName.get(REST_RESPONSE_NAME_MEMBER_SCOPE)).get(0); + } + + public ServiceKonto buildBayernIdServiceKonto(String postfachId) { + return ServiceKonto.builder().type(POSTFACH_TYPE_BAYERN_ID).postfachAddress(buildPostfachAddress(postfachId)).build(); + } + + PostfachAddress buildPostfachAddress(String postkorbHandle) { + return PostfachAddress.builder() + .type(POSTFACH_ADDRESS_DEFAULT) + .version(POSTFACH_VERSION) + .identifier(buildIdentifier(postkorbHandle)) + .build(); + } + + private PostfachAddressIdentifier buildIdentifier(String postfachId) { + return StringBasedIdentifier.builder().postfachId(postfachId).build(); + } + +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..ad1faf59d28f7d80e32a3b4ff4ecf46610ef83ef --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static java.util.Objects.*; +import static org.apache.commons.lang3.StringUtils.*; + +import java.util.Collections; +import java.util.Map; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +public class AfmAntragstellerHeaderMapper { + + static final String KEY_POSTFACH_ID = "u:saml_legacypostkorbhandle"; + static final String KEY_VORNAME = "u:saml_givenname"; + static final String KEY_NACHNAME = "u:saml_surname"; + static final String KEY_GEBURTSORT = "u:saml_placeofbirth"; + public static final String KEY_GEBURTSNAME = "u:saml_birthname"; + static final String KEY_EMAIL = "u:saml_mail"; + static final String KEY_TELEFON = "u:saml_telephonenumber"; + static final String KEY_STRASSE = "u:saml_postaladdress"; + static final String KEY_PLZ = "u:saml_postalcode"; + static final String KEY_ORT = "u:saml_localityname"; + + public FormData parseAntragstellerData(FormData formData) { + return formData.toBuilder().antragsteller(buildAntragsteller(getHeaders(formData))).build(); + } + + Antragsteller buildAntragsteller(Map<String, Object> headers) { + return Antragsteller.builder() + .postfachId((String) headers.get(KEY_POSTFACH_ID)) + .vorname((String) headers.get(KEY_VORNAME)) + .nachname((String) headers.get(KEY_NACHNAME)) + .geburtsname((String) headers.get(KEY_GEBURTSNAME)) + .geburtsort((String) headers.get(KEY_GEBURTSORT)) + .email((String) headers.get(KEY_EMAIL)) + .telefon((String) headers.get(KEY_TELEFON)) + .strasse((String) headers.get(KEY_STRASSE)) + .plz((String) headers.get(KEY_PLZ)) + .ort((String) headers.get(KEY_ORT)) + .build(); + } + + public boolean isResponsible(FormData formData) { + var headers = getHeaders(formData); + return headers.containsKey(KEY_POSTFACH_ID) && isPostfachIdNotBlank(headers.get(KEY_POSTFACH_ID)); + } + + @SuppressWarnings("unchecked") + Map<String, Object> getHeaders(FormData formData) { + return (Map<String, Object>) formData.getFormData().getOrDefault(AfmHeaderMapper.HEADER_FIELD, Collections.emptyMap()); + } + + boolean isPostfachIdNotBlank(Object postfachId) { + if (isNull(postfachId)) { + return false; + } + if (postfachId instanceof String id) { + return isNotBlank(id); + } + throw new TechnicalException("Unexpected type of postfach id: " + postfachId.getClass().getName()); + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java similarity index 74% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java index 03a65a1671c90117d7b3a0d31ab1bc89b7b0ea74..1a72ccfee21d5a7d60ff84357814e4562e08a2cd 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,18 +21,21 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static java.util.Objects.*; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; @Component class AfmAntragstellerMapper implements AfmEngineBasedMapper { @@ -40,7 +43,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { static final String POSTFACH_ID = "nameid"; static final String ANTRAGSTELLER = "antragsteller"; - + static final String ANTRAGSTELLER_UPPERCASE = "Antragsteller"; static final String ANREDE = "b_anrede"; static final String VORNAME = "pers_vorname"; static final String NACHNAME = "pers_nachname"; @@ -54,18 +57,24 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { static final String PLZ = "sh_plz"; static final String ORT = "ort"; + @Autowired + private AfmAntragstellerHeaderMapper antragstellerHeaderMapper; + @Override public FormData parseFormData(FormData formData) { + if (antragstellerHeaderMapper.isResponsible(formData)) { + return antragstellerHeaderMapper.parseAntragstellerData(formData); + } var formDataMap = formData.getFormData(); var builder = Antragsteller.builder().postfachId(getPostfachId(formDataMap)); - var filledBuilder = getAntragstellerMap(formDataMap) + var antragsteller = getAntragstellerMap(formDataMap) .map(antragstellerMap -> addAntragstellerData(builder, antragstellerMap)) - .orElse(builder); + .orElse(builder) + .build(); var cleanedMap = removeMappedData(formDataMap); - var antragsterller = filledBuilder.build(); - return formData.toBuilder().antragsteller(antragsterller).formData(cleanedMap).build(); + return formData.toBuilder().antragsteller(antragsteller).formData(cleanedMap).build(); } private String getPostfachId(Map<String, Object> formDataMap) { @@ -74,7 +83,9 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { @SuppressWarnings("unchecked") private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) { - return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER)).map(Map.class::cast).map(HashMap::new); + return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER)) + .or(() -> Optional.ofNullable(formDataMap.get(ANTRAGSTELLER_UPPERCASE))) + .map(Map.class::cast).map(LinkedHashMap::new); } private Antragsteller.AntragstellerBuilder addAntragstellerData(Antragsteller.AntragstellerBuilder builder, @@ -96,7 +107,7 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { } private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap) { - var map = new HashMap<>(antragstellerMap); + var map = new LinkedHashMap<>(antragstellerMap); getFields().forEach(map::remove); return map; } @@ -106,9 +117,12 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { } private Map<String, Object> removeMappedData(Map<String, Object> formDataMap) { - var editableMap = new HashMap<>(formDataMap); - editableMap.remove(ANTRAGSTELLER); - editableMap.remove(POSTFACH_ID); + var editableMap = new LinkedHashMap<>(formDataMap); + if (nonNull(editableMap.get(ANTRAGSTELLER))) { + editableMap.remove(ANTRAGSTELLER); + } else { + editableMap.remove(ANTRAGSTELLER_UPPERCASE); + } return Collections.unmodifiableMap(editableMap); } } \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..0995f70fa484a24a683ad14ec8661e71488eeff4 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapper.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; + +@Component +class AfmAttachedFilesMapper implements AfmEngineBasedMapper { + + @Override + public FormData parseFormData(FormData formData) { + var formDataBuilder = formData.toBuilder(); + FilesMapperHelper.getAttachedFileGroups(formData) + .ifPresent(fileGroups -> formDataBuilder + .attachments(fileGroups) + .numberOfAttachments(FilesMapperHelper.countAttachedFiles(fileGroups))); + FilesMapperHelper.getRepresentations(formData) + .ifPresent(representations -> formDataBuilder.representations(representations).numberOfRepresentations(representations.size())); + + return FilesMapperHelper.removeProcessedData(formDataBuilder.build()); + } + +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java similarity index 86% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java index b73bef006549f4b004b5052d403fa2a28b8cd373..9388342f70ef179f4d34b7d1ac0172cf4f4933d5 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; @Component class AfmEmpfangeneStelleMapper implements AfmEngineBasedMapper { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..05aaa0ab82fb67babeff52d2a7887ce8ac2655b0 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapter.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; + +public class AfmEngineBasedAdapter implements EngineBasedSemantikAdapter { + + @Autowired + private List<AfmEngineBasedMapper> mappers; + + @Override + public FormData parseFormData(FormData formData) { + var processedFormData = formData; + + for (var mapper : mappers) { + processedFormData = mapper.parseFormData(processedFormData); + } + + return removeProcessedData(processedFormData); + } + + FormData removeProcessedData(FormData formData) { + return FormDataUtils.from(formData) + .remove(AfmAntragstellerMapper.POSTFACH_ID) + .build(); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java similarity index 74% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java index 0abe93109e8a751d3e16e755561113f780134095..f53df1179227e9054cc5863dd3ddad6f25e51a25 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,27 +21,28 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Optional; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; interface AfmEngineBasedMapper extends EngineBasedMapper { - static final String KOP_CONTROLDATA_NODENAME = "_kopControlData"; - static final String CONTROLDATA_METADATA_PROPERTYNAME = "metaData"; + String KOP_CONTROLDATA_NODENAME = "_kopControlData"; + String CONTROLDATA_METADATA_PROPERTYNAME = "metaData"; default FormData addControlNode(FormData formData, String nodeName) { - var editableFormMap = new HashMap<>(formData.getFormData()); + var editableFormMap = new LinkedHashMap<>(formData.getFormData()); return Optional.ofNullable(getFormNode(formData, nodeName)) - .map(HashMap::new) + .map(LinkedHashMap::new) .map(empfStelleMap -> { - empfStelleMap.put(KOP_CONTROLDATA_NODENAME, this.buildControlDataMap()); + empfStelleMap.put(KOP_CONTROLDATA_NODENAME, buildControlDataMap()); editableFormMap.put(nodeName, empfStelleMap); return editableFormMap; }) @@ -56,7 +57,7 @@ interface AfmEngineBasedMapper extends EngineBasedMapper { } default Map<String, Object> buildControlDataMap() { - var controlMap = new HashMap<String, Object>(); + Map<String, Object> controlMap = new LinkedHashMap<>(); controlMap.put(CONTROLDATA_METADATA_PROPERTYNAME, "true"); return controlMap; } diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java similarity index 86% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java index 74554a4b205ffe8c5494e790330a4f963c50d26a..21dae1b35af1e79ebac6422dee90a88290818d14 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; @Component class AfmErklaerungenMapper implements AfmEngineBasedMapper { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..c15397b6f280d76910d5753d2f1939c91e73d7a3 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Map; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; + +@Component +class AfmHeaderMapper implements AfmEngineBasedMapper { + + static final String AFM_FORMENGINE_NAME = "AFM"; + + static final String POSTFACH_NAME_ID = "nameid"; + + static final String HEADER_FIELD = "header"; + + static final String ID = "t:id"; + static final String TIMESTAMP = "t:timestamp"; + static final String FORM_ID = "t:form-id"; + static final String FORM = "t:form"; + static final String SENDER = "t:sender"; + + @Autowired + private ServiceKontoBuildHelper serviceKontoBuildHelper; + + @Override + public FormData parseFormData(FormData formData) { + var processed = formData.toBuilder().header(buildHeader(formData)).build(); + + return removeMappedData(processed); + } + + private FormHeader buildHeader(FormData formData) { + var headerDataMap = getHeaderMap(formData); + + var formHeaderBuilder = FormHeader.builder() + .requestId((String) headerDataMap.get(ID)) + .createdAt(getCreatedAt(headerDataMap)) + .formId((String) headerDataMap.get(FORM_ID)) + .formName((String) headerDataMap.get(FORM)) + .sender((String) headerDataMap.get(SENDER)) + .formEngineName(AFM_FORMENGINE_NAME) + .build(); + + createBayernIdServiceKonto(formData).or(() -> createOsiServiceKonto(formData)).ifPresent(formHeaderBuilder::setServiceKonto); + + return formHeaderBuilder; + } + + private ZonedDateTime getCreatedAt(Map<String, Object> headerDataMap) { + return ZonedDateTime.parse((String) headerDataMap.get(TIMESTAMP), DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + + Optional<ServiceKonto> createBayernIdServiceKonto(FormData formData) { + var postfachId1 = getPostfachId(formData); + return postfachId1.map(postfachId -> serviceKontoBuildHelper.buildBayernIdServiceKonto(postfachId)); + } + + Optional<String> getPostfachId(FormData formData) { + return Optional.ofNullable(getHeaderMap(formData)).map(headers -> headers.get(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID)) + .map(String.class::cast); + } + + @SuppressWarnings("unchecked") + Map<String, Object> getHeaderMap(FormData formData) { + return (Map<String, Object>) formData.getFormData().get(HEADER_FIELD); + } + + Optional<ServiceKonto> createOsiServiceKonto(FormData formData) { + return getNameId(formData).map(nameId -> serviceKontoBuildHelper.buildOsiServiceKonto(nameId, formData)); + } + + private Optional<String> getNameId(FormData formData) { + return Optional.of(formData.getFormData()).map(formDataMap -> formDataMap.get(POSTFACH_NAME_ID)).map(String.class::cast); + } + + private FormData removeMappedData(FormData formData) { + return FormDataUtils.from(formData) + .remove(ServiceKontoBuildHelper.REST_RESPONSE_NAME) + .build(); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java similarity index 68% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java index 5fb4e396408e50e04d175750a29e07192239547f..45fbe4dc84ad9f2072b96cf98365515ee005efd5 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,30 +21,41 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; @Component class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { - static final String ZUSTAENDIGESTELLE = "zustaendigestelle"; + public static final String ZUSTAENDIGESTELLE = "zustaendigestelle"; - static final String EMAIL = "emailadresse"; - static final String ORGANISATIONSEINHEITEN_ID = "OrganisationseinheitenID"; - static final String TAG_BEZEICHNUNG = "OrganisationseinheitenBEZEICHNUNG"; + public static final String EMAIL = "emailadresse"; + public static final String ORGANISATIONSEINHEITEN_ID = "OrganisationseinheitenID"; + public static final String TAG_BEZEICHNUNG = "OrganisationseinheitenBEZEICHNUNG"; + + @Autowired + private ZustaendigeStelleMetadataMapper zustaendigeStelleMetadataMapper; @Override public FormData parseFormData(FormData formData) { + if (zustaendigeStelleMetadataMapper.isResponsible(formData)) { + return zustaendigeStelleMetadataMapper.parseZustaendigeStelleData(formData); + } + return parseZustaendigeStelleData(formData); + } + + FormData parseZustaendigeStelleData(FormData formData) { var zustaendigeStelleMap = getZustaendigeStelle(formData); var organisationseinheitenID = getOrganisationseinheitenId(formData); var builder = ZustaendigeStelle.builder(); @@ -64,15 +75,15 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { return formData.toBuilder().formData(addMetaDataFlag(formData)).zustaendigeStelle(zustaendigeStelle).build(); } - private String getOrganisationseinheitenId(FormData formData) { + String getOrganisationseinheitenId(FormData formData) { return (String) formData.getFormData().get(ORGANISATIONSEINHEITEN_ID); } Map<String, Object> addMetaDataFlag(FormData formData) { - var editableFormData = new HashMap<>(formData.getFormData()); + var editableFormData = new LinkedHashMap<>(formData.getFormData()); Optional.ofNullable(getZustaendigeStelle(formData)) - .map(HashMap::new) + .map(LinkedHashMap::new) .ifPresent(zustaendigeStelle -> { zustaendigeStelle.put(KOP_CONTROLDATA_NODENAME, buildControlDataMap()); editableFormData.put(ZUSTAENDIGESTELLE, zustaendigeStelle); @@ -82,7 +93,7 @@ class AfmZustaendigeStelleMapper implements AfmEngineBasedMapper { } @SuppressWarnings("unchecked") - private Map<String, Object> getZustaendigeStelle(FormData formData) { + Map<String, Object> getZustaendigeStelle(FormData formData) { return (Map<String, Object>) formData.getFormData().get(ZUSTAENDIGESTELLE); } } \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java new file mode 100644 index 0000000000000000000000000000000000000000..8df1da2f01f6ed479e4e2eca232d5953f24e2d92 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/XmlMapperSupplier.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + +@Component +public class XmlMapperSupplier { + + private final XmlMapper xmlMapper; + + public XmlMapperSupplier() { + xmlMapper = new XmlMapper(); + xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + + public XmlMapper getMapper() { + return xmlMapper; + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java new file mode 100644 index 0000000000000000000000000000000000000000..35a84467c1fc961fed24615c1bc7569ff0f7920b --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleData.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import java.util.List; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.Singular; + +@JacksonXmlRootElement(localName = "data") +@Builder +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class ZustaendigeStelleData { + + @JacksonXmlProperty(localName = "field") + @JacksonXmlElementWrapper(useWrapping = false) + @Singular + private List<Field> fields; + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class Field { + + @JacksonXmlProperty(isAttribute = true) + private String name; + + @JacksonXmlText + private String value; + + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..4321fbcf955918c68a834080471c355e36312503 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapper.java @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static java.util.Objects.*; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import de.ozgcloud.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Component +public class ZustaendigeStelleMetadataMapper { + + static final String BEHOERDE_METADATA_FILE_NAME = "behoerde_metadata.xml"; + + private static final Predicate<IncomingFile> IS_BEHOERDE_METADATA = inFile -> StringUtils.endsWith(inFile.getName(), BEHOERDE_METADATA_FILE_NAME); + + static final String KEY_BEHOERDE_ANZEIGE_NAME = "behoerde_anzeige_name"; + static final String KEY_BEHOERDE_CALLER_ID = "behoerde_caller_id"; + static final String KEY_GEMEINDE_SCHLUESSEL_BP = "gemeinde_schluessel_bp"; + static final String KEY_BEHOERDE_EMAIL = "behoerde_email"; + static final String KEY_AMTLICHER_REGIONALSCHLUESSEL = "amtlicher_regionalschluessel"; + static final String KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE = "behoerde_hausanschrift_strasse"; + static final String KEY_BEHOERDE_HAUSANSCHRIFT_ORT = "behoerde_hausanschrift_ort"; + static final String KEY_BEHOERDE_HAUSANSCHRIFT_PLZ = "behoerde_hausanschrift_plz"; + static final String KEY_BEHOERDE_TELEFON = "behoerde_telefon"; + + @Autowired + private XmlMapperSupplier xmlMapperSupplier; + + public FormData parseZustaendigeStelleData(FormData formData) { + return formData.getRepresentations().stream().filter(IS_BEHOERDE_METADATA).findAny() + .map(this::readZustaendigeStelleMetadata) + .map(this::mapZustaendigeStelle) + .map(zustaendigeStelle -> formData.toBuilder().zustaendigeStelle(zustaendigeStelle).build()) + .orElse(formData); + } + + Map<String, String> readZustaendigeStelleMetadata(IncomingFile metadata) { + return readXmlContent(metadata).map(ZustaendigeStelleData::getFields).map(this::collectToMap).orElse(Collections.emptyMap()); + } + + Optional<ZustaendigeStelleData> readXmlContent(IncomingFile metadata) { + try { + return Optional.of(xmlMapperSupplier.getMapper().readValue(metadata.getContentStream(), ZustaendigeStelleData.class)); + } catch (IOException | TechnicalException e) { + LOG.error("Error parsing {}", BEHOERDE_METADATA_FILE_NAME, e); + } + return Optional.empty(); + } + + Map<String, String> collectToMap(List<ZustaendigeStelleData.Field> fields) { + return fields.stream().filter(field -> nonNull(field.getValue())) + .collect(Collectors.toMap(ZustaendigeStelleData.Field::getName, ZustaendigeStelleData.Field::getValue)); + } + + ZustaendigeStelle mapZustaendigeStelle(Map<String, String> zustaendigeStelleMetadata) { + return ZustaendigeStelle.builder() + .bezeichnung(zustaendigeStelleMetadata.get(KEY_BEHOERDE_ANZEIGE_NAME)) + .organisationseinheitenId(zustaendigeStelleMetadata.get(KEY_BEHOERDE_CALLER_ID)) + .gemeindeSchluessel(zustaendigeStelleMetadata.get(KEY_GEMEINDE_SCHLUESSEL_BP)) + .email(zustaendigeStelleMetadata.get(KEY_BEHOERDE_EMAIL)) + .amtlicherRegionalSchluessel(zustaendigeStelleMetadata.get(KEY_AMTLICHER_REGIONALSCHLUESSEL)) + .hausanschriftStrasse(zustaendigeStelleMetadata.get(KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE)) + .hausanschriftOrt(zustaendigeStelleMetadata.get(KEY_BEHOERDE_HAUSANSCHRIFT_ORT)) + .hausanschriftPlz(zustaendigeStelleMetadata.get(KEY_BEHOERDE_HAUSANSCHRIFT_PLZ)) + .telefon(zustaendigeStelleMetadata.get(KEY_BEHOERDE_TELEFON)).build(); + } + + public boolean isResponsible(FormData formData) { + return formData.getRepresentations().stream().anyMatch(IS_BEHOERDE_METADATA); + } +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..5b7e0efc759a69ada3bad028b69a53bdee794b84 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapter.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formcycle; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; + +public class FormCycleEngineBasedAdapter implements EngineBasedSemantikAdapter { + + @Autowired + private List<FormcycleEngineBasedMapper> mappers; + + @Override + public FormData parseFormData(FormData formData) { + var processed = formData; + for (var mapper : mappers) { + processed = mapper.parseFormData(processed); + } + return processed; + } + +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..e2044919f0fdf73ee1c1e1898da643683b33c77c --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formcycle; + +import java.util.Map; +import java.util.Optional; + +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +public class FormcycleAntragstellerMapper implements FormcycleEngineBasedMapper { + + static final String KEY_ANTRAGSTELLER = "fsBKAllDaten"; + static final String KEY_ANREDE = "tfAntragstellerAnrede"; + static final String KEY_VORNAME = "tfAntragstellerVorname"; + static final String KEY_NACHNAME = "tfAntragstellerName"; + static final String KEY_GEBURTSNAME = "tfAntragstellerGeburtsname"; + static final String KEY_GEBURTSDATUM = "tfAntragstellerGeburtsdatum"; + static final String KEY_GEBURTSORT = "tfAntragstellerGeburtsort"; + static final String KEY_EMAIL = "tfAntragstellerEmail"; + static final String KEY_TELEFON = "tfAntragstellerTelefon"; + static final String KEY_ADDRESS = "tfAntragstellerAdresse"; + static final String KEY_PLZ = "tfAntragstellerPLZ"; + static final String KEY_ORT = "tfAntragstellerOrt"; + + @Override + public FormData parseFormData(final FormData formData) { + return getAntragstellerData(formData.getFormData()) + .map(this::buildAntragsteller) + .map(antragsteller -> formData.toBuilder().antragsteller(antragsteller).build()) + .orElse(formData); + } + + @SuppressWarnings("unchecked") + Optional<Map<String, Object>> getAntragstellerData(Map<String, Object> formDataMap) { + var antragstellerData = (Map<String, Object>) MapUtils.getMap(formDataMap, KEY_ANTRAGSTELLER); + return Optional.ofNullable(antragstellerData).map(map -> (Map<String, Object>) map.get("value")); + } + + Antragsteller buildAntragsteller(Map<String, Object> antragstellerData) { + return Antragsteller.builder() + .anrede(getValue(antragstellerData, KEY_ANREDE)) + .vorname(getValue(antragstellerData, KEY_VORNAME)) + .nachname(getValue(antragstellerData, KEY_NACHNAME)) + .geburtsname(getValue(antragstellerData, KEY_GEBURTSNAME)) + .geburtsdatum(getValue(antragstellerData, KEY_GEBURTSDATUM)) + .geburtsort(getValue(antragstellerData, KEY_GEBURTSORT)) + .email(getValue(antragstellerData, KEY_EMAIL)) + .telefon(getValue(antragstellerData, KEY_TELEFON)) + .strasse(getValue(antragstellerData, KEY_ADDRESS)) + .plz(getValue(antragstellerData, KEY_PLZ)) + .ort(getValue(antragstellerData, KEY_ORT)) + .build(); + } + + String getValue(Map<String, Object> formDataMap, String key) { + return Optional.ofNullable(MapUtils.getMap(formDataMap, key)).map(map -> map.get("value")).map(String::valueOf).orElse(StringUtils.EMPTY); + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java similarity index 77% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java index 9e069f798cb29c519988275ef2e9300d3e7fe08a..b2104e5540ad86e64548f3a1b76b546d040333ee 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleEngineBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,11 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formcycle; -import org.springframework.stereotype.Component; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; -@Component -class AfmFilesMapper extends AbstractFileMapper implements AfmEngineBasedMapper { - -} \ No newline at end of file +interface FormcycleEngineBasedMapper extends EngineBasedMapper { +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..bbac113a68ea97c507318bb36561929eb935576f --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapper.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; + +@Component +class FormSolutionsAntragstellerMapper implements FormSolutionsEngineBasedMapper { + + public static final String ANTRAGSTELLER_PANEL_IDENTIFIER = "Antragstellende Person"; + + public static final String POSTKORBHANDLE = "postkorbhandle"; + + public static final String VORNAME_KEY = "AS_Vorname"; + public static final String NACHNAME_KEY = "AS_Name"; + + @Override + public FormData parseFormData(FormData formData) { + return FormDataUtils.from(formData) + .builder() + .antragsteller(buildAntragsteller(formData)) + .build(); + } + + protected Antragsteller buildAntragsteller(FormData formData) { + var antragstellerData = IdentifierValueParser.parsePanelsData(formData); + + return Antragsteller.builder() + .postfachId(getPostkorbhandle(formData)) + .vorname(antragstellerData.get(VORNAME_KEY)) + .nachname(antragstellerData.get(NACHNAME_KEY)) + .build(); + } + + private String getPostkorbhandle(FormData formData) { + return (String) formData.getFormData().get(POSTKORBHANDLE); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java similarity index 77% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java index 99e0b79f7af4fc813d9785c985e7379d725992d9..25e7d51d7f3190492f8638a02bbe24381682c37b 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,18 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapter { - public static final String IDENTIFIER = "identifier"; + public static final String IDENTIFIER_KEY = "identifier"; public static final String ASSISTANT = "assistant"; public static final String ANLIEGEN_ID = "anliegenId"; @@ -52,11 +53,12 @@ public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapt return removeProcessedData(processedFormData); } - FormData removeProcessedData(FormData formData) { + protected FormData removeProcessedData(FormData formData) { return FormDataUtils.from(formData) .remove(ASSISTANT) .remove(ANLIEGEN_ID) .remove(KOMMUNALVERWALTUNG_ID) + .remove(FormSolutionsAntragstellerMapper.POSTKORBHANDLE) .build(); } } diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java similarity index 83% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java index ad8594599a2b3d9c642ff3514712a6337c1992e8..2f070b8e62e761dc7b011a8ca6229556c0386482 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,8 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -interface FormSolutionsEngineBasedMapper extends EngineBasedMapper { +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; +interface FormSolutionsEngineBasedMapper extends EngineBasedMapper { } diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..39497976c305aa2483feae6cb9cb375f2baa7632 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapper.java @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; + +import java.util.List; +import java.util.function.Predicate; +import java.util.stream.Stream; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.semantik.common.ZipAttachmentReader; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; +import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; + +@Component +@Log4j2 +class FormSolutionsFilesMapper implements FormSolutionsEngineBasedMapper { + + public static final String FILE_GROUP_ZIP_NAME = "gezippte Anhänge"; + public static final String EXTRAHIERTE_ATTACHMENTS = "Extrahierte Attachments"; + public static final String ZIP_CONTENT_TYPE = "application/zip"; + + @Override + public FormData parseFormData(FormData srcFormData) { + var formDataBuilder = srcFormData.toBuilder().clearAttachments(); + + var attachments = readAttachments(srcFormData); + if (attachments.isEmpty()) { + return formDataBuilder.build(); + } + return formDataBuilder.attachments(attachments).numberOfAttachments(FilesMapperHelper.countAttachedFiles(attachments)).build(); + } + + List<IncomingFileGroup> readAttachments(FormData srcFormData) { + return new ZippedAttachmentsProcessor(srcFormData.getAttachments()).process().toList(); + } + + @RequiredArgsConstructor + class ZippedAttachmentsProcessor { + + private final List<IncomingFileGroup> originalAttachmentsList; + private static final Predicate<IncomingFileGroup> ZIP_FILE_GROUP = fileGroup -> StringUtils.equals(FILE_GROUP_ZIP_NAME, fileGroup.getName()); + + public Stream<IncomingFileGroup> process() { + return Stream.concat(processZipGroups(), nonZipFileGroups()); + } + + private Stream<IncomingFileGroup> processZipGroups() { + var groupBuilder = IncomingFileGroup.builder().name("Anhänge"); + extractAttachments().forEach(groupBuilder::file); + var group = groupBuilder.build(); + + return group.getFiles().isEmpty() ? Stream.empty() : Stream.of(group); + } + + Stream<IncomingFileGroup> nonZipFileGroups() { + return originalAttachmentsList.stream().filter(ZIP_FILE_GROUP.negate()); + } + + Stream<IncomingFile> extractAttachments() { + return originalAttachmentsList.stream() + .filter(ZIP_FILE_GROUP) + .flatMap(fileGroup -> fileGroup.getFiles().stream()) + .flatMap(this::unzip); + } + + Stream<IncomingFile> unzip(IncomingFile zipFile) { + try { + return readFromZip(zipFile); + } catch (RuntimeException e) { + LOG.error("Cannot read source ZIP. Attach it as is.", e); + return Stream.of(zipFile); + } + } + + Stream<IncomingFile> readFromZip(IncomingFile zipFile) { + var reader = buildReader(zipFile); + var readContent = reader.readContent(); + reader.deleteSourceFile(); + return readContent.stream(); + } + + ZipAttachmentReader buildReader(IncomingFile zipFile) { + return ZipAttachmentReader.from(zipFile.getFile(), zipFile.getName()); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java similarity index 56% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java index 4e8a1b558a958c6e575337c4150e5e36047b1533..0d8e25c78d58c8b2fd01b49959768841714c5052 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,25 +21,35 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; import java.util.Map; +import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; @Component -public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper { +class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper { + + static final int POSTFACH_ADDRESS_DEFAULT = 1; static final String TRANSACTION_ID = "transactionId"; static final String FORM_ENGINE_NAME = "FormSolutions"; + public static final String POSTKORBHANDLE = "postkorbhandle"; + + @Autowired + private ServiceKontoBuildHelper serviceKontoBuildHelper; + @Override public FormData parseFormData(FormData formData) { return FormDataUtils.from(formData) @@ -49,28 +59,31 @@ public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper .build(); } - FormHeader buildFormHeader(FormData formData) { - return FormHeader.builder() + protected FormHeader buildFormHeader(FormData formData) { + var formHeaderBuilder = FormHeader.builder() .formName(getIdentifier(formData)) .formId(getIdentifier(formData)) .requestId(getRequestId(formData)) - .formEngineName(FORM_ENGINE_NAME) - .build(); - } + .formEngineName(FORM_ENGINE_NAME); - private String getIdentifier(FormData formData) { - return (String) getAssistant(formData).get(IDENTIFIER); + Optional.ofNullable(getPostkorbhandle(formData)).map(serviceKontoBuildHelper::buildOsiServiceKonto).ifPresent(formHeaderBuilder::serviceKonto); + + return formHeaderBuilder.build(); } - private String getRequestId(FormData formData) { - return (String) formData.getFormData().get(TRANSACTION_ID); + private String getIdentifier(FormData formData) { + return (String) getAssistant(formData).get(IDENTIFIER_KEY); } private Map<String, Object> getAssistant(FormData formData) { return FormDataUtils.getSubMap(formData, ASSISTANT); } - Map<String, Object> removeProcessedData(FormData processedData) { - return FormDataUtils.from(processedData).remove(TRANSACTION_ID).build().getFormData(); + private String getRequestId(FormData formData) { + return (String) formData.getFormData().get(TRANSACTION_ID); + } + + private String getPostkorbhandle(FormData formData) { + return (String) formData.getFormData().get(POSTKORBHANDLE); } -} +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..ea2ad3090bedcea7382548da428f07ad8f9bc5d5 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapper.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; + +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static java.util.Objects.*; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; + +@Component +class FormSolutionsPanelMapper implements FormSolutionsEngineBasedMapper { + public static final String COMPONENTS = "components"; + public static final String STRING_VALUE = "stringValue"; + public static final String PANELS = "panels"; + + @Override + public FormData parseFormData(FormData formData) { + var resultMap = mapPanels(getPanels(formData)).orElseGet(HashMap::new); + resultMap.putAll(formData.getFormData()); + + return formData.toBuilder().formData(resultMap).build(); + } + + private Optional<Map<String, Object>> mapPanels(List<Map<String, Object>> panels) { + if (panels.isEmpty()) { + return Optional.empty(); + } + var resultMap = new LinkedHashMap<String, Object>(); + for (Map<String, Object> panel : panels) { + var identifier = (String) panel.get(IDENTIFIER_KEY); + if (isNull(identifier)) { + continue; + } + getValue(panel).ifPresent(value -> resultMap.put(identifier, value)); + } + + return Optional.of(resultMap); + } + + private Optional<Object> getValue(Map<String, Object> panel) { + return mapPanels(getComponentList(panel)) + .map(Object.class::cast) + .or(() -> Optional.ofNullable(panel.get(STRING_VALUE))); + } + + @SuppressWarnings("unchecked") + public static List<Map<String, Object>> getPanels(FormData formData) { + if (isNull(formData)) { + return List.of(); + } + return Optional.ofNullable(formData.getFormData()) + .map(formDataMap -> (Map<String, Object>) formDataMap.get(ASSISTANT)) + .map(assistent -> (List<Map<String, Object>>) assistent.get(PANELS)) + .orElse(List.of()); + } + + @SuppressWarnings("unchecked") + public static List<Map<String, Object>> getComponentList(Map<String, Object> panel) { + if (isNull(panel)) { + return List.of(); + } + return Optional.ofNullable(panel.get(COMPONENTS)).map(c -> (List<Map<String, Object>>) c).orElse(List.of()); + } + +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java similarity index 74% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java index 04e113b811fa6ee64e0425ea799eba65d55b9d71..d351f7734cac584cb6d5e6955464b97287adc305 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,19 +21,19 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; import java.util.Collections; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import org.springframework.stereotype.Component; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; @Component -public class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngineBasedMapper { +class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngineBasedMapper { public static final String ZUSTAENDIGE_STELLE = "zustaendigeStelle"; @@ -45,7 +45,7 @@ public class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngine .build(); } - ZustaendigeStelle buildZustaendigeStelle(FormData formData) { + protected ZustaendigeStelle buildZustaendigeStelle(FormData formData) { return ZustaendigeStelle.builder() .organisationseinheitenId(getZustaenigeStelle(formData)) .build(); @@ -55,8 +55,8 @@ public class FormSolutionsZustaendigeStelleMapper implements FormSolutionsEngine return (String) formData.getFormData().get(ZUSTAENDIGE_STELLE); } - Map<String, Object> removeProcessedData(FormData formData) { - var cleanedData = new HashMap<String, Object>(formData.getFormData()); + protected Map<String, Object> removeProcessedData(FormData formData) { + var cleanedData = new LinkedHashMap<>(formData.getFormData()); cleanedData.remove(ZUSTAENDIGE_STELLE); return Collections.unmodifiableMap(cleanedData); diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java new file mode 100644 index 0000000000000000000000000000000000000000..72b53a91e5c8558e07094b9026cf13e23537ee01 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParser.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; + +import static java.util.Objects.*; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import de.ozgcloud.eingang.common.formdata.FormData; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +class IdentifierValueParser { + + static Map<String, String> parsePanelsData(FormData formData) { + return new IdentifierValueParser().parsePanels(formData); + } + + private final Map<String, String> resultMap = new LinkedHashMap<>(); + + Map<String, String> parsePanels(FormData formData) { + parse(FormSolutionsPanelMapper.getPanels(formData)); + return Collections.unmodifiableMap(resultMap); + } + + private void parse(List<Map<String, Object>> panels) { + if (isNull(panels)) { + return; + } + for (Map<String, Object> panel : panels) { + parse(FormSolutionsPanelMapper.getComponentList(panel)); + var identifier = (String) panel.get(FormSolutionsEngineBasedAdapter.IDENTIFIER_KEY); + var value = (String) panel.get(FormSolutionsPanelMapper.STRING_VALUE); + if (nonNull(identifier) && nonNull(value)) { + resultMap.put(identifier, value); + } + } + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedAdapter.java similarity index 67% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedAdapter.java index f34380ebdc9d0a5150035a1d10957a1a557df04a..3d892ade6b01117a0d206d2638e89473f84b2655 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,28 +21,29 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.xta; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -public class AfmEngineBasedAdapter implements EngineBasedSemantikAdapter { +public class XtaEngineBasedAdapter implements EngineBasedSemantikAdapter { @Autowired - private List<AfmEngineBasedMapper> mappers; + private List<XtaEngineBasedMapper> mappers; @Override public FormData parseFormData(FormData formData) { - var processedFormData = formData; + var processed = formData; - for (int i = 0; i < mappers.size(); i++) { - var mapper = mappers.get(i); - var processed = mapper.parseFormData(processedFormData); - processedFormData = processed; + for (var mapper : mappers) { + processed = mapper.parseFormData(processed); } - return processedFormData; + + return processed; } -} \ No newline at end of file + +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..62afb38ba7a06099ba8f67961a592d0917b98c6d --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaEngineBasedMapper.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.xta; + +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; + +public interface XtaEngineBasedMapper extends EngineBasedMapper { + +} diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..b964dae35024a8364aad3ef4135806cd476239f7 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapper.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.xta; + +import java.util.Collections; +import java.util.List; +import java.util.function.Predicate; + +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.semantik.common.ZipAttachmentReader; +import lombok.extern.log4j.Log4j2; + +@Component +@Log4j2 +public class XtaZipRepresentationsMapper implements XtaEngineBasedMapper { + + public static final String ZIP_CONTENT_TYPE = "application/zip"; + + static final Predicate<IncomingFile> IS_ZIP_FILE = contentType -> ZIP_CONTENT_TYPE.equals(contentType.getContentType()); + + @Override + public FormData parseFormData(FormData srcFormData) { + + List<IncomingFile> extractedFiles = srcFormData.getRepresentations().stream() + .filter(IS_ZIP_FILE) + .map(this::extractZip) + .flatMap(List::stream) + .toList(); + + return srcFormData + .toBuilder() + .representations(extractedFiles) + .numberOfRepresentations(srcFormData.getNumberOfRepresentations() + extractedFiles.size()).build(); + } + + List<IncomingFile> extractZip(IncomingFile zipFile) { + try { + return ZipAttachmentReader.from(zipFile.getContentStream(), zipFile.getName()).readContent(); + } catch (RuntimeException e) { + LOG.error("Cannot read source ZIP. Not extracting file", e); + return Collections.emptyList(); + } + } +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/AnliegenId.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java similarity index 86% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/AnliegenId.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java index 1c08c07bfd143677969984c33190ec71db19d87c..246f81b6b17f686646646ee9da395d3ebdfca13f 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/AnliegenId.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/AnliegenId.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,9 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.formbased; +package de.ozgcloud.eingang.semantik.formbased; -import de.itvsh.kop.common.datatype.StringBasedValue; +import de.ozgcloud.common.datatype.StringBasedValue; class AnliegenId extends StringBasedValue { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..1e768b917e5fd941b34225dfae6152f6a93a5a08 --- /dev/null +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapper.java @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.formbased; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Predicate; + +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; +import lombok.NonNull; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Component +public class DFoerdermittelFormBasedMapper implements FormBasedMapper { + + private static final String FACHNACHRICHT_SUFFIX = "Fachnachricht.xml"; + private static final Predicate<IncomingFile> IS_FACHNACHRICHT = inFile -> StringUtils.endsWith(inFile.getName(), FACHNACHRICHT_SUFFIX); + + private static final String KEY_FACHNACHRICHT = "Fachnachricht"; + private static final String KEY_POSTFACH_ID = "InboxReference"; + private static final String KEY_ORGANISATIONS_EINHEIT_ID = "MetaText1"; + + @Autowired + private ServiceKontoBuildHelper serviceKontoHelper; + + @Override + public FormData parseFormData(FormData formData) { + return formData.getRepresentations().stream().filter(IS_FACHNACHRICHT).findAny() + .map(inFile -> parseFachnachricht(formData, inFile)) + .map(this::processFachnachricht) + .orElse(formData); + } + + FormData processFachnachricht(FormData formData) { + @SuppressWarnings("unchecked") + Map<String, Object> fachnachricht = (Map<String, Object>) MapUtils.getMap(formData.getFormData(), KEY_FACHNACHRICHT, + Collections.<String, Object>emptyMap()); + + var extendedFormData = addServiceKonto(formData, fachnachricht); + return addOrganisationsEinheitId(extendedFormData, fachnachricht); + } + + FormData addServiceKonto(FormData formData, Map<String, Object> fachnachricht) { + return Optional.ofNullable((String) fachnachricht.get(KEY_POSTFACH_ID)) + .map(this::extractPrefix) + .map(this::createServiceKonto) + .map(serviceKonto -> formData.getHeader().toBuilder().serviceKonto(serviceKonto).build()) + .map(header -> formData.toBuilder().header(header).build()) + .orElse(formData); + } + + FormData addOrganisationsEinheitId(FormData formData, Map<String, Object> fachnachricht) { + return Optional.ofNullable((String) fachnachricht.get(KEY_ORGANISATIONS_EINHEIT_ID)) + .map(orgaId -> addOrganisationsEinheitId(orgaId, formData.getZustaendigeStelle())) + .map(zustStelle -> formData.toBuilder().zustaendigeStelle(zustStelle).build()) + .orElse(formData); + } + + private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, ZustaendigeStelle zustaendigeStelle) { + ZustaendigeStelle.ZustaendigeStelleBuilder zustaendigeStelleBuilder; + if (Objects.isNull(zustaendigeStelle)) { + zustaendigeStelleBuilder = ZustaendigeStelle.builder(); + } else { + zustaendigeStelleBuilder = zustaendigeStelle.toBuilder(); + } + + return zustaendigeStelleBuilder.organisationseinheitenId(orgaId).build(); + } + + String extractPrefix(@NonNull String postfachId) { + return postfachId.substring(postfachId.lastIndexOf("/") + 1); + } + + private ServiceKonto createServiceKonto(String postfachId) { + return serviceKontoHelper.buildOsiServiceKonto(postfachId); + } + + FormData parseFachnachricht(FormData formData, IncomingFile fachnachrichtFile) { + var fachnachrichtData = extractFormDataFormXML(fachnachrichtFile.getContentStream()); + + if (MapUtils.isNotEmpty(fachnachrichtData)) { + var editable = new HashMap<>(formData.getFormData()); + editable.put(KEY_FACHNACHRICHT, fachnachrichtData); + return formData.toBuilder().formData(Collections.unmodifiableMap(editable)).build(); + } + + return formData; + } + + @SuppressWarnings("unchecked") + Map<String, Object> extractFormDataFormXML(InputStream xmlFileStream) { + + XmlMapper xmlMapper = new XmlMapper(); + try { + return xmlMapper.readValue(xmlFileStream, Map.class); + } catch (IOException e) { + LOG.error("Error reading xml fachnachricht.", e); + } + return Collections.emptyMap(); + } + + @Override + public boolean isResponsible(FormData formData) { + return formData.getRepresentations().stream().anyMatch(IS_FACHNACHRICHT); + } + +} diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java similarity index 79% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedMapper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java index aa12db859982299b8c95a0697b203792ac723a4a..450fee1f844a00f370ebecd883eb53019b914afb 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedMapper.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,15 +21,13 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.formbased; +package de.ozgcloud.eingang.semantik.formbased; -import java.util.List; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; interface FormBasedMapper { FormData parseFormData(FormData formData); - List<AnliegenId> getResponsibleAnliegenIds(); + boolean isResponsible(FormData formData); } diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java similarity index 52% rename from semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapter.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java index f841248094beceacc67468e7435b8e6f206c6002..304d334dbade16cef40b0464034014ef21fa4945 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,48 +21,43 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.formbased; +package de.ozgcloud.eingang.semantik.formbased; +import java.util.Collections; import java.util.List; -import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; @Service public class FormBasedSemantikAdapter { @Autowired(required = false) - private List<FormBasedMapper> mappers; + private List<FormBasedMapper> mappers = Collections.emptyList(); public FormData parseFormData(FormData formData) { - var formDataAnliegenId = getAnliegenId(formData); - var processedFormData = formData; + return new FormDataProcessor().process(formData); + } + + class FormDataProcessor { + private FormData processedFormData; + + FormData process(FormData originalFormData) { + processedFormData = originalFormData; + mappers.stream() + .filter(mapper -> mapper.isResponsible(processedFormData)) + .forEach(this::parseWithMapper); - // TODO OZG-1929 Muss gekläert werden, wie damit umgegangen wird - if (Objects.isNull(mappers)) { - return formData; + return processedFormData; } - for (int i = 0; i < mappers.size(); i++) { - var mapper = mappers.get(i); - if (isResponsible(mapper, formDataAnliegenId)) { - var processed = mapper.parseFormData(processedFormData); - processedFormData = processed; - } + private void parseWithMapper(FormBasedMapper mapper) { + processedFormData = mapper.parseFormData(processedFormData); } - return processedFormData; - } - AnliegenId getAnliegenId(FormData formData) { - return null;// TODO AnliegenId aus FormData holen } - private boolean isResponsible(FormBasedMapper mapper, AnliegenId anliegenId) { - // TODO isNull rausnehmen, sobald die AnliegenIds definiert sind - return Objects.isNull(anliegenId) || mapper.getResponsibleAnliegenIds().contains(anliegenId); - } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapperTest.java deleted file mode 100644 index 1c0c01e6b98b7a9409fd4a9fa47999d6cf8218c8..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerMapperTest.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static org.assertj.core.api.Assertions.*; - -import java.util.HashMap; -import java.util.UUID; - -import org.assertj.core.data.MapEntry; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -class AfmAntragstellerMapperTest { - - private AfmAntragstellerMapper mapper = new AfmAntragstellerMapper(); - - @Nested - class TestParseFormData { - - @Test - void shouldDoNothingOnNullAntragstaller() { - var formData = FormData.builder().formData(new HashMap<>()).build(); - - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData).usingRecursiveComparison().ignoringFields(AfmAntragstellerMapper.ANTRAGSTELLER).isEqualTo(formData); - } - - private FormData formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap()).build(); - - @Test - void shouldMapAntragsteller() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") - .isEqualTo(AfmAntragstellerTestFactory.create()); - } - - @Test - void shouldMapPostfachId() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getPostfachId()).isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID); - } - - @Nested - class TestMapAntragstellerData { - - @Nested - class TestWithMappedAndNotMappedValue { - - private static final String NOT_MAPPED_FIELD = "not_mapped_value"; - private static final String NOT_MAPPED_VALUE = UUID.randomUUID().toString(); - - private FormData formData; - - @BeforeEach - void buildFormData() { - var antragstellerMap = AfmAntragstellerTestFactory.createAntragstelleMap(MapEntry.entry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE)); - - var formDataMap = new HashMap<String, Object>(); - formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstellerMap); - - formData = FormData.builder().formData(formDataMap).build(); - } - - @Test - void shouldNotContainDuplicateValues() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getData()).doesNotContainKeys( - AfmAntragstellerMapper.ANREDE, - AfmAntragstellerMapper.EMAIL, - AfmAntragstellerMapper.GEBURTSDATUM, - AfmAntragstellerMapper.GEBURTSNAME, - AfmAntragstellerMapper.GEBURTSORT, - AfmAntragstellerMapper.NACHNAME, - AfmAntragstellerMapper.VORNAME, - AfmAntragstellerMapper.TELEFON, - AfmAntragstellerMapper.STRASSE, - AfmAntragstellerMapper.HAUSNUMMER, - AfmAntragstellerMapper.ORT, - AfmAntragstellerMapper.PLZ); - } - - @Test - void shouldMoveNotMappedFieldsToDataMap() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getAntragsteller().getData()).containsEntry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE); - } - } - } - - @Nested - class TestRemoveFields { - - @Test - void shouldRemoveAntragsteller() { - var parsedFormData = parseFormData(formData); - - assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER)).isNull(); - } - } - } - - private FormData parseFormData(FormData formData) { - return mapper.parseFormData(formData); - } -} diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapperTest.java deleted file mode 100644 index 6ffcfe1ac5b94374d4390fad23ae4973094ffbdb..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderMapperTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -class AfmHeaderMapperTest { - - private AfmHeaderMapper mapper = new AfmHeaderMapper(); - - @Nested - class TestParseFormData { - - private FormData formData = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); - - @Nested - class TestMapFormHeader { - - @Test - void shouldMapRequestId() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getRequestId()).isEqualTo(AfmHeaderTestFactory.ID); - } - - @Test - void shouldMapCreatedAt() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getCreatedAt()).isEqualTo(AfmHeaderTestFactory.TIMESTAMP); - } - - @Test - void shouldMapFormId() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getFormId()).isEqualTo(AfmHeaderTestFactory.FORM_ID); - } - - @Test - void shouldMapFormName() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getFormName()).isEqualTo(AfmHeaderTestFactory.FORM); - } - - @Test - void shouldMapSender() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getSender()).isEqualTo(AfmHeaderTestFactory.SENDER); - } - - @Test - void shouldSetFormEngineName() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getHeader().getFormEngineName()).isEqualTo(AfmHeaderMapper.AFM_FORMENGINE_NAME); - } - } - - @Test - void shouldRemoveHeader() { - var parsedFormData = parseFormData(); - - assertThat(parsedFormData.getFormData().get(AfmHeaderMapper.HEADER_FIELD)).isNull(); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderTestFactory.java deleted file mode 100644 index 9b14fcc3e5267d227bdc2446847a3e09480d11b4..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmHeaderTestFactory.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -public class AfmHeaderTestFactory { - - public static final String ID = UUID.randomUUID().toString(); - public static final String TIMESTAMP = "2020-11-18T09:09:27.627Z"; - public static final String FORM_ID = "waffen/kleinerWaffenschein"; - public static final String FORM = "Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)"; - public static final String SENDER = "afm.schleswig-holstein.de"; - - public static Map<String, Object> createFormDataMap() { - var map = new HashMap<String, Object>(); - map.put(AfmHeaderMapper.HEADER_FIELD, createHeaderMap()); - - return map; - } - - public static Map<String, Object> createHeaderMap() { - var map = new HashMap<String, Object>(); - map.put(AfmHeaderMapper.ID, ID); - map.put(AfmHeaderMapper.TIMESTAMP, TIMESTAMP); - map.put(AfmHeaderMapper.FORM_ID, FORM_ID); - map.put(AfmHeaderMapper.FORM, FORM); - map.put(AfmHeaderMapper.SENDER, SENDER); - return map; - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java deleted file mode 100644 index a0381a0594c208cb34953043337604ff25d55785..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AttachmentsTestFactory.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.common.formdata.FormSolutionsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; - -import java.util.Base64; -import java.util.List; -import java.util.Map; - -import org.springframework.http.MediaType; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFile; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; - -//TODO TestFactory aufraeumen/entfernen -public class AttachmentsTestFactory { - - public static final String ZIP_ENCODED = "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"; - public static final byte[] ZIP_DECODED = Base64.getDecoder().decode(ZIP_ENCODED.getBytes()); -//TODO es bringt für den Tests nichts, den gleichen decoder zu verwenden wie im richtigen Code - umstellen auf vorkodierte Datei - private static final String ZIP_ENCRYPTED_ENCODED = "UEsDBBQACQAIAGxbgVR2JDbWfAAAAJwAAAAJABwAc21hbGwudHh0VVQJAAN8xUZifMVGYnV4CwABBGJsYAsEAQJgC+UGqCf9nYnWPRIWHX3BIKiUYURrZACUULUIS//p8/GxbgqhmNJc9vvwM63ICih6zF75gd6jvEUvHKXrvjC5fz636xmuFoCmNjdFb0qs02H4llZkM7C5IF9raesJjK+Q6u/O7sAnIc2Qa677puRTGsHfxq7FYovFFy6xWSVQSwcIdiQ21nwAAACcAAAAUEsBAh4DFAAJAAgAbFuBVHYkNtZ8AAAAnAAAAAkAGAAAAAAAAQAAAKSBAAAAAHNtYWxsLnR4dFVUBQADfMVGYnV4CwABBGJsYAsEAQJgC1BLBQYAAAAAAQABAE8AAADPAAAAAAA="; - public static final byte[] ZIP_ENCRYPTED_DECODED = Base64.getDecoder().decode(ZIP_ENCRYPTED_ENCODED.getBytes()); - - private static final String PDF_ENCODED = "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ZW5kb2JqCjI5IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAyOSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAzMS9CaXRzUGVyQ29tcG9uZW50IDg+PnN0cmVhbQp4nPv/HxPsb0AF+///b2BABQ2jQgghLOGFCQANA2i1CmVuZHN0cmVhbQplbmRvYmoKMzQgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzMyAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9TdWJ0eXBlL0ltYWdlL0hlaWdodCAxOS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1dpZHRoIDE5L0xlbmd0aCAxMzIvQml0c1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KeJxl0AENwCAMBMCXUAmTgAQkTMIkTEIdIGESkDAJSJgEJHQtDEKzTyDhUlqCyD83+9wijCVEYE+HSPQUtA97KiJ1c5S06HS9oo3HSvTYtU6Uc1DKWrSjk64asKtkfGSHulXdaFCbZImYhKtJwkLNCjmycQGeqMwX8/ivtP7XPy90XasiCmVuZHN0cmVhbQplbmRvYmoKMzYgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9IZWlnaHQgMTkvRmlsdGVyL0ZsYXRlRGVjb2RlL1R5cGUvWE9iamVjdC9XaWR0aCAxOS9TTWFzayAzNSAwIFIvTGVuZ3RoIDE4L0JpdHNQZXJDb21wb25lbnQgOD4+c3RyZWFtCnicY2AYBaNgFIwCkgEABDsAAQplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjw8L1N1YnR5cGUvRm9ybS9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L01hdHJpeFsxIDAgMCAxIDAgMF0vRm9ybVR5cGUgMS9SZXNvdXJjZXM8PC9Gb250PDwvSGVsdiAx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bHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjQ5IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoZmlsZVVybCkvVHlwZS9Bbm5vdC9WKGh0dHBzJTNBJTJGJTJGa3VuZGVudGVzdC5mb3JtLXNvbHV0aW9ucy5kZSUyRm1ldGFmb3JtJTJGRm9ybS1Tb2x1dGlvbnMlMkZzaWQlMkZhc3Npc3RhbnQlMkY2MWIyMDhlODY2ZGExMjM2NDRjOTdlNTYlM0ZhbmxpZWdlbklkJTNEMTIzNCUyNm9yZ2FuaXNhdGlvbnNlaW5oZWl0ZW5JRCUzRDkwMzAyMjklMjZrb21tdW5hbHZlcndhbHR1bmdJZCUzRDEwMDAwMDAwMCUyNmNvbnNlbnRDb21wbGV0ZSUzRHRydWUlMjZjYWNoZUlEJTNENGZiNmI2ZTAtMGYxYy00OTcwLWI5ZWQtZGJmMjQyZDMzM2Y5JTI2Y2l0aXplblBvcnRhbExvZ2luU3VjY2VzcyUzRHRydWUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUwIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfVm9ybmFtZSkvVHlwZS9Bbm5vdC9WKFN1c2FubmUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfTmFtZSkvVHlwZS9Bbm5vdC9WKEZpc2NoZXIpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxNiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjUyIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUnVmbmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTcgMCBSPj4vRmYgMD4+CmVuZG9iago1MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX09yZGVuc25hbWVfS3VlbnN0bGVybmFtZSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMTggMCBSPj4vRmYgMD4+CmVuZG9iago1NCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKHN0YWF0KS9UeXBlL0Fubm90L1YoREUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAxOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU1IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfUExaKS9UeXBlL0Fubm90L1YoMTIzNDUpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfT3J0KS9UeXBlL0Fubm90L1YoS2llbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDIxIDAgUj4+L0ZmIDA+PgplbmRvYmoKNTcgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChCdW5kZXNsYW5kKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyMiAwIFI+Pi9GZiAwPj4KZW5kb2JqCjU4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfU3RyYXNzZSkvVHlwZS9Bbm5vdC9WKEhhdXB0c3RyYd9lKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjMgMCBSPj4vRmYgMD4+CmVuZG9iago1OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0hhdXNudW1tZXIpL1R5cGUvQW5ub3QvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjAgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChBU19UZWxlZm9uKS9UeXBlL0Fubm90L0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAyNSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjYxIDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoQVNfRS1NYWlsKS9UeXBlL0Fubm90L1Yoc3VzYW5uZS5maXNjaGVyQGRhdGFwb3J0LmRlKS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjYgMCBSPj4vRmYgMD4+CmVuZG9iago2MiAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEFTX0ZheCkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gMjcgMCBSPj4vRmYgMD4+CmVuZG9iago2MyAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKG9mc1hYMV9mcm9tX3NtYWlsMykvVHlwZS9Bbm5vdC9WKHN1c2FubmUuZmlzY2hlckBkYXRhcG9ydC5kZSkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDI4IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjQgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX05hbWUpL1R5cGUvQW5ub3QvVihIYXNzbykvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDM3IDAgUj4+L0ZmIDA+PgplbmRvYmoKNjUgMCBvYmoKPDwvQlM8PC9TL1MvVyAxPj4vU3VidHlwZS9XaWRnZXQvVChIdW5kX1Jhc3NlKS9UeXBlL0Fubm90L1YoU2No5GZlcmh1bmQpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY2IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZXNjaGxlY2h0KS9UeXBlL0Fubm90L1Yod2VpYmxpY2gpL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiAzOSAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY3IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoS2FzdHJhdGlvbikvVHlwZS9Bbm5vdC9WKG5laW4pL0YgNi9EQSgvSGVsdiAwIFRmIDAgZyApL0ZUL1R4L0RSPDwvRm9udDw8L0hlbHYgMTAgMCBSPj4+Pi9SZWN0WzAgMCAwIDBdL0FQPDwvTiA0MCAwIFI+Pi9GZiAwPj4KZW5kb2JqCjY4IDAgb2JqCjw8L0JTPDwvUy9TL1cgMT4+L1N1YnR5cGUvV2lkZ2V0L1QoSHVuZF9HZWJ1cnRkYXR1bSkvVHlwZS9Bbm5vdC9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDEgMCBSPj4vRmYgMD4+CmVuZG9iago2OSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQWx0ZXIpL1R5cGUvQW5ub3QvVig1KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDIgMCBSPj4vRmYgMD4+CmVuZG9iago3MCAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfQ2hpcE5yKS9UeXBlL0Fubm90L1YoMTIzNDU2Nzg5MTIzNDU2KS9GIDYvREEoL0hlbHYgMCBUZiAwIGcgKS9GVC9UeC9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4vUmVjdFswIDAgMCAwXS9BUDw8L04gNDMgMCBSPj4vRmYgMD4+CmVuZG9iago3MSAwIG9iago8PC9CUzw8L1MvUy9XIDE+Pi9TdWJ0eXBlL1dpZGdldC9UKEh1bmRfRmVsbGZhcmJlKS9UeXBlL0Fubm90L1YoaGVsbCkvRiA2L0RBKC9IZWx2IDAgVGYgMCBnICkvRlQvVHgvRFI8PC9Gb250PDwvSGVsdiAxMCAwIFI+Pj4+L1JlY3RbMCAwIDAgMF0vQVA8PC9OIDQ0IDAgUj4+L0ZmIDA+PgplbmRvYmoKNzIgMCBvYmoKPDwvQlM8PC9T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NjYgMCBSIDY3IDAgUiA2OCAwIFIgNjkgMCBSIDcwIDAgUiA3MSAwIFIgNzIgMCBSIDczIDAgUl0vREEoL0hlbHYgMCBUZiAwIGcgKS9EUjw8L0ZvbnQ8PC9IZWx2IDEwIDAgUj4+Pj4+PgplbmRvYmoKODMgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL0Fjcm9Gb3JtIDgyIDAgUi9QYWdlcyA3NSAwIFI+PgplbmRvYmoKeHJlZgowIDg0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyODA5IDAwMDAwIG4gCjAwMDAwMDQyMDYgMDAwMDAgbiAKMDAwMDAwNTYwNCAwMDAwMCBuIAowMDAwMDA1OTA5IDAwMDAwIG4gCjAwMDAwMDU5ODUgMDAwMDAgbiAKMDAwMDAwNjEyNSAwMDAwMCBuIAowMDAwMDA3NDA2IDAwMDAwIG4gCjAwMDAwMDYzNDEgMDAwMDAgbiAKMDAwMDAwNjU5NSAwMDAwMCBuIAowMDAwMDA2Njg0IDAwMDAwIG4gCjAwMDAwMDY5MzkgMDAwMDAgbiAKMDAwMDAzODI3NyAwMDAwMCBuIAowMDAwMDM4ODA0IDAwMDAwIG4gCjAwMDAwMDc1MzYgMDAwMDAgbiAKMDAwMDAwNzc5NCAwMDAwMCBuIAowMDAwMDA4MDUyIDAwMDAwIG4gCjAwMDAwMDgyNDcgMDAwMDAgbiAKMDAwMDAwODQ0MiAwMDAwMCBuIAowMDAwMDA4Njk1IDAwMDAwIG4gCjAwMDAwMDg5NTEgMDAwMDAgbiAKMDAwMDAwOTIwNiAwMDAwMCBuIAowMDAwMDA5NDAxIDAwMDAwIG4gCjAwMDAwMDk2NjQgMDAwMDAgbiAKMDAwMDAwOTg1OSAwMDAwMCBuIAowMDAwMDEwMDU0IDAwMDAwIG4gCjAwMDAwMTAzMzMgMDAwMDAgbiAKMDAwMDAxMDUyOCAwMDAwMCBuIAowMDAwMDEwODA3IDAwMDAwIG4gCjAwMDAwMTEwOTQgMDAwMDAgbiAKMDAwMDAxMTI3OCAwMDAwMCBuIAowMDAwMDExNDYzIDAwMDAwIG4gCjAwMDAwMTE2NDcgMDAwMDAgbiAKMDAwMDAxMTgzMiAwMDAwMCBuIAowMDAwMDEyMDE2IDAwMDAwIG4gCjAwMDAwMTIzMDMgMDAwMDAgbiAKMDAwMDAxMjQ4NyAwMDAwMCBuIAowMDAwMDEyNzQzIDAwMDAwIG4gCjAwMDAwMTMwMDYgMDAwMDAgbiAKMDAwMDAxMzI2NSAwMDAwMCBuIAowMDAwMDEzNTIwIDAwMDAwIG4gCjAwMDAwMTM3MTUgMDAwMDAgbiAKMDAwMDAxMzk2NyAwMDAwMCBuIAowMDAwMDE0MjI5IDAwMDAwIG4gCjAwMDAwMTQ0ODQgMDAwMDAgbiAKMDAwMDAxNDczNyAwMDAwMCBuIAowMDAwMDE0OTkwIDAwMDAwIG4gCjAwMDAwMTUxNjYgMDAwMDAgbiAKMDAwMDAxNTM1OCAwMDAwMCBuIAowMDAwMDE1ODQ0IDAwMDAwIG4gCjAwMDAwMTYwMjQgMDAwMDAgbiAKMDAwMDAxNjIwMSAwMDAwMCBuIAowMDAwMDE2MzcwIDAwMDAwIG4gCjAwMDAwMTY1NTYgMDAwMDAgbiAKMDAwMDAxNjcyNiAwMDAwMCBuIAowMDAwMDE2OTAwIDAwMDAwIG4gCjAwMDAwMTcwNzMgMDAwMDAgbiAKMDAwMDAxNzI0MiAwMDAwMCBuIAowMDAwMDE3NDI2IDAwMDAwIG4gCjAwMDAwMTc1OTggMDAwMDAgbiAKMDAwMDAxNzc2NyAwMDAwMCBuIAowMDAwMDE3OTY2IDAwMDAwIG4gCjAwMDAwMTgxMzEgMDAwMDAgbiAKMDAwMDAxODMzOSAwMDAwMCBuIAowMDAwMDE4NTE2IDAwMDAwIG4gCjAwMDAwMTg3MDAgMDAwMDAgbiAKMDAwMDAxODg4NiAwMDAwMCBuIAowMDAwMDE5MDYzIDAwMDAwIG4gCjAwMDAwMTkyMzggMDAwMDAgbiAKMDAwMDAxOTQxMiAwMDAwMCBuIAowMDAwMDE5NjAxIDAwMDAwIG4gCjAwMDAwMTk3ODIgMDAwMDAgbiAKMDAwMDAxOTk1OSAwMDAwMCBuIAowMDAwMDIwMTM2IDAwMDAwIG4gCjAwMDAwMjE0MTUgMDAwMDAgbiAKMDAwMDAyMTQ3NSAwMDAwMCBuIAowMDAwMDIzNjMzIDAwMDAwIG4gCjAwMDAwMjE5NTggMDAwMDAgbiAKMDAwMDAyMjA1MiAwMDAwMCBuIAowMDAwMDIzNzkwIDAwMDAwIG4gCjAwMDAwMzgwOTMgMDAwMDAgbiAKMDAwMDAzOTQ0OCAwMDAwMCBuIAowMDAwMDM5NzE0IDAwMDAwIG4gCnRyYWlsZXIKPDwvSW5mbyA0IDAgUi9JRCBbPGVlZWQ2YmEzM2YwZDY5ZjkzZWEyYzZjNWFhM2U0ZWJjPjw4ZGIwNDk0YjcxMmY5ZTE5NTJmZGMwMjI2Mjg3NzdhZj5dL1Jvb3QgODMgMCBSL1NpemUgODQ+PgolaVRleHQtNS41LjUKc3RhcnR4cmVmCjM5Nzc3CiUlRU9GCg=="; - private static final byte[] PDF_DECODED = Base64.getDecoder().decode(PDF_ENCODED.getBytes()); -//TODO aus Datei laden - private static final String XML_CONTENT = """ - <?xml version="1.0" encoding="UTF-8"?> - <myForm xmlns:pdf="http://xmlns.cit.de/assistants/pdf" - xmlns:t="http://xmlns.cit.de/intelliform/transaction" - t:id="20201118365670866101\" t:timestamp=\"2020-11-18T09:09:27.627Z" - t:sender="afm.schleswig-holstein.de" - t:form="Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)" - t:form-id="waffen/kleinerWaffenschein" - t:customer="Einheitlicher Ansprechpartner" t:customer-id="ea-sh" - t:client="Schleswig-Holstein" - t:client-id="land"></myForm>"""; - private static final byte[] XML_BYTES = XML_CONTENT.getBytes(); - - public static final String FILE_GROUP_ZIP_NAME = "gezippte Anhänge"; - private static final String FILE_GROUP_PDF_NAME = "PDF Anhang"; - - public static final String ZIP = "zip"; - public static final String FILE_NAME_ZIP_ATTACHMENT = "attachments.zip"; - public static final String ZIP_CONTENT_TYPE = "application/zip"; - public static final String ZIP_FILE_0_CONTENT = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\n\n"; - public static final String FILE_NAME_ZIP_CONTENT_0 = "156.txt"; - - public static final String JSON = "json"; - public static final String FILE_NAME_JSON_REP = "form-data.json"; - public static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON_VALUE; - - public static final String PDF = "pdf"; - public static final String FILE_NAME_PDF_REP = "eingang.pdf"; - public static final String PDF_CONTENT_TYPE = MediaType.APPLICATION_PDF_VALUE; - - public static final String XML = "xml"; - public static final String FILE_NAME_XML_REP = "XML-Daten-1.xml"; - public static final String XML_CONTENT_TYPE = MediaType.APPLICATION_XML_VALUE; - - public static final String TXT_CONTENT_TYPE = "text/plain"; - - private static final List<IncomingFileGroup> AFM_ATTACHMMENTS = createAttachments(List.of( - createFile(FILE_NAME_PDF_REP, PDF_DECODED, PDF_CONTENT_TYPE)), FILE_GROUP_PDF_NAME); - - public static final List<IncomingFile> FORMSOLUTIONS_REPRESENTATIONS = List.of( - createFile(FILE_NAME_PDF_REP, PDF_DECODED, PDF_CONTENT_TYPE), - createFile(FILE_NAME_JSON_REP, SIMPLE_JSON_DATA.getBytes(), JSON_CONTENT_TYPE)); - - private static final List<IncomingFile> AFM_REPRESENTATIONS = List.of( - createFile(FILE_NAME_XML_REP, XML_BYTES, XML_CONTENT_TYPE)); - - public static final Map<String, List<IncomingFileGroup>> FORMDATA_WITH_FORMSOLUTIONS_ATTACHMMENTS_ENCRYPTED = Map.of(ATTACHMENTS, - createAttachments(List.of( - createFile(FILE_NAME_ZIP_ATTACHMENT, ZIP_ENCRYPTED_DECODED, ZIP_CONTENT_TYPE)), FILE_GROUP_ZIP_NAME)); - - public static final Map<String, Object> FORMDATA_WITH_AFM_FILES = Map.of(FIELD_NAME_MAPPED_FILES, - Map.of( - ATTACHMENTS, AFM_ATTACHMMENTS, - REPRESENTATIONS, AFM_REPRESENTATIONS)); - - public static final Map<String, Object> FORMDATA_WITH_NO_ATTACHMENTS = Map.of(FIELD_NAME_MAPPED_FILES, - Map.of( - ATTACHMENTS, List.of(), - REPRESENTATIONS, FORMSOLUTIONS_REPRESENTATIONS)); - - // TODO Direkt im Test aufbauen oder FormDataTestFactory nutzen und hier den - // Code entfernen - public static FormData.FormDataBuilder createBuilder() { - return FormData.builder().formData(Map.of( - ZIP, ZIP_ENCODED)); - } - - public static List<IncomingFileGroup> createAttachments(List<IncomingFile> files, String name) { - return List.of(IncomingFileGroup.builder() - .name(name) - .files(files) - .build()); - } - - public static IncomingFile createFile(String name, byte[] content, String contentType) { - return IncomingFile.builder() - .name(name) - .content(content) - .contentType(contentType) - .size(content.length) - .build(); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java deleted file mode 100644 index 079da0827d5013e789cdacabb7dc43f0ffe011c8..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerMapperTest.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.common.formdata.AntragstellerTestFactory.*; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.Spy; - -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -class FormSolutionsAntragstellerMapperTest { - - @Spy - private final FormSolutionsAntragstellerMapper mapper = new FormSolutionsAntragstellerMapper(); - - @DisplayName("Parse formData") - @Nested - class TestParseFormData { - - private final FormData formData = FormSolutionsAntragstellerTestFactory.create(); - - @Test - void shouldCallBuildAntragsteller() { - parseFormData(); - - verify(mapper).buildAntragsteller(formData); - } - - @Test - void shouldCallRemoveProcessedData() { - parseFormData(); - - verify(mapper).buildAntragsteller(formData); - } - - @Test - void shouldReturnValue() { - var result = parseFormData(); - - assertThat(result).usingRecursiveComparison().ignoringFields("antragsteller", "formData").isEqualTo(formData); - } - - @Test - void shouldRemovePostkorbhandle() { - var result = parseFormData(); - - assertThat(result.getFormData()).doesNotContainKey(FormSolutionsAntragstellerMapper.POSTKORBHANDLE); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - - @DisplayName("build antragsteller") - @Nested - class TestBuildAntragsteller { - - @Test - void shouldHavePostfachId() { - var antragsteller = buildAntragsteller(); - - assertThat(antragsteller.getPostfachId()).isEqualTo(POSTFACH_ID); - } - - @Test - void shouldHaveVorname() { - var antragsteller = buildAntragsteller(); - - assertThat(antragsteller.getVorname()).isEqualTo(VORNAME); - } - - @Test - void shouldHaveNachname() { - var antragsteller = buildAntragsteller(); - - assertThat(antragsteller.getNachname()).isEqualTo(NACHNAME); - } - - private Antragsteller buildAntragsteller() { - return mapper.buildAntragsteller(formData); - } - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java deleted file mode 100644 index a1694d61e8e4e3296f5367a647e6f8b58179441a..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsAntragstellerTestFactory.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.common.formdata.AntragstellerTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsAntragstellerMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; - -import java.util.List; -import java.util.Map; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; - -class FormSolutionsAntragstellerTestFactory { - - static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1"; - - public static FormData create() { - return createBuilder().build(); - } - - public static FormData.FormDataBuilder createBuilder() { - return FormData.builder().formData(Map.of( - FormSolutionsAntragstellerMapper.POSTKORBHANDLE, POSTFACH_ID, - ASSISTANT, createAssistantMap())); - } - - private static Map<String, Object> createAssistantMap() { - return Map.of(PANELS, List.of( - Map.of(IDENTIFIER, ANTRAGSTELLER_PANEL_IDENTIFIER), - Map.of(COMPONENTS, createAntragstellerPanelContentList()))); - } - - private static List<Map<String, Object>> createAntragstellerPanelContentList() { - return List.of( - Map.of(IDENTIFIER, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER), - Map.of(COMPONENTS, List.of( - Map.of(IDENTIFIER, VORNAME_KEY, STRING_VALUE, VORNAME), - Map.of(IDENTIFIER, NACHNAME_KEY, STRING_VALUE, NACHNAME)))); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java deleted file mode 100644 index ea0e9dc201b0b7398c4b73009cafe3c8e4c98933..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTestFactory.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; - -import java.util.List; -import java.util.Map; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; - -class FormSolutionsEngineBasedAdapterTestFactory { - - public static final String ANLIEGEN_ID_VALUE = "1234"; - public static final String KOMMUNALVERWALTUNG_ID_VALUE = "100000000"; - - public static final String ASSISTANT_IDENTIFIER_VALUE = "root"; - public static final String PANELS_IDENTIFIER_VALUE = "panels"; - - public static FormData create() { - return createBuilder().build(); - } - - public static FormData.FormDataBuilder createBuilder() { - return FormDataTestFactory.createBuilder() - .formData(createFormDataMap()); - } - - private static Map<String, Object> createFormDataMap() { - return Map.of( - ASSISTANT, createAssistantMap(), - ANLIEGEN_ID, ANLIEGEN_ID_VALUE, - KOMMUNALVERWALTUNG_ID, KOMMUNALVERWALTUNG_ID_VALUE); - } - - private static Map<String, Object> createAssistantMap() { - return Map.of( - IDENTIFIER, ASSISTANT_IDENTIFIER_VALUE, - FormSolutionsPanelMapper.PANELS, List.of(createPanelMap())); - } - - private static Map<String, Object> createPanelMap() { - return Map.of( - IDENTIFIER, PANELS_IDENTIFIER_VALUE, - FormSolutionsPanelMapper.COMPONENTS, FormDataTestFactory.NESTED_LIST_WITH_OBJECTS); - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java deleted file mode 100644 index 4686f8d329f78055e89514cbd47b4d40cb80999b..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsFilesMapperTest.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; - -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AttachmentsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsFilesMapper.*; -import static org.assertj.core.api.Assertions.*; - -import java.util.List; -import java.util.Map; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; - -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; - -class FormSolutionsFilesMapperTest { - - private final FormSolutionsFilesMapper mapper = new FormSolutionsFilesMapper(); - - @Nested - class TestAttachmentMapping { - - private final String zipName = "attachments.zip"; - private final List<IncomingFileGroup> attachments = List.of( - IncomingFileGroupTestFactory.createBuilder().name(FILE_GROUP_ZIP_NAME).files( - List.of( - IncomingFileTestFactory.createBuilder() - .name(zipName) - .content(ZIP_DECODED) - .contentType(ZIP_CONTENT_TYPE) - .size(ZIP_DECODED.length) - .build(), - IncomingFileTestFactory.create())) - .build()); - - private final FormData formData = AttachmentsTestFactory.createBuilder().formData(Map.of(FIELD_NAME_MAPPED_FILES, - Map.of( - ATTACHMENTS, attachments, - REPRESENTATIONS, FORMSOLUTIONS_REPRESENTATIONS))) - .build(); - - @Test - void shouldParseFormSolutionAttachments() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getContent()).isEqualTo(ZIP_FILE_0_CONTENT.getBytes()); - } - - @Test - void shouldSetContentType() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getContentType()).isEqualTo(TXT_CONTENT_TYPE); - } - - @Test - void shouldSetFileName() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getName()).isEqualTo(FILE_NAME_ZIP_CONTENT_0); - } - - @Test - void shouldSetFileSize() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getSize()).isEqualTo(157L); - } - - @Test - void shouldSetFileId() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getFiles().get(0).getId()).isNotNull(); - } - - @Test - void shouldSetGroupName() { - var formData = parseFormData(); - - assertThat(formData.getAttachments().get(0).getName()).isEqualTo(EXTRAHIERTE_ATTACHMENTS); - } - - @Test - void shouldSetAttachmentNumber() { - var formData = parseFormData(); - - assertThat(formData.getNumberOfAttachments()).isEqualTo(2); - } - - private FormData parseFormData() { - return mapper.parseFormData(formData); - } - } - - @Nested - class TestEncryptedAttachments { - - private final FormData formData = FormData.builder().formData(Map.of(FIELD_NAME_MAPPED_FILES, FORMDATA_WITH_FORMSOLUTIONS_ATTACHMMENTS_ENCRYPTED)) - .build(); - - @Test - void shouldParseFormSolutionEncryptedAttachments() { - var parsedFormData = mapper.parseFormData(formData); - - assertThat(parsedFormData.getAttachments().get(0).getFiles()).hasSize(1); - assertThat(parsedFormData.getAttachments().get(0).getFiles().get(0).getContent()).isEqualTo(ZIP_ENCRYPTED_DECODED); - } - } - - @Nested - class TestMissingAttachments { - - private final FormData formData = FormDataTestFactory.createBuilder().clearAttachments().build(); - - @Test - void shouldHandleNoAttachments() { - var parsedFormData = mapper.parseFormData(formData); - - assertThat(parsedFormData.getAttachments()).isEmpty(); - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java similarity index 84% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapterTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java index 2deeb5590ab201554dd6d5711c85048252e9c2c0..f4fb91f618a14b084e8076d2d713aa8a0482ae5a 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/SemantikAdapterTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik; +package de.ozgcloud.eingang.semantik; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -32,10 +32,11 @@ import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.router.VorgangService; -import de.itvsh.kop.eingangsadapter.semantik.enginebased.EngineBasedSemantikAdapter; -import de.itvsh.kop.eingangsadapter.semantik.formbased.FormBasedSemantikAdapter; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.router.VorgangService; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.formbased.FormBasedSemantikAdapter; class SemantikAdapterTest { diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java new file mode 100644 index 0000000000000000000000000000000000000000..c05258ed519b5980e12529df25ef12f06854970a --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ZipAttachmentReaderTest.java @@ -0,0 +1,322 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.common; + +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.function.Predicate; +import java.util.zip.ZipException; +import java.util.zip.ZipInputStream; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.Spy; +import org.springframework.util.MimeTypeUtils; + +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.semantik.common.ReadZipException; +import de.ozgcloud.eingang.semantik.common.ZipAttachmentReader; +import lombok.SneakyThrows; + +class ZipAttachmentReaderTest { + private static final String TMP_DIRECTORY_PATH = System.getProperty("java.io.tmpdir"); + private static final String ZIP_1_FILE_NAME = "attachment-1file.zip"; + private static final String ZIP_ENCRYPTED = "attachment-encrypted.zip"; + + @Spy + private ZipAttachmentReader reader; + + @Nested + class TestReadZipAttachment { + + @Test + @SneakyThrows + @DisplayName("should save original zip to file system") + void shouldSaveOriginalZip() { + cleanupTempFiles(); + + createZipAttachment(ZIP_1_FILE_NAME); + + verifySourceFileSavedInTmpDirectory(); + } + + @SneakyThrows + private void verifySourceFileSavedInTmpDirectory() { + List<Path> foundFiles = Files.find(Path.of(getTmpDirectoryPath()), 1, + ((path, basicFileAttributes) -> path.getFileName().toString().startsWith(ZipAttachmentReader.SOURCE_ZIP_PREFIX))) + .toList(); + assertThat(foundFiles).hasSize(1).first(); + } + + @Test + @DisplayName("should return readable input stream for source zip file") + void shouldReturnSourceStream() { + var expectedContent = TestUtils.loadFile(ZIP_1_FILE_NAME); + + var sourceZipAsStream = createZipAttachment(ZIP_1_FILE_NAME).getSourceZipAsStream(); + + assertThat(sourceZipAsStream).hasSameContentAs(expectedContent); + } + + @Test + @DisplayName("should throw exception when reading encrypted ZIP") + void shouldFailSilentByEncryptedZip() { + var zipAttachment = createZipAttachment(ZIP_ENCRYPTED); + + assertThrows(ReadZipException.class, () -> zipAttachment.readContent()); + } + + private static ZipAttachmentReader createZipAttachment(String fileName) { + return ZipAttachmentReader.from(TestUtils.loadFile(fileName), fileName); + } + } + + @Nested + class TestReadZip { + + private static final String ZIP_2_FILE_NAME = "attachment-2files.zip"; + private static final String content_file_0_name = "zip-file-0.txt"; + private static final long content_file_0_size = getFileSize("zip-file-0.txt"); + private static final String content_file_1_name = "zip-file-1.txt"; + private static final long content_file_1_size = getFileSize("zip-file-1.txt"); + + private static Pair<String, Long> createContentPair(String fileName) { + var size = switch (fileName) { + case content_file_0_name -> content_file_0_size; + case content_file_1_name -> content_file_1_size; + default -> getFileSize(fileName); + }; + return Pair.of(fileName, size); + } + + @Test + @SneakyThrows + void shouldReadAllZipEntries() { + var zipContent = new ZipAttachmentReader().readContent(loadZip(ZIP_2_FILE_NAME)).stream() + .map(e -> Pair.of(e.getName(), e.getSize())).toList(); + + assertThat(zipContent).containsExactlyInAnyOrder(createContentPair(content_file_0_name), createContentPair(content_file_1_name)); + } + + @Test + @SneakyThrows + void shouldReadZipContent() { + var attachmentContentList = new ZipAttachmentReader().readContent(loadZip(ZIP_1_FILE_NAME)); + + assertThat(attachmentContentList).hasSize(1); + var contentEntry = attachmentContentList.get(0); + assertThat(contentEntry.getName()).isEqualTo(content_file_0_name); + assertThat(contentEntry.getSize()).isEqualTo(content_file_0_size); + assertThat(contentEntry.getContentStream()).hasSameContentAs(TestUtils.loadFile(content_file_0_name)); + } + + @Test + @SneakyThrows + void shouldSkipFolders() { + cleanupTempFiles(); + + var zipContent = new ZipAttachmentReader().readContent(loadZip("attachment-empty.zip")); + + assertThat(zipContent).isEmpty(); + assertTrue(noFilesWithSuffixInTempDirectory()); + } + + @Test + @DisplayName("should delete all temporary files after last reading of inputstream") + @SneakyThrows + void shouldDeleteContentFilesOnFinalRead() { + cleanupTempFiles(); + var contentEntries = new ZipAttachmentReader().readContent(loadZip(ZIP_2_FILE_NAME)); + + contentEntries.forEach(this::closeInputStreamFinalRead); + + assertTrue(noFilesWithSuffixInTempDirectory()); + } + + @SneakyThrows + private void closeInputStreamFinalRead(IncomingFile entry) { + entry.getContentStreamForFinalRead().close(); + } + + @Test + @DisplayName("should return readable input stream for source zip if cannot extract content") + void shouldReturnSourceStreamByError() { + var attachmentContent = new byte[] { 0, 1, 2, 3 }; + var attachment = ZipAttachmentReader.from(new ByteArrayInputStream(attachmentContent), "invalid"); + + assertThrows(ReadZipException.class, attachment::readContent); + + assertThat(attachment.getSourceZipAsStream()).hasSameContentAs(new ByteArrayInputStream(attachmentContent)); + } + + @Test + @DisplayName("should throw exception if ZIP is invalid.") + void shouldFailSilentByError() { + var invalidZip = new ByteArrayInputStream(new byte[] { 0, 1, 2, 3 }); + + var zipAttachment = ZipAttachmentReader.from(invalidZip, "invalid"); + + assertThrows(ReadZipException.class, () -> zipAttachment.readContent()); + } + + @Test + @SneakyThrows + void shouldFailByEncryptedZip() { + Assertions.assertThrows(ZipException.class, () -> new ZipAttachmentReader().readContent(loadZip(ZIP_ENCRYPTED))); + } + + } + + @SneakyThrows + private static ZipInputStream loadZip(String name) { + return new ZipInputStream(TestUtils.loadFile(name)); + } + + @Nested + class TestZipBombs { + + private static final String ZIP_BOMB_WITH_BIG_NULL_FILE_CONTENT = "zipbombs/filewithnulls.dat.zip"; + private static final String ZIP_BOMB_WITH_MANY_FILES = "zipbombs/filewithmanyfiles.dat.zip"; + + @Test + void shouldFailOnExtremCompressionRatio() { + var zip = loadZip(ZIP_BOMB_WITH_BIG_NULL_FILE_CONTENT); + + ReadZipException exception = assertThrows(ReadZipException.class, () -> reader.readContent(zip)); + + assertThat(exception.getMessage()).contains("Ratio between compressed and uncompressed data is highly suspicious"); + } + + @Test + @SneakyThrows + void shouldFailOnTotalExtractedSize() { + var zip = loadZip(ZIP_1_FILE_NAME); + reader.readContent(zip); + + verify(reader).checkTotalExtractedSize(157); + } + + @Test + void shouldFailOnTotalZipEntries() { + var zip = loadZip(ZIP_BOMB_WITH_MANY_FILES); + + ReadZipException exception = assertThrows(ReadZipException.class, () -> reader.readContent(zip)); + + assertThat(exception.getMessage()).contains("Total entries in zip file exceeded"); + } + } + + @Nested + class TestSaveFiles { + + @Test + @SneakyThrows + @DisplayName("should save file in temporary folder") + void shouldSaveFile() { + var systemTmpPathWithoutLastSlash = getTmpDirectoryPath(); + + var resultFile = reader.createLocalTempFile(); + + assertThat(resultFile).hasParent(systemTmpPathWithoutLastSlash); + } + + @Test + @SneakyThrows + @DisplayName("should save file with specific prefix and suffix") + void shouldSaveFileByName() { + var resultFileName = new ZipAttachmentReader() + .createLocalTempFile().getName(); + + assertThat(resultFileName) + .startsWith(ZipAttachmentReader.TARGET_ATTACHMENT_PREFIX) + .endsWith(ZipAttachmentReader.TMP_FILE_SUFFIX); + } + } + + @Nested + class TestContentType { + + @Test + void shouldReturnDefaultWhenNullString() { + assertThrows(NullPointerException.class, () -> reader.getContentType(null)); + } + + @Test + void shouldReturnDefaultWhenEmptyString() { + var contentType = new ZipAttachmentReader().getContentType(StringUtils.EMPTY); + + assertThat(contentType).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); + } + + @Test + void shouldReturnDefaultWhenSpaceString() { + var contentType = new ZipAttachmentReader().getContentType(StringUtils.SPACE); + + assertThat(contentType).isEqualTo(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE); + } + + @Test + void shouldGetContentType() { + var fileNames = List.of("1.xml", "2.txt"); + + var contentTypes = fileNames.stream().map(new ZipAttachmentReader()::getContentType).toList(); + + assertThat(contentTypes).containsExactlyInAnyOrder(MimeTypeUtils.APPLICATION_XML_VALUE, MimeTypeUtils.TEXT_PLAIN_VALUE); + } + } + + private static final Predicate<Path> hasNameSuffix = p -> p.getFileName().toString().endsWith(ZipAttachmentReader.TMP_FILE_SUFFIX); + + @SneakyThrows + private static void cleanupTempFiles() { + Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).filter(hasNameSuffix).map(Path::toFile).forEach(File::delete); + } + + @SneakyThrows + private static boolean noFilesWithSuffixInTempDirectory() { + return Files.walk(Path.of(TMP_DIRECTORY_PATH), 1).noneMatch(hasNameSuffix); + } + + @SneakyThrows + private static long getFileSize(String fileName) { + Path filePath = Path.of(ZipAttachmentReaderTest.class.getClassLoader().getResource(fileName).toURI()); + return Files.size(filePath); + } + + private static String getTmpDirectoryPath() { + return TMP_DIRECTORY_PATH.endsWith("/") ? TMP_DIRECTORY_PATH.substring(0, TMP_DIRECTORY_PATH.length() - 1) : TMP_DIRECTORY_PATH; + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d4b20456e5e6e9b2d40def7ae69aa9c097060be2 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/FilesMapperHelperTest.java @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased; + +import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; +import static org.assertj.core.api.Assertions.*; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; + +class FilesMapperHelperTest { + + @Nested + class TestExtractData { + + @Test + void shouldReturnMappedFiles() { + Map<String, String> expectedResult = Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE); + var mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, (Object) expectedResult); + + var extractedMappedFiles = FilesMapperHelper.getMappedFiles(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedMappedFiles.get()).isEqualTo(expectedResult); + } + + @Test + void shouldHandleMissingFiles() { + var extractedMappedFiles = FilesMapperHelper.getMappedFiles(FormDataTestFactory.withFormDataMaps(Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE))); + + assertThat(extractedMappedFiles).isEmpty(); + } + + @Test + void shouldReturnAttachedFileGroups() { + var incomingFileGroups = List.of(IncomingFileGroupTestFactory.create()); + Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, + Map.of(FilesMapperHelper.ATTACHMENTS, incomingFileGroups)); + + var extractedAttachments = FilesMapperHelper.getAttachedFileGroups(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedAttachments.get()).isEqualTo(incomingFileGroups); + } + + @Nested + class getAttachedFiledGroups { + @Test + void shouldHandleMissingFileGroups() { + Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE)); + + var extractedFileGroups = FilesMapperHelper.getAttachedFileGroups(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedFileGroups).isEmpty(); + } + } + + @Test + void souldReturnRepresentations() { + var incomingFileGroups = List.of(IncomingFileTestFactory.create()); + Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, + Map.of(FilesMapperHelper.REPRESENTATIONS, incomingFileGroups)); + + var extractedRepresentations = FilesMapperHelper.getRepresentations(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedRepresentations.get()).isEqualTo(incomingFileGroups); + } + + @Test + void shouldHandleMissingFileRepresentations() { + Map<String, Object> mappedFilesMap = Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE)); + + var extractedRepresentations = FilesMapperHelper.getRepresentations(FormDataTestFactory.withFormDataMaps(mappedFilesMap)); + + assertThat(extractedRepresentations).isEmpty(); + } + } + + @Nested + class TestAttachmentCount { + + @Test + void shouldCountEmptyList() { + var counter = FilesMapperHelper.countAttachedFiles(List.of()); + + assertThat(counter).isZero(); + } + + @Test + void shouldCountNoAttachedFiles() { + var counter = FilesMapperHelper.countAttachedFiles(List.of(IncomingFileGroupTestFactory.createBuilder().clearFiles().build())); + + assertThat(counter).isZero(); + } + + @Test + void shouldCountOneAttachment() { + var fileGroup = List.of(IncomingFileGroupTestFactory.createBuilder().file(IncomingFileTestFactory.create()).build()); + + var counter = FilesMapperHelper.countAttachedFiles(fileGroup); + + assertThat(counter).isEqualTo(2); + } + + @Test + void shouldCountAllAttachments() { + var counter = FilesMapperHelper.countAttachedFiles(createFileGroupsWith4Files()); + + assertThat(counter).isEqualTo(4); + } + + private static List<IncomingFileGroup> createFileGroupsWith4Files() { + return List.of(IncomingFileGroupTestFactory.createBuilder() + .clearFiles() + .files(List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create(), IncomingFileTestFactory.create())).build(), + IncomingFileGroupTestFactory.create()); + + } + } + + @Nested + class TestRemoveProcessedData { + + @Test + @DisplayName("should remove processed mapped files from raw form data") + void shouldRemoveProcessedDataOnly() { + var rawFormData = Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE, FilesMapperHelper.FIELD_NAME_MAPPED_FILES, new Object()); + + var cleanedFormData = FilesMapperHelper.removeProcessedData(withFormDataMaps(rawFormData)).getFormData(); + + assertThat(cleanedFormData) + .doesNotContainKey(FilesMapperHelper.FIELD_NAME_MAPPED_FILES) + .containsEntry(SIMPLE_VALUE_KEY, SIMPLE_VALUE); + } + + @Test + @DisplayName("should not change any other data") + void shouldNotChangeOtherFields() { + FormData formData = create(); + + var cleanedFormData = FilesMapperHelper.removeProcessedData(formData); + + assertThat(cleanedFormData.getId()).isEqualTo(formData.getId()); + assertThat(cleanedFormData.getHeader()).isEqualTo(formData.getHeader()); + assertThat(cleanedFormData.getZustaendigeStelle()).isEqualTo(formData.getZustaendigeStelle()); + assertThat(cleanedFormData.getAntragsteller()).isEqualTo(formData.getAntragsteller()); + assertThat(cleanedFormData.getNumberOfAttachments()).isEqualTo(formData.getNumberOfAttachments()); + assertThat(cleanedFormData.getAttachments()).isEqualTo(formData.getAttachments()); + assertThat(cleanedFormData.getNumberOfRepresentations()).isEqualTo(formData.getNumberOfRepresentations()); + assertThat(cleanedFormData.getRepresentations()).isEqualTo(formData.getRepresentations()); + assertThat(cleanedFormData.getFormData()).containsAllEntriesOf(formData.getFormData()); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..2f551fd0cdc3025a8c3470dedcb27c6e2d8c47b5 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java @@ -0,0 +1,194 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmHeaderTestFactory; + +class ServiceKontoBuildHelperTest { + + @Spy + @InjectMocks + private ServiceKontoBuildHelper helper; + + @DisplayName("OSI service konto") + @Nested + class TestOsiServiceKonto { + + private static final FormData FORM_DATA = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); + + @DisplayName("with configured postfach") + @Nested + class TestWithConfiguredPostfach { + + private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); + + @BeforeEach + void mockBuildPostfachAddresses() { + doReturn(List.of(POSTFACH_ADDRESS)).when(helper).buildPostfachAddresses(any(), any()); + } + + @Test + void shouldContainsType() { + var serviceKonto = getServiceKonto(FORM_DATA); + + assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_TYPE_OSI); + } + + @Test + void shouldContainsPostfachAddresses() { + var serviceKonto = getServiceKonto(FORM_DATA); + + assertThat(serviceKonto.getPostfachAddresses()).hasSize(1); + assertThat(serviceKonto.getPostfachAddresses().get(0)).isEqualTo(POSTFACH_ADDRESS); + } + + @Test + void shouldBuildPostfachAddresses() { + getServiceKonto(FORM_DATA); + + verify(helper).buildPostfachAddresses(any(), any()); + } + } + + private ServiceKonto getServiceKonto(FormData formData) { + return helper.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); + } + + @DisplayName("postfach addresses") + @Nested + class TestBuildPostfachAddresses { + + @DisplayName("with rest_response_name") + @Nested + class TestWithRestResponseName { + + @Test + void shouldCallBuildAddresses() { + getPostfachAddresses(); + + verify(helper).buildOsiPostfachV1Address(any(), anyInt()); + } + + @Test + void shouldReturnPostfachAddresses() { + var addresses = getPostfachAddresses(); + + assertThat(addresses).hasSize(1); + assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); + assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) + .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); + assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_VERSION); + assertThat(addresses.get(0).getType()).isEqualTo(PostfachAddressTestFactory.POSTFACH_ADDRESS_TYPE); + } + + private List<PostfachAddress> getPostfachAddresses() { + return buildServiceKonto(FORM_DATA).getPostfachAddresses(); + } + } + + @DisplayName("without rest_response_name") + @Nested + class TestWithoutRestResponseName { + + private static final FormData FORM_DATA_WITHOUT_REST_RESPONSE_NAME = FormDataUtils.from(FORM_DATA) + .remove(ServiceKontoBuildHelper.REST_RESPONSE_NAME).build(); + + @Test + void shouldBuildDefault() { + getPostfachAddresses(); + + verify(helper).buildDefault(AfmHeaderTestFactory.POSTFACH_NAME_ID); + } + + @Test + void shouldReturnPostfachAddresses() { + var addresses = getPostfachAddresses(); + + assertThat(addresses).hasSize(1); + + assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); + + assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) + .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); + assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_VERSION); + assertThat(addresses.get(0).getType()).isEqualTo(1); + } + + private List<PostfachAddress> getPostfachAddresses() { + return buildServiceKonto(FORM_DATA_WITHOUT_REST_RESPONSE_NAME).getPostfachAddresses(); + } + } + + private ServiceKonto buildServiceKonto(FormData formData) { + return helper.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); + } + } + } + + @Nested + class TestBayernIdServiceKonto { + + private static final String POSTFACH_ID = "postfach-id"; + private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); + + @Test + void shouldSetType() { + var serviceKonto = buildBayernIdServiceKonto(); + + assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_TYPE_BAYERN_ID); + } + + @Test + void shouldSetPostfachAddress() { + doReturn(POSTFACH_ADDRESS).when(helper).buildPostfachAddress(any()); + + var serviceKonto = buildBayernIdServiceKonto(); + + assertThat(serviceKonto.getPostfachAddresses()).containsOnly(POSTFACH_ADDRESS); + } + + ServiceKonto buildBayernIdServiceKonto() { + return helper.buildBayernIdServiceKonto(POSTFACH_ID); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6be19b831ca7d247a1e287ec5a69c185a3eefadc --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java @@ -0,0 +1,264 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.NullAndEmptySource; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; + +class AfmAntragstellerHeaderMapperTest { + + @Spy + @InjectMocks + private AfmAntragstellerHeaderMapper mapper; + + @Nested + class TestParseAntragstellerData { + + @Test + void shouldCallGetHeaders() { + var formData = FormData.builder().build(); + doReturn(Collections.emptyMap()).when(mapper).getHeaders(any()); + + mapper.parseAntragstellerData(formData); + + verify(mapper).getHeaders(formData); + } + + @Test + void shouldCallBuildAntragsteller() { + var headerMap = AfmHeaderTestFactory.createCustomHeaderMap(); + doReturn(headerMap).when(mapper).getHeaders(any()); + + mapper.parseAntragstellerData(FormData.builder().build()); + + verify(mapper).buildAntragsteller(headerMap); + } + + @Test + void shouldSetAntragsteller() { + var antragsteller = AntragstellerTestFactory.create(); + doReturn(antragsteller).when(mapper).buildAntragsteller(any()); + + var result = mapper.parseAntragstellerData(FormData.builder().build()); + + assertThat(result.getAntragsteller()).isEqualTo(antragsteller); + } + + @Nested + class TestBuildAntragsteller { + + private Map<String, Object> headers = AfmHeaderTestFactory.createCustomHeaderMap(); + @Test + void shouldSetPostfachId() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getPostfachId()).isEqualTo(AfmHeaderTestFactory.CUSTOM_POSTFACH_ID); + } + + @Test + void shouldSetVorname() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getVorname()).isEqualTo(AfmHeaderTestFactory.CUSTOM_VORNAME); + } + + @Test + void shouldSetNachname() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getNachname()).isEqualTo(AfmHeaderTestFactory.CUSTOM_NACHNAME); + } + + @Test + void shouldSetGeburtsname() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getGeburtsname()).isEqualTo(AfmHeaderTestFactory.CUSTOM_GEBURTSNAME); + } + + @Test + void shouldSetGeburtsort() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getGeburtsort()).isEqualTo(AfmHeaderTestFactory.CUSTOM_GEBURTSORT); + } + + @Test + void shoudlSetEmail() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getEmail()).isEqualTo(AfmHeaderTestFactory.CUSTOM_EMAIL); + } + + @Test + void shouldSetTelefon() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getTelefon()).isEqualTo(AfmHeaderTestFactory.CUSTOM_TELEFON); + } + + @Test + void shouldSetStrasse() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getStrasse()).isEqualTo(AfmHeaderTestFactory.CUSTOM_STRASSE); + } + + @Test + void shouldSetPlz() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getPlz()).isEqualTo(AfmHeaderTestFactory.CUSTOM_PLZ); + } + + @Test + void shouldSetOrt() { + var result = mapper.buildAntragsteller(headers); + + assertThat(result.getOrt()).isEqualTo(AfmHeaderTestFactory.CUSTOM_ORT); + } + } + } + + @Nested + class TestIsResponsible { + + @Mock + private FormData formData; + + @Test + void shouldApproveResponsibility() { + doReturn(true).when(mapper).isPostfachIdNotBlank(any()); + doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123")).when(mapper).getHeaders(any()); + + var isResponsible = mapper.isResponsible(formData); + + assertTrue(isResponsible); + } + + @Nested + class TestDenyResponsibility { + + @Test + void shouldDenyWhenNoHeader() { + doReturn(Collections.emptyMap()).when(mapper).getHeaders(any()); + + var isResponsible = mapper.isResponsible(FormData.builder().build()); + + assertFalse(isResponsible); + } + + @Test + void shouldDenyWhenNoPostfachId() { + doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_VORNAME, "name")).when(mapper).getHeaders(any()); + + var isResponsible = mapper.isResponsible(formData); + + assertFalse(isResponsible); + } + + void shouldDenyWhenPostfachIdIsBlank() { + doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, null)).when(mapper).getHeaders(any()); + doReturn(false).when(mapper).isPostfachIdNotBlank(any()); + + var isResponsible = mapper.isResponsible(formData); + + assertFalse(isResponsible); + } + + @Nested + class TestIsPostfachIdNotBlank { + + @ParameterizedTest + @NullAndEmptySource + void shouldReturnFalseWhenPostfachIdIsBlank(String postfachId) { + var isNotBlank = mapper.isPostfachIdNotBlank(postfachId); + + assertFalse(isNotBlank); + } + + @Test + void shouldApprove() { + var isNotBlank = mapper.isPostfachIdNotBlank("123"); + + assertTrue(isNotBlank); + } + + @Test + void shouldFailOnUnexpectedType() { + var postfachId = new Object(); + + assertThrows(TechnicalException.class, () -> mapper.isPostfachIdNotBlank(postfachId)); + } + } + } + } + + @Nested + class TestGetHeaders { + + @Test + void shouldReturnHeaders() { + var headers = createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123"); + var formData = FormData.builder().formData(createHeaders(AfmHeaderMapper.HEADER_FIELD, headers)).build(); + + var result = mapper.getHeaders(formData); + + assertThat(result).isEqualTo(headers); + } + + @Test + void shouldReturnEmptyMapWhenNoHeaders() { + var formData = FormData.builder().build(); + + var result = mapper.getHeaders(formData); + + assertThat(result).isEmpty(); + } + } + + private Map<String, Object> createHeaders(String key, Object value) { + var map = new HashMap<String, Object>(); + map.put(key, value); + return map; + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..451fedee7b550cb37fea776391a259ed06d095dc --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java @@ -0,0 +1,219 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.HashMap; +import java.util.UUID; + +import org.assertj.core.data.MapEntry; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; + +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper; + +class AfmAntragstellerMapperTest { + + @InjectMocks + private AfmAntragstellerMapper mapper; + + @Mock + private AfmAntragstellerHeaderMapper antragstellerHeaderMapper; + + private FormData formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap()).build(); + + @DisplayName("Parse form data") + @Nested + class TestParseFormData { + + @Test + void shouldCallHeaderMapper() { + FormData expectedFormData = mock(FormData.class); + when(antragstellerHeaderMapper.isResponsible(any())).thenReturn(true); + when(antragstellerHeaderMapper.parseAntragstellerData(any())).thenReturn(expectedFormData); + + var processedFormData = parseFormData(formData); + + assertThat(processedFormData).isEqualTo(expectedFormData); + } + + @Test + void shouldDoNothingOnNullAntragstaller() { + var formData = FormData.builder().formData(new HashMap<>()).build(); + + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData).usingRecursiveComparison().ignoringFields(AfmAntragstellerMapper.ANTRAGSTELLER).isEqualTo(formData); + } + + @Test + void shouldMapAntragsteller() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") + .isEqualTo(AfmAntragstellerTestFactory.create()); + } + + @Test + @DisplayName("should map antragsteller when key starts with an uppercase letter") + void shouldMapAntragstellerUppercase() { + formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).build(); + + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") + .isEqualTo(AfmAntragstellerTestFactory.create()); + } + + @Test + @DisplayName("should map only antragsteller key when both present") + void shouldMapOnlyOneKey() { + var expectedAntragsteller = AfmAntragstellerTestFactory.createBuilder().anrede("anrede").vorname("firstName").nachname("lastName").build(); + + var parsedFormData = parseFormData(createFormData(expectedAntragsteller)); + + assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison().ignoringFields("data") + .isEqualTo(expectedAntragsteller); + } + + private FormData createFormData(Antragsteller antragsteller) { + var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE); + var antragstelleMap = AfmAntragstellerTestFactory.createAntragstelleMap( + MapEntry.entry(AfmAntragstellerMapper.ANREDE, antragsteller.getAnrede()), + MapEntry.entry(AfmAntragstellerMapper.VORNAME, antragsteller.getVorname()), + MapEntry.entry(AfmAntragstellerMapper.NACHNAME, antragsteller.getNachname()) + ); + formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstelleMap); + return FormData.builder().formData(formDataMap).build(); + } + + @DisplayName("map antragsteller data") + @Nested + class TestMapAntragstellerData { + + @Test + void shouldMapPostfachId() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller().getPostfachId()).isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID); + } + + @DisplayName("with mapped and not mapped value") + @Nested + class TestWithMappedAndNotMappedValue { + + private static final String NOT_MAPPED_FIELD = "not_mapped_value"; + private static final String NOT_MAPPED_VALUE = UUID.randomUUID().toString(); + + private FormData formData; + + @BeforeEach + void buildFormData() { + var antragstellerMap = AfmAntragstellerTestFactory.createAntragstelleMap(MapEntry.entry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE)); + + var formDataMap = new HashMap<String, Object>(); + formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstellerMap); + + formData = FormData.builder().formData(formDataMap).build(); + } + + @Test + void shouldNotContainDuplicateValues() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller().getData()).doesNotContainKeys( + AfmAntragstellerMapper.ANREDE, + AfmAntragstellerMapper.EMAIL, + AfmAntragstellerMapper.GEBURTSDATUM, + AfmAntragstellerMapper.GEBURTSNAME, + AfmAntragstellerMapper.GEBURTSORT, + AfmAntragstellerMapper.NACHNAME, + AfmAntragstellerMapper.VORNAME, + AfmAntragstellerMapper.TELEFON, + AfmAntragstellerMapper.STRASSE, + AfmAntragstellerMapper.HAUSNUMMER, + AfmAntragstellerMapper.ORT, + AfmAntragstellerMapper.PLZ); + } + + @Test + void shouldMoveNotMappedFieldsToDataMap() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getAntragsteller().getData()).containsEntry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE); + } + } + } + + @DisplayName("remove fields") + @Nested + class TestRemoveFields { + + @Test + void shouldRemoveAntragsteller() { + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER)).isNull(); + } + + @Test + @DisplayName("should remove Antragsteller when key starts with an uppercase latter") + void shouldRemoveAntragstellerUppercase() { + formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).build(); + + var parsedFormData = parseFormData(formData); + + assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).isNull(); + } + + @Test + @DisplayName("should remove only 'antragsteller' key when both present") + void shouldRemoveOnlyOneKey() { + var parsedFormData = parseFormData(createFormData()); + + assertThat(parsedFormData.getFormData().get(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).isNotNull(); + } + + private FormData createFormData() { + var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE); + formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createAntragstelleMap()); + return FormData.builder().formData(formDataMap).build(); + } + } + } + + private FormData parseFormData(FormData formData) { + return mapper.parseFormData(formData); + } +} diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java similarity index 84% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerTestFactory.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java index 06b00f2ddf981dd461cd475c77c781b475484c48..71d67b726a390ccd8481251291c594c0350e0d33 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmAntragstellerTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import java.util.Arrays; import java.util.Collections; @@ -31,7 +31,8 @@ import java.util.UUID; import org.assertj.core.data.MapEntry; -import de.itvsh.kop.eingangsadapter.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper; public class AfmAntragstellerTestFactory { @@ -72,10 +73,18 @@ public class AfmAntragstellerTestFactory { } public static Map<String, Object> createFormDataMap() { + return createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER); + } + + public static Map<String, Object> createFormDataMap(String antragstellerKey) { + return Collections.unmodifiableMap(createMutableFormDataMap(antragstellerKey)); + } + + public static Map<String, Object> createMutableFormDataMap(String antragstellerKey) { var map = new HashMap<String, Object>(); + map.put(antragstellerKey, createAntragstelleMap()); map.put(AfmAntragstellerMapper.POSTFACH_ID, POSTFACH_ID); - map.put(AfmAntragstellerMapper.ANTRAGSTELLER, createAntragstelleMap()); - return Collections.unmodifiableMap(map); + return map; } @SafeVarargs diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapperTest.java similarity index 72% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapperTest.java index f2ab3e95d9ffaeb76fb16434079aebdbded5175b..0a27ca32047f7cacfbc15282f5789ae976bd80b8 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmFilesMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAttachedFilesMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,39 +21,42 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import static org.assertj.core.api.Assertions.*; import java.util.List; import java.util.Map; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAttachedFilesMapper; + import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroup; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileGroupTestFactory; -import de.itvsh.kop.eingangsadapter.common.formdata.IncomingFileTestFactory; - -class AfmFilesMapperTest { +class AfmAttachedFilesMapperTest { @Spy @InjectMocks - private AfmFilesMapper mapper; + private AfmAttachedFilesMapper mapper; private IncomingFileGroup attachmentWithMultipleFiles = IncomingFileGroupTestFactory.createBuilder() .name("anotherAttachment") + .clearFiles() .files(List.of(IncomingFileTestFactory.create(), IncomingFileTestFactory.create())) .build(); private FormData formData = FormDataTestFactory.createBuilder() .clearAttachments() - .formData(Map.of(AbstractFileMapper.FIELD_NAME_MAPPED_FILES, - Map.of(AbstractFileMapper.ATTACHMENTS, List.of(IncomingFileGroupTestFactory.create(), attachmentWithMultipleFiles)))) + .formData(Map.of(FilesMapperHelper.FIELD_NAME_MAPPED_FILES, + Map.of(FilesMapperHelper.ATTACHMENTS, List.of(IncomingFileGroupTestFactory.create(), attachmentWithMultipleFiles)))) .build(); @Nested @@ -93,7 +96,7 @@ class AfmFilesMapperTest { void shouldRemoveFilesFromMap() { var parsedFormData = parseFormData(); - assertThat(parsedFormData.getFormData().get(AbstractFileMapper.FIELD_NAME_MAPPED_FILES)).isNull(); + assertThat(parsedFormData.getFormData().get(FilesMapperHelper.FIELD_NAME_MAPPED_FILES)).isNull(); } private FormData parseFormData() { diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java similarity index 79% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java index a69b82c1e1ab16432573ff5c9bf7e8aaad1ec2b2..eb3b64368316a8a072fc2cda37787c09724ebf11 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEmpfangeneStelleMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEmpfangeneStelleMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import static org.assertj.core.api.Assertions.*; @@ -33,8 +33,10 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEmpfangeneStelleMapper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedMapper; class AfmEmpfangeneStelleMapperTest { @@ -59,7 +61,7 @@ class AfmEmpfangeneStelleMapperTest { void shouldAddControlNode() { var mapped = mapper.parseFormData(formData); - assertThat(getEmpfangeneStelle(mapped.getFormData())).containsKey(AfmEmpfangeneStelleMapper.KOP_CONTROLDATA_NODENAME); + assertThat(getEmpfangeneStelle(mapped.getFormData())).containsKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME); } @SuppressWarnings("unchecked") @@ -68,8 +70,8 @@ class AfmEmpfangeneStelleMapperTest { var mapped = mapper.parseFormData(formData); assertThat((Map<String, Object>) getEmpfangeneStelle(mapped.getFormData()) - .get(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME)) - .containsEntry(AfmZustaendigeStelleMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); + .get(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)) + .containsEntry(AfmEngineBasedMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); } @SuppressWarnings("unchecked") diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..55c3ff4c0ba4e7703297e0354b968f0febddb78c --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmEngineBasedAdapterTest.java @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.springframework.test.util.ReflectionTestUtils; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedAdapter; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedMapper; + +class AfmEngineBasedAdapterTest { + + @Spy + @InjectMocks + private AfmEngineBasedAdapter adapter; + @Spy + private List<EngineBasedMapper> mappers; + @Mock + private AfmEngineBasedMapper mapper; + + @DisplayName("Parse form data") + @Nested + class TestParseFromData { + + private final Map<String, Object> formDataMap = Map.of(AfmAntragstellerMapper.POSTFACH_ID, "postfachIdValue"); + private final FormData formData = FormData.builder().formData(formDataMap).build(); + + @BeforeEach + void mockMappers() { + ReflectionTestUtils.setField(adapter, "mappers", Collections.singletonList(mapper)); + } + + @BeforeEach + void mockEngineBasedMapper() { + when(mapper.parseFormData(any())).thenReturn(formData); + } + + @Test + void shouldCallMappers() { + adapter.parseFormData(formData); + + verify(mapper).parseFormData(formData); + } + + @Test + void shouldRemoveProcessedData() { + adapter.parseFormData(formData); + + verify(adapter).removeProcessedData(formData); + } + + @Test + void shouldRemovePostfachId() { + var mappedFormData = adapter.parseFormData(formData); + + assertThat(mappedFormData.getFormData()).doesNotContainKey(AfmAntragstellerMapper.POSTFACH_ID); + } + } +} diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java similarity index 79% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java index ec967cb20d818f3dd02ff1b630ee4c913ed42eb0..9dc147fc7346018c2985d5d05456278a4bd7df48 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmErklaerungenMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmErklaerungenMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import static org.assertj.core.api.Assertions.*; @@ -33,8 +33,10 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmEngineBasedMapper; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmErklaerungenMapper; class AfmErklaerungenMapperTest { @@ -59,7 +61,7 @@ class AfmErklaerungenMapperTest { void shouldAddControlNode() { var mapped = mapper.parseFormData(formData); - assertThat(getErklaerungenStelle(mapped.getFormData())).containsKey(AfmEmpfangeneStelleMapper.KOP_CONTROLDATA_NODENAME); + assertThat(getErklaerungenStelle(mapped.getFormData())).containsKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME); } @SuppressWarnings("unchecked") @@ -68,8 +70,8 @@ class AfmErklaerungenMapperTest { var mapped = mapper.parseFormData(formData); assertThat((Map<String, Object>) getErklaerungenStelle(mapped.getFormData()) - .get(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME)) - .containsEntry(AfmZustaendigeStelleMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); + .get(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)) + .containsEntry(AfmEngineBasedMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); } @SuppressWarnings("unchecked") diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..2e1265d1259963878175051a88d39c633121a6fe --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java @@ -0,0 +1,226 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Map; +import java.util.Optional; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; + +class AfmHeaderMapperTest { + + @Spy + @InjectMocks + private AfmHeaderMapper mapper; + @Mock + private ServiceKontoBuildHelper serviceKontoBuildHelper; + + @DisplayName("Parse form data") + @Nested + class TestParseFormData { + + @DisplayName("map form header") + @Nested + class TestMapFormHeader { + + private static final FormData FORM_DATA = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); + + @Test + void shouldKeepHeader() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getFormData().get(AfmHeaderMapper.HEADER_FIELD)).isNotNull(); + } + + @DisplayName("fields") + @Nested + class TestFields { + + @Test + void shouldMapRequestId() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getRequestId()).isEqualTo(AfmHeaderTestFactory.ID); + } + + @Test + void shouldMapCreatedAt() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getCreatedAt()).isEqualTo(AfmHeaderTestFactory.TIMESTAMP); + } + + @Test + void shouldMapFormId() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getFormId()).isEqualTo(AfmHeaderTestFactory.FORM_ID); + } + + @Test + void shouldMapFormName() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getFormName()).isEqualTo(AfmHeaderTestFactory.FORM); + } + + @Test + void shouldMapSender() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getSender()).isEqualTo(AfmHeaderTestFactory.SENDER); + } + + @Test + void shouldSetFormEngineName() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getHeader().getFormEngineName()).isEqualTo(AfmHeaderMapper.AFM_FORMENGINE_NAME); + } + + @DisplayName("service konto") + @Nested + class TestServiceKonto { + + @DisplayName("OSI") + @Nested + class TestOsiServiceKonto { + @Test + void shouldCallBuildServiceKontoIfPresent() { + parseFormData(); + + verify(serviceKontoBuildHelper).buildOsiServiceKonto(any(), eq(FORM_DATA)); + } + + @Test + void shouldNotCallBuildServiceKontoIfNotExists() { + mapper.parseFormData(FormDataUtils.from(FORM_DATA).remove(AfmHeaderMapper.POSTFACH_NAME_ID).build()); + + verify(serviceKontoBuildHelper, never()).buildOsiServiceKonto(any(), any()); + } + } + + @DisplayName("BayernID") + @Nested + class TestBayernId { + + @Mock + private FormData formData; + @Mock + private ServiceKonto serviceKonto; + + @Test + void shouldCallCreateBayernIdServiceKonto() { + var formData = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMapWithExtendedHeaders()).build(); + + mapper.parseFormData(formData); + + verify(mapper).createBayernIdServiceKonto(formData); + } + + @Test + void shouldReturnServiceKonto() { + doReturn(Optional.of("id")).when(mapper).getPostfachId(any()); + when(serviceKontoBuildHelper.buildBayernIdServiceKonto(any())).thenReturn(serviceKonto); + + var parsedFormData = mapper.createBayernIdServiceKonto(formData); + + assertThat(parsedFormData).isPresent().get().isEqualTo(serviceKonto); + } + + @Test + void shouldNotCallServiceKontoBuildHelper() { + doReturn(Optional.empty()).when(mapper).getPostfachId(any()); + + mapper.createBayernIdServiceKonto(formData); + + verify(serviceKontoBuildHelper, never()).buildBayernIdServiceKonto(any()); + } + } + } + } + + private FormData parseFormData() { + return mapper.parseFormData(FORM_DATA); + } + } + + @DisplayName("remove mapped data") + @Nested + class TestRemoveMappedData { + + private final FormData formData = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); + + @Test + void shouldRemoveRestResponseName() { + var parsedFormData = parseFormData(); + + assertThat(parsedFormData.getFormData().get(ServiceKontoBuildHelper.REST_RESPONSE_NAME)).isNull(); + } + + private FormData parseFormData() { + return mapper.parseFormData(formData); + } + } + } + + @Nested + class TestGetPostfachId { + + @Mock + private FormData formData; + + @Test + void shouldReturnPostfachId() { + doReturn(Map.of(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, AfmAntragstellerTestFactory.POSTFACH_ID)).when(mapper).getHeaderMap(any()); + + var postfachId = mapper.getPostfachId(formData); + + assertThat(postfachId).isPresent().get().isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID); + } + + @Test + void shouldReturnEmpty() { + doReturn(null).when(mapper).getHeaderMap(any()); + + var postfachId = mapper.getPostfachId(formData); + + assertThat(postfachId).isEmpty(); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..817c217e8d8186dd187f78dda6948ee2f3a07063 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; + +public class AfmHeaderTestFactory { + + public static final String ID = UUID.randomUUID().toString(); + public static final String TIMESTAMP = "2020-11-18T09:09:27.627Z"; + public static final String FORM_ID = "waffen/kleinerWaffenschein"; + public static final String FORM = "Kleiner Waffenschein gem. § 10 Abs. 4 Satz 4 Waffengesetz (WaffG)"; + public static final String SENDER = "afm.schleswig-holstein.de"; + + public static final String CUSTOM_POSTFACH_ID = "postfach_id"; + public static final String CUSTOM_VORNAME = "vorname"; + public static final String CUSTOM_NACHNAME = "nachname"; + public static final String CUSTOM_GEBURTSNAME = "Geburtsname"; + public static final String CUSTOM_GEBURTSORT = "geburtsort"; + public static final String CUSTOM_EMAIL = "email"; + public static final String CUSTOM_TELEFON = "telefon"; + public static final String CUSTOM_STRASSE = "strasse"; + public static final String CUSTOM_PLZ = "plz"; + public static final String CUSTOM_ORT = "ort"; + + public static final String POSTFACH_NAME_ID = "name-id-value"; + + public static final int REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE_VALUE = 1; + + public static Map<String, Object> createFormDataMap() { + var map = new HashMap<String, Object>(); + map.put(AfmHeaderMapper.HEADER_FIELD, createHeaderMap()); + map.put(AfmHeaderMapper.POSTFACH_NAME_ID, POSTFACH_NAME_ID); + map.put(ServiceKontoBuildHelper.REST_RESPONSE_NAME, List.of(createRestResponseNameMap())); + + return map; + } + + @SuppressWarnings("unchecked") + public static Map<String, Object> createFormDataMapWithExtendedHeaders() { + var map = new HashMap<>(createFormDataMap()); + ((Map<String, Object>) map.get(AfmHeaderMapper.HEADER_FIELD)).putAll(createCustomHeaderMap()); + return map; + } + + public static Map<String, Object> createHeaderMap() { + var map = new HashMap<String, Object>(); + map.put(AfmHeaderMapper.ID, ID); + map.put(AfmHeaderMapper.TIMESTAMP, TIMESTAMP); + map.put(AfmHeaderMapper.FORM_ID, FORM_ID); + map.put(AfmHeaderMapper.FORM, FORM); + map.put(AfmHeaderMapper.SENDER, SENDER); + return map; + } + + public static Map<String, Object> createCustomHeaderMap() { + var map = new HashMap<String, Object>(); + map.put(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, CUSTOM_POSTFACH_ID); + map.put(AfmAntragstellerHeaderMapper.KEY_VORNAME, CUSTOM_VORNAME); + map.put(AfmAntragstellerHeaderMapper.KEY_NACHNAME, CUSTOM_NACHNAME); + map.put(AfmAntragstellerHeaderMapper.KEY_GEBURTSNAME, CUSTOM_GEBURTSNAME); + map.put(AfmAntragstellerHeaderMapper.KEY_GEBURTSORT, CUSTOM_GEBURTSORT); + map.put(AfmAntragstellerHeaderMapper.KEY_EMAIL, CUSTOM_EMAIL); + map.put(AfmAntragstellerHeaderMapper.KEY_TELEFON, CUSTOM_TELEFON); + map.put(AfmAntragstellerHeaderMapper.KEY_STRASSE, CUSTOM_STRASSE); + map.put(AfmAntragstellerHeaderMapper.KEY_PLZ, CUSTOM_PLZ); + map.put(AfmAntragstellerHeaderMapper.KEY_ORT, CUSTOM_ORT); + return map; + } + + public static Map<String, Object> createRestResponseNameMap() { + return Map.of(ServiceKontoBuildHelper.REST_RESPONSE_NAME_MEMBER_SCOPE, List.of(createRestResponseNameMemberScopeMap())); + } + + private static Map<String, Object> createRestResponseNameMemberScopeMap() { + return Map.of(ServiceKontoBuildHelper.REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE, REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE_VALUE); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java similarity index 72% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java index 79c53555884a8df252546823046c1fff4b9bacfa..eed8d1ff976835e597a94b4cc4d025712e8e6b89 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; @@ -32,10 +32,11 @@ import java.util.Map; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; +import org.mockito.Mock; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; class AfmZustaendigeStelleMapperTest { @@ -43,6 +44,9 @@ class AfmZustaendigeStelleMapperTest { @Spy private AfmZustaendigeStelleMapper mapper; + @Mock + private ZustaendigeStelleMetadataMapper zustaendigeStelleMetadataMapper; + @Nested class TestParseFormData { @@ -65,14 +69,14 @@ class AfmZustaendigeStelleMapperTest { void shouldReturnFormDataOnNonExistingZustaendigeStelleAndOrganisationseinheitenId() { var emptyFormData = FormData.builder().formData(new HashMap<String, Object>()).build(); - var parsedFormData = parseFormData(emptyFormData); + var parsedFormData = parseZustaendigeStelleData(emptyFormData); assertThat(parsedFormData).isEqualTo(emptyFormData); } @Test void shouldMapOrganisationseinheitenId() { - var parsedFormData = parseFormData(formData); + var parsedFormData = parseZustaendigeStelleData(formData); assertThat(parsedFormData.getZustaendigeStelle().getOrganisationseinheitenId()) .isEqualTo(AfmZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID); @@ -80,17 +84,39 @@ class AfmZustaendigeStelleMapperTest { @Test void shouldMapBezeichnung() { - var parsedFormData = parseFormData(formData); + var parsedFormData = parseZustaendigeStelleData(formData); assertThat(parsedFormData.getZustaendigeStelle().getBezeichnung()).isEqualTo(BEZEICHNUNG); } @Test void shouldMapEmail() { - var parsedFormData = parseFormData(formData); + var parsedFormData = parseZustaendigeStelleData(formData); assertThat(parsedFormData.getZustaendigeStelle().getEmail()).isEqualTo(AfmZustaendigeStelleTestFactory.EMAIL); } + + @Test + void shouldCallparseZustaendigeStelleData() { + parseFormData(formData); + + verify(mapper).parseZustaendigeStelleData(formData); + } + + @Test + void shouldCallParseBayernMetadata() { + when(zustaendigeStelleMetadataMapper.isResponsible(any())).thenReturn(true); + var expectedFormData = FormDataTestFactory.create(); + when(zustaendigeStelleMetadataMapper.parseZustaendigeStelleData(any())).thenReturn(expectedFormData); + + var resultFormData = parseFormData(formData); + + assertThat(resultFormData).isEqualTo(expectedFormData); + } + + private FormData parseZustaendigeStelleData(FormData formData) { + return mapper.parseZustaendigeStelleData(formData); + } } @Nested @@ -98,7 +124,7 @@ class AfmZustaendigeStelleMapperTest { private FormData formData = FormDataTestFactory .withFormDataMaps( - Map.of(FormDataTestFactory.NESTED_LIST_WITH_OBJECTS_KEY, (Object) FormDataTestFactory.NESTED_LIST_OBJECTS_ELEMENT_1), + Map.of(FormDataTestFactory.NESTED_LIST_WITH_OBJECTS_KEY, FormDataTestFactory.NESTED_LIST_OBJECTS_ELEMENT_1), AfmZustaendigeStelleTestFactory.createFormDataMap()); @Test @@ -112,7 +138,7 @@ class AfmZustaendigeStelleMapperTest { void shouldHaveControlNode() { var edited = mapper.addMetaDataFlag(formData); - assertThat(getZustaendigeStelle(edited)).containsKey(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME); + assertThat(getZustaendigeStelle(edited)).containsKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME); } @SuppressWarnings("unchecked") @@ -120,12 +146,12 @@ class AfmZustaendigeStelleMapperTest { void shouldSetFlagToTrue() { var edited = mapper.addMetaDataFlag(formData); - assertThat((Map<String, Object>) getZustaendigeStelle(edited).get(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME)) - .containsEntry(AfmZustaendigeStelleMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); + assertThat((Map<String, Object>) getZustaendigeStelle(edited).get(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)) + .containsEntry(AfmEngineBasedMapper.CONTROLDATA_METADATA_PROPERTYNAME, "true"); } @Test - void shouldDoNothingIfNoZuständigeStelle() { + void shouldDoNothingIfNoZustaendigeStelle() { var formDataMap = AfmZustaendigeStelleTestFactory.createFormDataMap(); formDataMap.remove(AfmZustaendigeStelleMapper.ZUSTAENDIGESTELLE); var formData = FormDataTestFactory.createBuilder().formData(formDataMap).build(); @@ -144,7 +170,7 @@ class AfmZustaendigeStelleMapperTest { .filter(entry -> entry.getKey() != AfmZustaendigeStelleMapper.ZUSTAENDIGESTELLE) .filter(entry -> entry.getValue() instanceof Map) .forEach(entry -> assertThat((Map<String, ?>) entry.getValue()) - .doesNotContainKey(AfmZustaendigeStelleMapper.KOP_CONTROLDATA_NODENAME)); + .doesNotContainKey(AfmEngineBasedMapper.KOP_CONTROLDATA_NODENAME)); } private Map<String, Object> getZustaendigeStelle(Map<String, Object> formDataMap) { diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java similarity index 90% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleTestFactory.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java index cfa11a315062d65ce72487647f72258788fdaf63..c8ae7a3f54ea214cdf8e9699794475e8bde92780 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmZustaendigeStelleTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmZustaendigeStelleTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,12 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.afm; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmZustaendigeStelleMapper; + public class AfmZustaendigeStelleTestFactory { public static final String ORGANISATIONSEINHEITEN_ID = UUID.randomUUID().toString(); diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..ca3d2ad83879caac99dfd3f489129666775ba3df --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleDataTestFactory.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleMetadataMapper.*; + +import java.util.List; +import java.util.Map; + +import de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleData.ZustaendigeStelleDataBuilder; + +public class ZustaendigeStelleDataTestFactory { + public static final String BEHOERDE_ANZEIGE_NAME = "Landratsamt XYZ (Testbehörde für BDA)"; + public static final String BEHOERDE_CALLER_ID = "87331322433"; + public static final String GEMEINDE_SCHLUESSEL_BP = "09189155"; + public static final String BEHOERDE_EMAIL = "poststelle@testbehoerde.bayern"; + public static final String AMTLICHER_REGIONALSCHLUESSEL = "091890000000"; + public static final String BEHOERDE_HAUSANSCHRIFT_STRASSE = "Teststraße 1"; + public static final String BEHOERDE_HAUSANSCHRIFT_ORT = "Musterstadt"; + public static final String BEHOERDE_HAUSANSCHRIFT_PLZ = "12345"; + public static final String BEHOERDE_TELEFON = "+49 123 45-0"; + + public static final Map<String, String> BEHOERDE_METADATA = Map.of( + KEY_BEHOERDE_ANZEIGE_NAME, BEHOERDE_ANZEIGE_NAME, + KEY_BEHOERDE_CALLER_ID, BEHOERDE_CALLER_ID, + KEY_GEMEINDE_SCHLUESSEL_BP, GEMEINDE_SCHLUESSEL_BP, + KEY_BEHOERDE_EMAIL, BEHOERDE_EMAIL, + KEY_AMTLICHER_REGIONALSCHLUESSEL, AMTLICHER_REGIONALSCHLUESSEL, + KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE, BEHOERDE_HAUSANSCHRIFT_STRASSE, + KEY_BEHOERDE_HAUSANSCHRIFT_ORT, BEHOERDE_HAUSANSCHRIFT_ORT, + KEY_BEHOERDE_HAUSANSCHRIFT_PLZ, BEHOERDE_HAUSANSCHRIFT_PLZ, + KEY_BEHOERDE_TELEFON, BEHOERDE_TELEFON + ); + + public static final List<ZustaendigeStelleData.Field> ZUSTAENDIGE_STELLE_DATA_FIELDS = List.of( + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_ANZEIGE_NAME) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_ANZEIGE_NAME).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_CALLER_ID) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_CALLER_ID).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_GEMEINDE_SCHLUESSEL_BP) + .value(ZustaendigeStelleDataTestFactory.GEMEINDE_SCHLUESSEL_BP).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_EMAIL).value(ZustaendigeStelleDataTestFactory.BEHOERDE_EMAIL) + .build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_AMTLICHER_REGIONALSCHLUESSEL) + .value(ZustaendigeStelleDataTestFactory.AMTLICHER_REGIONALSCHLUESSEL).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_HAUSANSCHRIFT_STRASSE) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_STRASSE).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_HAUSANSCHRIFT_ORT) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_ORT).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_HAUSANSCHRIFT_PLZ) + .value(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_PLZ).build(), + ZustaendigeStelleMetadataFieldTestFactory.createBuilder().name(KEY_BEHOERDE_TELEFON).value(ZustaendigeStelleDataTestFactory.BEHOERDE_TELEFON) + .build() + ); + + public static ZustaendigeStelleData create() { + return createBuilder().build(); + } + + public static ZustaendigeStelleDataBuilder createBuilder() { + return ZustaendigeStelleData.builder() + .fields(ZUSTAENDIGE_STELLE_DATA_FIELDS); + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..13c6c2615549cdd2e056fef0d6d3bdc4f7129b2c --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataFieldTestFactory.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleData.Field; +import de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleData.Field.FieldBuilder; + +public class ZustaendigeStelleMetadataFieldTestFactory { + + public static final String FIELD_NAME = "name"; + public static final String FIELD_VALUE = "value"; + + public static Field create() { + return createBuilder().build(); + } + + public static FieldBuilder createBuilder() { + return Field.builder() + .name(FIELD_NAME) + .value(FIELD_VALUE); + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..1c203e4f5b3f82c7176af72b9841f6c536dabb8b --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperITCase.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static de.ozgcloud.eingang.semantik.enginebased.afm.ZustaendigeStelleMetadataMapper.*; +import static org.assertj.core.api.Assertions.*; + +import java.io.File; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import de.ozgcloud.common.test.ITCase; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import lombok.SneakyThrows; + +@ITCase +class ZustaendigeStelleMetadataMapperITCase { + + @Autowired + private ZustaendigeStelleMetadataMapper mapper; + + private IncomingFile behoerdeMetadataXml; + + @SneakyThrows + @BeforeEach + void setUp() { + behoerdeMetadataXml = IncomingFileTestFactory.createBuilder() + .name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) + .file(new File(TestUtils.class.getClassLoader().getResource(BEHOERDE_METADATA_FILE_NAME).toURI())).build(); + + } + + @Test + void shouldReadXmlNodes() { + var metadata = mapper.readXmlContent(behoerdeMetadataXml); + + assertThat(metadata).get().extracting("fields").asList().usingRecursiveFieldByFieldElementComparator() + .containsAll(ZustaendigeStelleDataTestFactory.ZUSTAENDIGE_STELLE_DATA_FIELDS); + } + + @SneakyThrows + @Test + void shouldCatchException() { + var zustaendigeStelleData = mapper.readXmlContent(IncomingFileTestFactory.createBuilder().file(new File("broken-file")).build()); + + assertThat(zustaendigeStelleData).isEmpty(); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d186e662c89f926ca0e14ea58e9988f924ae0ddf --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/ZustaendigeStelleMetadataMapperTest.java @@ -0,0 +1,196 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.afm; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.io.File; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; + +import com.fasterxml.jackson.dataformat.xml.XmlMapper; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; +import lombok.SneakyThrows; + +class ZustaendigeStelleMetadataMapperTest { + + @Spy + @InjectMocks + private ZustaendigeStelleMetadataMapper mapper; + + @Mock + private XmlMapper xmlMapper; + + @Nested + class TestParseBehoerdeMetadata { + + private IncomingFile behoerdeMetadataFile; + + private FormData formData; + + @BeforeEach + void setUp() { + behoerdeMetadataFile = IncomingFileTestFactory.createBuilder().name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) + .build(); + formData = FormDataTestFactory.createBuilder() + .zustaendigeStelle(null) + .representation(behoerdeMetadataFile).build(); + } + + @SneakyThrows + @Test + void shouldCallReadBehoerdeMetadata() { + doReturn(ZustaendigeStelleDataTestFactory.BEHOERDE_METADATA).when(mapper).readZustaendigeStelleMetadata(behoerdeMetadataFile); + + mapper.parseZustaendigeStelleData(formData); + + verify(mapper).readZustaendigeStelleMetadata(behoerdeMetadataFile); + } + + @Test + void shouldCallMapZustaendigeStelle() { + var behoerdeMetadata = Map.of("key", "value"); + doReturn(behoerdeMetadata).when(mapper).readZustaendigeStelleMetadata(behoerdeMetadataFile); + + mapper.parseZustaendigeStelleData(formData); + + verify(mapper).mapZustaendigeStelle(behoerdeMetadata); + } + + @Test + void shouldSetParsedZustaendigeStelle() { + doReturn(Map.of("key", "value")).when(mapper).readZustaendigeStelleMetadata(any()); + var zustaendigeStelle = ZustaendigeStelleTestFactory.create(); + doReturn(zustaendigeStelle).when(mapper).mapZustaendigeStelle(any()); + + var result = mapper.parseZustaendigeStelleData(formData); + + assertThat(result.getZustaendigeStelle()).isEqualTo(zustaendigeStelle); + } + } + + @Nested + class TestReadBehoerdeMetadata { + + + private File brokenFile; + + + } + + @Nested + class TestMapZuestaendigeStelle { + + @Test + void shouldSetBezeichnung() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getBezeichnung()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_ANZEIGE_NAME); + } + + @Test + void shouldSetOrganisationEinheitId() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getOrganisationseinheitenId()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_CALLER_ID); + } + + @Test + void shouldSetGemeindeSchluessel() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getGemeindeSchluessel()).isEqualTo(ZustaendigeStelleDataTestFactory.GEMEINDE_SCHLUESSEL_BP); + } + + @Test + void shouldSetEmail() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getEmail()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_EMAIL); + } + + @Test + void shouldSetAmtlicherRegionalSchluessel() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getAmtlicherRegionalSchluessel()).isEqualTo(ZustaendigeStelleDataTestFactory.AMTLICHER_REGIONALSCHLUESSEL); + } + + @Test + void shouldSetHausanschriftStrasse() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getHausanschriftStrasse()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_STRASSE); + } + + @Test + void shouldSetHausanschriftOrt() { + var zusatendigeStelle = mapZustaendigeStelle(); + + assertThat(zusatendigeStelle.getHausanschriftOrt()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_ORT); + } + + @Test + void shouldSetHausanschriftPlz() { + var zustaendigeStelle = mapZustaendigeStelle(); + + assertThat(zustaendigeStelle.getHausanschriftPlz()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_HAUSANSCHRIFT_PLZ); + } + + @Test + void shouldSetTelefon() { + var zusatendigeStelle = mapZustaendigeStelle(); + + assertThat(zusatendigeStelle.getTelefon()).isEqualTo(ZustaendigeStelleDataTestFactory.BEHOERDE_TELEFON); + } + + private ZustaendigeStelle mapZustaendigeStelle() { + return mapper.mapZustaendigeStelle(ZustaendigeStelleDataTestFactory.BEHOERDE_METADATA); + } + } + + @Test + void shouldApproveResponsibility() { + var formData = FormDataTestFactory.createBuilder() + .representation(IncomingFileTestFactory.createBuilder().name(ZustaendigeStelleMetadataMapper.BEHOERDE_METADATA_FILE_NAME) + .build()).build(); + + var isResponsible = mapper.isResponsible(formData); + + assertThat(isResponsible).isTrue(); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..eac3362fb702344a162f55763458eea73087bda8 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormCycleEngineBasedAdapterTest.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formcycle; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.test.util.ReflectionTestUtils; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; + +class FormCycleEngineBasedAdapterTest { + + @InjectMocks + private FormCycleEngineBasedAdapter adapter; + + @Mock + private FormcycleEngineBasedMapper mapper; + @Mock + private FormData formData; + + @BeforeEach + void setup() { + ReflectionTestUtils.setField(adapter, "mappers", List.of(mapper)); + } + + @Test + void shouldParseFormData() { + adapter.parseFormData(formData); + + verify(mapper).parseFormData(formData); + } + + @Test + void shouldNotRemoveParsedFormData() { + when(mapper.parseFormData(any())).thenReturn(formData); + + var result = adapter.parseFormData(FormDataTestFactory.create()); + + assertThat(result).isSameAs(formData); + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..b6b446882c2ccfc447862af6697899b70e6537c4 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java @@ -0,0 +1,221 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formcycle; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; + +class FormcycleAntragstellerMapperTest { + + @Spy + @InjectMocks + private FormcycleAntragstellerMapper mapper; + + private static final String VALUE_KEY = "value"; + private static final String LABEL_KEY = "label"; + private static final Map<String, Object> ANTRAGSTELLER_DATA = new HashMap<>(); + private static final Map<String, Object> ANTRAGSTELLER_MAP = Map.of("fsBKAllDaten", Map.of(VALUE_KEY, ANTRAGSTELLER_DATA)); + + @BeforeAll + static void fillAntragstellerData() { + ANTRAGSTELLER_DATA.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede")); + ANTRAGSTELLER_DATA.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME)); + ANTRAGSTELLER_DATA.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname")); + ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname")); + ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum")); + ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort")); + ANTRAGSTELLER_DATA.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail")); + ANTRAGSTELLER_DATA.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon")); + ANTRAGSTELLER_DATA.put("tfAntragstellerAdresse", Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER)); + ANTRAGSTELLER_DATA.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ)); + ANTRAGSTELLER_DATA.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT)); + } + + @Nested + class TestParseFormData { + + @Mock + private Antragsteller antragsteller; + + @Test + void shouldCallGetAntragsteller() { + mapper.parseFormData(buildFormData()); + + verify(mapper).getAntragstellerData(ANTRAGSTELLER_MAP); + } + + @Test + void shouldCallBuildAntragsteller() { + doReturn(Optional.of(ANTRAGSTELLER_DATA)).when(mapper).getAntragstellerData(anyMap()); + + mapper.parseFormData(buildFormData()); + + verify(mapper).buildAntragsteller(ANTRAGSTELLER_DATA); + } + + @Test + void shouldSetAntragsteller() { + doReturn(antragsteller).when(mapper).buildAntragsteller(anyMap()); + + var formData = mapper.parseFormData(buildFormData()); + + assertThat(formData.getAntragsteller()).isSameAs(antragsteller); + } + + @Test + void shouldReturnSameFormData() { + var formData = FormDataTestFactory.create(); + + var result = mapper.parseFormData(formData); + + assertThat(result).isSameAs(formData); + } + + FormData buildFormData() { + return FormData.builder().formData(ANTRAGSTELLER_MAP).build(); + } + } + + @Nested + class TestGetAntragstellerData { + + @Test + void shouldReturnEmpty() { + Map<String, Object> formDataMap = Map.of("key", "value"); + + var result = mapper.getAntragstellerData(formDataMap); + + assertThat(result).isEmpty(); + } + + @Test + void shouldReturnAntragstellerData() { + var result = mapper.getAntragstellerData(ANTRAGSTELLER_MAP); + + assertThat(result).contains(ANTRAGSTELLER_DATA); + } + } + + @Nested + class TestBuildAntragsteller { + + @Test + void shouldSetAnrede() { + var result = buildAntragsteller(); + + assertThat(result.getAnrede()).isEqualTo(AntragstellerTestFactory.ANREDE); + } + + @Test + void shouldSetVorname() { + var result = buildAntragsteller(); + + assertThat(result.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); + } + + @Test + void shouldSetNachname() { + var result = buildAntragsteller(); + + assertThat(result.getNachname()).isEqualTo(AntragstellerTestFactory.NACHNAME); + } + + @Test + void shouldSetGeburtsname() { + var result = buildAntragsteller(); + + assertThat(result.getGeburtsname()).isEqualTo(AntragstellerTestFactory.GEBURTSNAME); + } + + @Test + void shouldSetGeburtsdatum() { + var result = buildAntragsteller(); + + assertThat(result.getGeburtsdatum()).isEqualTo(AntragstellerTestFactory.GEBURTSDATUM); + } + + @Test + void shouldSetGeburtsort() { + var result = buildAntragsteller(); + + assertThat(result.getGeburtsort()).isEqualTo(AntragstellerTestFactory.GEBURTSORT); + } + + @Test + void shouldSetEmail() { + var result = buildAntragsteller(); + + assertThat(result.getEmail()).isEqualTo(AntragstellerTestFactory.EMAIL); + } + + @Test + void shouldSetTelefon() { + var result = buildAntragsteller(); + + assertThat(result.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); + } + + @Test + void shouldSetAdresse() { + var result = buildAntragsteller(); + + assertThat(result.getStrasse()).isEqualTo(AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER); + } + + @Test + void shouldSetPlz() { + var result = buildAntragsteller(); + + assertThat(result.getPlz()).isEqualTo(AntragstellerTestFactory.PLZ); + } + + @Test + void shouldSetOrt() { + var result = buildAntragsteller(); + + assertThat(result.getOrt()).isEqualTo(AntragstellerTestFactory.ORT); + } + + Antragsteller buildAntragsteller() { + return mapper.buildAntragsteller(ANTRAGSTELLER_DATA); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..bc41d1599f9be931fda60865e64a7de5040fd577 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsAntragstellerMapperTest.java @@ -0,0 +1,132 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; + +import static de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory.*; +import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper.*; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.Antragsteller; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.IdentifierValueParser; + +class FormSolutionsAntragstellerMapperTest { + + @Spy + private final FormSolutionsAntragstellerMapper mapper = new FormSolutionsAntragstellerMapper(); + + @DisplayName("Parse formData") + @Nested + class TestParseFormData { + private static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1"; + private static final List<Map<String, Object>> ANTRAGSTELLER_PANEL_CONTENT_LIST = List.of( + Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER), + Map.of(COMPONENTS, List.of( + Map.of(IDENTIFIER_KEY, VORNAME_KEY, STRING_VALUE, VORNAME), + Map.of(IDENTIFIER_KEY, NACHNAME_KEY, STRING_VALUE, NACHNAME)))); + + private static final Map<String, Object> ASSISTANT_MAP = Map.of(PANELS, List.of( + Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_PANEL_IDENTIFIER), + Map.of(COMPONENTS, ANTRAGSTELLER_PANEL_CONTENT_LIST))); + + private final FormData formData = FormDataTestFactory.createBuilder().antragsteller(null) + .formData(Map.of( + SIMPLE_VALUE_KEY, SIMPLE_VALUE, + FormSolutionsAntragstellerMapper.POSTKORBHANDLE, POSTFACH_ID, + ASSISTANT, ASSISTANT_MAP)) + .build(); + + @Test + void shouldParseAntragsteller() { + var expectedAntragsteller = Antragsteller.builder().vorname(VORNAME).nachname(NACHNAME).postfachId(POSTFACH_ID).build(); + var identifierValueMap = Map.of(VORNAME_KEY, VORNAME, NACHNAME_KEY, NACHNAME); + try (var valuesParser = mockStatic(IdentifierValueParser.class)) { + valuesParser.when(() -> IdentifierValueParser.parsePanelsData(any())).thenReturn(identifierValueMap); + + var resultFormData = parseFormData(); + + assertThat(resultFormData.getAntragsteller()).usingRecursiveComparison().isEqualTo(expectedAntragsteller); + } + } + + @Test + @DisplayName("should process Antragsteller data only") + void shouldNotChangeAnother() { + var resultFormData = parseFormData(); + + assertThat(resultFormData).usingRecursiveComparison().ignoringFields("antragsteller", "formData").isEqualTo(formData); + assertThat(resultFormData.getFormData()).containsAllEntriesOf( + Map.of(SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE, ASSISTANT, ASSISTANT_MAP)); + } + + private FormData parseFormData() { + return mapper.parseFormData(formData); + } + + @DisplayName("build antragsteller") + @Nested + class TestBuildAntragsteller { + + @Test + void shouldHaveVorname() { + var antragsteller = buildAntragsteller(); + + assertThat(antragsteller.getVorname()).isEqualTo(VORNAME); + } + + @Test + void shouldHaveNachname() { + var antragsteller = buildAntragsteller(); + + assertThat(antragsteller.getNachname()).isEqualTo(NACHNAME); + } + + @Test + void shouldHavePostfachId() { + var antragsteller = buildAntragsteller(); + + assertThat(antragsteller.getPostfachId()).isEqualTo(POSTFACH_ID); + } + + private Antragsteller buildAntragsteller() { + return mapper.buildAntragsteller(formData); + } + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java similarity index 74% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java index 6ef28c2dc30a107c33fefdd9b9f7a0e01ede4353..9dc89c3895c7aebb66f5a5ec10fad2cc6444aad0 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterITCase.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterITCase.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,14 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AbstractFileMapper.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.AttachmentsTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; import static org.assertj.core.api.Assertions.*; -import java.util.List; +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Map; import java.util.Optional; @@ -43,14 +43,25 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import de.itvsh.kop.common.test.TestUtils; -import de.itvsh.kop.eingangsadapter.common.errorhandling.TechnicalException; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter; +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import lombok.SneakyThrows; @SpringBootTest @ActiveProfiles({ "local", "itcase" }) public class FormSolutionsEngineBasedAdapterITCase { + + private static final String ZIP_CONTENT_TYPE = "application/zip"; + private static final String FILE_NAME_ZIP_ATTACHMENT = "attachment-2files.zip"; + public static final String FILE_NAME_PDF_REP = "eingang.pdf"; + public static final String FILE_NAME_JSON_REP = "form-data.json"; + @MockBean private SemantikAdapter semantikAdapter; @@ -87,13 +98,6 @@ public class FormSolutionsEngineBasedAdapterITCase { assertThat(data.getAntragsteller()).isNotNull(); } - @Test - void shouldMapPostfachId() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getAntragsteller().getPostfachId()).isEqualTo("51522620-03d2-4507-b1f0-08d86920efed"); - } - @Test void shouldMapVorname() { var data = engineAdapter.parseFormData(formData); @@ -111,11 +115,18 @@ public class FormSolutionsEngineBasedAdapterITCase { @Nested class TestAttachments { + @Test + void shouldBeEmptyForNoAttachments() { + var data = engineAdapter.parseFormData(FormDataTestFactory.createBuilder().clearAttachments().build()); + + assertThat(data.getAttachments()).isEmpty(); + } + @Test void shouldMap() { var data = engineAdapter.parseFormData(formData); - assertThat(data.getAttachments()).isNotNull(); + assertThat(data.getAttachments()).isNotEmpty(); } @Test @@ -221,24 +232,6 @@ public class FormSolutionsEngineBasedAdapterITCase { } } - @Nested - class TestRepresentations { - @Test - void shouldMap() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getRepresentations()).isNotEmpty(); - } - - @Test - void shouldMapRepresentations() { - var data = engineAdapter.parseFormData(formData); - - assertThat(data.getRepresentations().get(0)).isNotNull(); - assertThat(data.getNumberOfRepresentations()).isEqualTo(2); - } - } - @Nested class TestZutaendigeStelle { @Test @@ -258,24 +251,38 @@ public class FormSolutionsEngineBasedAdapterITCase { } private FormData prepareTestData() { - var formsolutionsAttachments = createAttachments(List.of( - createFile(FILE_NAME_ZIP_ATTACHMENT, ZIP_DECODED, ZIP_CONTENT_TYPE)), FILE_GROUP_ZIP_NAME); - - Map<String, Object> plainMap = getTestDataFromFile(); - plainMap.put(FIELD_NAME_MAPPED_FILES, Map.of( - ATTACHMENTS, formsolutionsAttachments, REPRESENTATIONS, FORMSOLUTIONS_REPRESENTATIONS)); + var fileGroup = IncomingFileGroupTestFactory.createBuilder() + .name(FormSolutionsFilesMapper.FILE_GROUP_ZIP_NAME) + .clearFiles() + .file(IncomingFileTestFactory.createBuilder() + .name(FILE_NAME_ZIP_ATTACHMENT) + .file(asFile(FILE_NAME_ZIP_ATTACHMENT)) + .size(getFileSize(FILE_NAME_ZIP_ATTACHMENT)) + .contentType(ZIP_CONTENT_TYPE) + .build()) + .build(); + + return FormData.builder().formData(getTestDataFromFile()).attachment(fileGroup).build(); + } - return FormData.builder().formData(plainMap).build(); + @SneakyThrows + private long getFileSize(String fileName) { + Path filePath = Path.of(FormSolutionsEngineBasedAdapterITCase.class.getClassLoader().getResource(fileName).toURI()); + return Files.size(filePath); } private Map<String, Object> getTestDataFromFile() { try { var testData = TestUtils.loadTextFile("formsolutions001.json"); - return objectMapper.readValue(testData, new TypeReference<Map<String, Object>>() { + return objectMapper.readValue(testData, new TypeReference<>() { }); } catch (JsonProcessingException e) { var msg = Optional.ofNullable(e.getCause()).map(Throwable::getMessage).orElseGet(e::getMessage); throw new TechnicalException("Error parsing test JSON " + msg, e); } } + + private File asFile(String path) { + return TempFileUtils.writeTmpFile(TestUtils.loadFile(path)); + } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java similarity index 69% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java index 57251ef748719cacfc59dd2ae5ac9c0a23e55e82..66dd5319ec181ab48b58563d2cc149a9b1beab3c 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsEngineBasedAdapterTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsEngineBasedAdapterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,14 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.Collections; +import java.util.Map; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -39,7 +40,11 @@ import org.mockito.Mock; import org.mockito.Spy; import org.springframework.test.util.ReflectionTestUtils; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedMapper; class FormSolutionsEngineBasedAdapterTest { @@ -53,7 +58,7 @@ class FormSolutionsEngineBasedAdapterTest { @Nested class TestParseFormData { - private final FormData formData = FormSolutionsEngineBasedAdapterTestFactory.create(); + private final FormData formData = FormDataTestFactory.create(); @BeforeEach void mockMappers() { @@ -78,19 +83,15 @@ class FormSolutionsEngineBasedAdapterTest { verify(adapter).removeProcessedData(formData); } - @Test - void shouldReturnValue() { - doReturn(formData).when(adapter).removeProcessedData(any()); - - var result = adapter.parseFormData(formData); - - assertThat(result).isEqualTo(formData); - } - @DisplayName("remove processed data") @Nested class TestRemoveProcessedData { + private final Map<String, Object> formDataMap = Map.of(ASSISTANT, "testValue", + ANLIEGEN_ID, "testValue2", KOMMUNALVERWALTUNG_ID, "testValue3", + FormSolutionsAntragstellerMapper.POSTKORBHANDLE, "testValue4"); + private final FormData formData = FormData.builder().formData(formDataMap).build(); + @Test void shouldRemoveAssistant() { var cleanedFormData = adapter.removeProcessedData(formData); @@ -111,6 +112,13 @@ class FormSolutionsEngineBasedAdapterTest { assertThat(cleanedFormData.getFormData()).doesNotContainKey(KOMMUNALVERWALTUNG_ID); } + + @Test + void shouldRemovePostkorbhandle() { + var cleanedFormData = adapter.removeProcessedData(formData); + + assertThat(cleanedFormData.getFormData()).doesNotContainKey(FormSolutionsAntragstellerMapper.POSTKORBHANDLE); + } } } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..69fd45eb5b3b7f1db2fc5be240c11af3a469f222 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsFilesMapperTest.java @@ -0,0 +1,204 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Stream; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; +import de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsFilesMapper.ZippedAttachmentsProcessor; + +class FormSolutionsFilesMapperTest { + + private static final String ATTACHMENT_ZIP_FILE_NAME = "attachments.zip"; + private static final String ZIP_CONTENT_TYPE = "application/zip"; + + @Spy + @InjectMocks + private final FormSolutionsFilesMapper mapper = new FormSolutionsFilesMapper(); + + @Nested + class TestParseFormData { + @Test + void shouldCallReadAttachments() { + mapper.parseFormData(FormDataTestFactory.create()); + + verify(mapper).readAttachments(any()); + } + + @Test + void shouldAddGroup() { + var attachmentGroup = IncomingFileGroupTestFactory.create(); + doReturn(List.of(attachmentGroup)).when(mapper).readAttachments(any()); + + var result = mapper.parseFormData(FormDataTestFactory.create()); + + assertThat(result.getAttachments()).containsOnly(attachmentGroup); + } + + @Test + void shouldHaveNoAttachmentIfMissing() { + doReturn(Collections.emptyList()).when(mapper).readAttachments(any()); + + var result = mapper.parseFormData(FormDataTestFactory.create()); + + assertThat(result.getAttachments()).isEmpty(); + } + + } + + @Nested + class TestZippedAttachmentsProcessor { + + private final List<IncomingFileGroup> attachments = new ArrayList<>(); + + private final ZippedAttachmentsProcessor processor = spy(mapper.new ZippedAttachmentsProcessor(attachments)); + + @Nested + class Process { + + @BeforeEach + void fillAttachmentList() { + attachments.add(IncomingFileGroupTestFactory.create()); + when(processor.nonZipFileGroups()).thenReturn(Stream.empty()); + } + + @Test + void shouldCallExtractAttachments() { + processor.process(); + + verify(processor).extractAttachments(); + } + + @Test + void shouldReturnExtractedGroups() { + var expected = IncomingFileTestFactory.create(); + doReturn(Stream.of(expected)).when(processor).extractAttachments(); + + var result = processor.process(); + + assertThat(result).flatMap(IncomingFileGroup::getFiles).containsOnly(expected); + } + + @Test + void shouldReturnEmptyIfNoAttachments() { + attachments.clear(); + + var result = processor.process(); + + assertThat(result).isEmpty(); + } + } + + @Nested + class ExtractAttachments { + + @Captor + private ArgumentCaptor<IncomingFile> fileCaptor; + + @Test + void shouldCallUnzip() { + attachments.add(buildZipFileGroup()); + + processor.extractAttachments().toList(); + + verify(processor).unzip(fileCaptor.capture()); + } + + @Test + void shouldNotCallUnzipForOtherGroup() { + attachments.add(IncomingFileGroupTestFactory.create()); + + processor.extractAttachments().toList(); + + verify(processor, never()).unzip(any()); + } + + private IncomingFileGroup buildZipFileGroup() { + return IncomingFileGroupTestFactory.createBuilder().clearFiles() + .name(FormSolutionsFilesMapper.FILE_GROUP_ZIP_NAME) + .file(buildZipFile()) + .build(); + } + + } + + @Nested + class Unzip { + + @Test + void shouldCallReadFromZip() { + IncomingFile zipFile = buildZipFile(); + + processor.unzip(zipFile); + + verify(processor).readFromZip(zipFile); + } + + @Test + void resultShouldContainUnzippedContent() { + var resultFile = IncomingFileTestFactory.create(); + doReturn(Stream.of(resultFile)).when(processor).readFromZip(any()); + + var result = processor.unzip(buildZipFile()); + + assertThat(result).containsOnly(resultFile); + } + + @Test + void shouldReturnZipFileOnException() { + doThrow(new RuntimeException()).when(processor).readFromZip(any()); + IncomingFile zipFile = buildZipFile(); + + var result = processor.unzip(zipFile); + + assertThat(result).hasSize(1).contains(zipFile); + } + } + + private IncomingFile buildZipFile() { + return IncomingFileTestFactory.createBuilder() + .name(ATTACHMENT_ZIP_FILE_NAME).contentType(ZIP_CONTENT_TYPE) + .build(); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java similarity index 69% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java index dc4bcd9b4d6abb5199a2038d6514f52d6fdeb219..93edc16f1023ec46c2f15299d107f4abff98dcdd 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,24 +21,32 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsHeaderTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderTestFactory.*; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; -import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; class FormSolutionsHeaderMapperTest { @Spy + @InjectMocks private final FormSolutionsHeaderMapper mapper = new FormSolutionsHeaderMapper(); + @Mock + private ServiceKontoBuildHelper serviceKontoBuildHelper; @DisplayName("Parse formData") @Nested @@ -103,20 +111,30 @@ class FormSolutionsHeaderMapperTest { assertThat(formHeader.getFormEngineName()).isEqualTo(FormSolutionsHeaderMapper.FORM_ENGINE_NAME); } - private FormHeader buildFormHeader() { - return mapper.buildFormHeader(formData); - } - } + @DisplayName("service konto") + @Nested + class TestGetServiceKonto { - @DisplayName("remove processed data") - @Nested - class TestRemoveProcessedData { + @Test + void shouldCallServiceKontoBuildHelper() { + buildFormHeader(); - @Test - void shouldRemoveTransactionId() { - var cleanedFormData = mapper.removeProcessedData(formData); + verify(serviceKontoBuildHelper).buildOsiServiceKonto(any()); + } + + @Test + void shouldNotCallServiceKontoBuildHelper() { + var formDataWithoutPostkorbHandle = FormDataUtils.from(formData).remove(FormSolutionsHeaderMapper.POSTKORBHANDLE).build(); - assertThat(cleanedFormData).doesNotContainKey(FormSolutionsHeaderMapper.TRANSACTION_ID); + mapper.buildFormHeader(formDataWithoutPostkorbHandle); + + verify(serviceKontoBuildHelper, never()).buildOsiServiceKonto(any()); + } + + } + + private FormHeader buildFormHeader() { + return mapper.buildFormHeader(formData); } } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java similarity index 63% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java index b22177580dd5c398011e235847ec8059fb1d3ed5..580d247e77d80c0a4d39ed9d7804aeb5aa9aea82 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,19 +21,22 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsHeaderMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderMapper.*; import java.util.Map; +import java.util.UUID; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderMapper; public class FormSolutionsHeaderTestFactory { public static final String FORM_NAME = "form name"; public static final Object REQUEST_ID = "transaction id"; + public static final String POSTKORBHANDLE_VALUE = UUID.randomUUID().toString(); public static FormData create() { return createBuilder().build(); @@ -42,7 +45,8 @@ public class FormSolutionsHeaderTestFactory { public static FormData.FormDataBuilder createBuilder() { return FormData.builder() .formData(Map.of( - ASSISTANT, Map.of(IDENTIFIER, FORM_NAME), - TRANSACTION_ID, REQUEST_ID)); + ASSISTANT, Map.of(IDENTIFIER_KEY, FORM_NAME), + TRANSACTION_ID, REQUEST_ID, + FormSolutionsHeaderMapper.POSTKORBHANDLE, POSTKORBHANDLE_VALUE)); } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java similarity index 60% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java index 5d7e4d2bd534279f9998f8c283e73d2064a9a94c..4d79910373df3279b075097af9fa08c9f90dad57 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,21 +21,28 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelTestFactory.*; import static org.assertj.core.api.Assertions.*; import java.util.Map; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper; + class FormSolutionsPanelMapperTest { + private FormSolutionsPanelMapper mapper = new FormSolutionsPanelMapper(); @Nested class TestMapping { + @Test void shouldMap() { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.create()); @@ -59,6 +66,7 @@ class FormSolutionsPanelMapperTest { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.create()); var panelContent = (Map<String, Object>) formData.getFormData().get(PANEL_0); + assertThat(panelContent).containsEntry(DATE_FIELD, DATE_VALUE_CONTENT).containsEntry(TEXT_FIELD, STRING_VALUE_CONTENT); } @@ -81,6 +89,7 @@ class FormSolutionsPanelMapperTest { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(NESTED_PANEL_FORM).build()); var group = (Map<String, Object>) formData.getFormData().get(PANEL_0); + assertThat(group).containsKey(GROUP_IDENTIFIER); } @@ -90,6 +99,7 @@ class FormSolutionsPanelMapperTest { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(NESTED_PANEL_FORM).build()); var group = (Map<String, Object>) ((Map<String, Object>) formData.getFormData().get(PANEL_0)).get(GROUP_IDENTIFIER); + assertThat(group).containsEntry(DATE_FIELD, DATE_VALUE_CONTENT); } @@ -99,8 +109,79 @@ class FormSolutionsPanelMapperTest { var formData = mapper.parseFormData(FormSolutionsPanelTestFactory.createBuilder().formData(PANEL_FORM_EMPTY).build()); var group = (Map<String, Object>) ((Map<String, Object>) formData.getFormData().get(PANEL_0)).get(TEXT_FIELD); + assertThat(group).isNull(); } } } + + @Nested + class TestGetPanels { + + @Test + void shoudReturnPanels() { + var panels = FormSolutionsPanelMapper.getPanels(FormSolutionsPanelTestFactory.create()); + + assertThat(panels).isEqualTo(PANEL_LIST); + } + + @Test + @DisplayName("should return empty list when ASSISTANT map is missing") + void shouldHandleMissingAssistant() { + var formData = FormSolutionsPanelTestFactory.createBuilder().formData(Map.of()).build(); + + var panels = FormSolutionsPanelMapper.getPanels(formData); + + assertThat(panels).isEmpty(); + } + + @Test + @DisplayName("should return empty list when PANELS map is missing") + void shouldHandleMissingPanels() { + var formData = FormSolutionsPanelTestFactory.createBuilder().formData(Map.of(ASSISTANT, Map.of())).build(); + + var panels = FormSolutionsPanelMapper.getPanels(formData); + + assertThat(panels).isEmpty(); + } + + @Test + void shouldHandleNullFormDataMap() { + var panels = FormSolutionsPanelMapper.getPanels(FormData.builder().build()); + + assertThat(panels).isEmpty(); + } + + @Test + void shouldHandleNullFormData() { + var panels = FormSolutionsPanelMapper.getPanels(null); + + assertThat(panels).isEmpty(); + } + } + + @Nested + class TestGetComponents{ + + @Test + void shouldReturnComponentList() { + var components = FormSolutionsPanelMapper.getComponentList(PANEL_LIST.get(0)); + + assertThat(components).isEqualTo(COMPONENT_LIST); + } + + @Test + void shouldHandleNull() { + var components = FormSolutionsPanelMapper.getComponentList(null); + + assertThat(components).isEmpty(); + } + + @Test + void shouldHandleEmptyMap() { + var components = FormSolutionsPanelMapper.getComponentList(Map.of()); + + assertThat(components).isEmpty(); + } + } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java similarity index 78% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelTestFactory.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java index b269a38358fa97f9264ebf99c1932c8995583d70..49f8820cd31c72e57f96e425aa515e0a4111d31e 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsPanelTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsPanelTestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,15 +21,15 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsPanelMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper.*; import java.util.List; import java.util.Map; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; public class FormSolutionsPanelTestFactory { public static final String PANEL_0 = "Panel_0_1"; @@ -41,47 +41,47 @@ public class FormSolutionsPanelTestFactory { public static final String FORM = "AS_123"; public static final List<Map<String, Object>> COMPONENT_LIST = List.of( Map.of( - IDENTIFIER, TEXT_FIELD, + IDENTIFIER_KEY, TEXT_FIELD, STRING_VALUE, STRING_VALUE_CONTENT), Map.of( - IDENTIFIER, DATE_FIELD, + IDENTIFIER_KEY, DATE_FIELD, STRING_VALUE, DATE_VALUE_CONTENT)); public static final List<Map<String, Object>> EMPTY_COMPONENT_LIST = List.of( - Map.of(IDENTIFIER, TEXT_FIELD, "needed", false)); + Map.of(IDENTIFIER_KEY, TEXT_FIELD, "needed", false)); public static final List<Map<String, Object>> NESTED_COMPONENT_LIST = List.of( Map.of( - IDENTIFIER, GROUP_IDENTIFIER, + IDENTIFIER_KEY, GROUP_IDENTIFIER, COMPONENTS, List.of(Map.of( - IDENTIFIER, DATE_FIELD, + IDENTIFIER_KEY, DATE_FIELD, STRING_VALUE, DATE_VALUE_CONTENT)))); public static final List<Map<String, Object>> PANEL_LIST = List.of(Map.of( - IDENTIFIER, PANEL_0, + IDENTIFIER_KEY, PANEL_0, COMPONENTS, COMPONENT_LIST)); public static final List<Map<String, Object>> PANEL_LIST_EMPTY = List.of(Map.of( - IDENTIFIER, PANEL_0, + IDENTIFIER_KEY, PANEL_0, COMPONENTS, EMPTY_COMPONENT_LIST)); public static final List<Map<String, Object>> NESTED_PANEL_LIST = List.of(Map.of( - IDENTIFIER, PANEL_0, + IDENTIFIER_KEY, PANEL_0, COMPONENTS, NESTED_COMPONENT_LIST)); public static final Map<String, Object> PANEL_FORM = Map.of( ASSISTANT, Map.of( - IDENTIFIER, FORM, + IDENTIFIER_KEY, FORM, PANELS, PANEL_LIST)); public static final Map<String, Object> NESTED_PANEL_FORM = Map.of( ASSISTANT, Map.of( - IDENTIFIER, FORM, + IDENTIFIER_KEY, FORM, PANELS, NESTED_PANEL_LIST)); public static final Map<String, Object> PANEL_FORM_EMPTY = Map.of( ASSISTANT, Map.of( - IDENTIFIER, FORM, + IDENTIFIER_KEY, FORM, PANELS, PANEL_LIST_EMPTY)); public static FormData create() { diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java similarity index 54% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapperTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java index e50be8e0e25aef603417720faaa88639739de73f..4315e2c5754338ebcc4f20f93a754ec5b3f78a5e 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsZustaendigeStelleMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsZustaendigeStelleMapperTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,19 +21,23 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; -import static de.itvsh.kop.eingangsadapter.common.formdata.ZustaendigsStelleTestFactory.*; -import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsZustaendigeStelleMapper.*; +import static de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsZustaendigeStelleMapper.*; import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsZustaendigeStelleMapper; class FormSolutionsZustaendigeStelleMapperTest { @@ -44,31 +48,34 @@ class FormSolutionsZustaendigeStelleMapperTest { @Nested class TestParseFormData { - private final FormData formData = FormSolutionsZustaendigeStelleTestFactory.create(); - - @Test - void shouldCallBuildZustaendigeStelle() { - parseFormData(); + private FormData formData; - verify(mapper).buildZustaendigeStelle(formData); + @BeforeEach + void setup() { + formData = FormDataTestFactory.createBuilder() + .zustaendigeStelle(null) + .formData(Map.of( + FormDataTestFactory.SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE, + FormSolutionsZustaendigeStelleMapper.ZUSTAENDIGE_STELLE, ORGANISATIONSEINHEIT_ID)) + .build(); } @Test - void shouldCallRemoveProcessedData() { - parseFormData(); + void shouldParseFormData() { + var resultFormData = mapper.parseFormData(formData); - verify(mapper).removeProcessedData(formData); + assertThat(resultFormData.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo(ORGANISATIONSEINHEIT_ID); + assertThat(resultFormData.getFormData()).doesNotContainKey(ZUSTAENDIGE_STELLE); } @Test - void shouldReturnValue() { - var result = parseFormData(); - - assertThat(result).usingRecursiveComparison().ignoringFields("zustaendigeStelle", "formData").isEqualTo(formData); - } + @DisplayName("should process ZustaendigeStelle data only") + void shouldNotChangeAnother() { + var resultFormData = mapper.parseFormData(formData); - private FormData parseFormData() { - return mapper.parseFormData(formData); + assertThat(resultFormData).usingRecursiveComparison().ignoringFields("zustaendigeStelle", "formData").isEqualTo(formData); + assertThat(resultFormData.getFormData()) + .containsAllEntriesOf(Map.of(FormDataTestFactory.SIMPLE_VALUE_KEY, FormDataTestFactory.SIMPLE_VALUE)); } @DisplayName("build zustaendigeStelle") diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f0badfaedb460098d4589e2c2c8f7398ba1b0523 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/IdentifierValueParserTest.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.formsolutions; + +import static de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory.*; +import static de.ozgcloud.eingang.common.formdata.FormDataTestFactory.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsAntragstellerMapper.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsEngineBasedAdapter.*; +import static de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsPanelMapper.*; +import static org.assertj.core.api.Assertions.*; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.Test; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.FormSolutionsHeaderMapper; +import de.ozgcloud.eingang.semantik.enginebased.formsolutions.IdentifierValueParser; + +class IdentifierValueParserTest { + + private static final String ANTRAGSTELLER_NAME_PANEL_IDENTIFIER = "AS_Name1"; + private static final List<Map<String, Object>> ANTRAGSTELLER_PANEL_CONTENT_LIST = List.of( + Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_NAME_PANEL_IDENTIFIER), + Map.of(COMPONENTS, List.of( + Map.of(IDENTIFIER_KEY, VORNAME_KEY, STRING_VALUE, VORNAME), + Map.of(IDENTIFIER_KEY, NACHNAME_KEY, STRING_VALUE, NACHNAME)))); + + private static final Map<String, Object> ASSISTANT_MAP = Map.of(PANELS, List.of( + Map.of(IDENTIFIER_KEY, ANTRAGSTELLER_PANEL_IDENTIFIER), Map.of(COMPONENTS, ANTRAGSTELLER_PANEL_CONTENT_LIST))); + + private FormData formData = FormDataTestFactory.createBuilder() + .formData(Map.of(SIMPLE_VALUE_KEY, SIMPLE_VALUE, + FormSolutionsHeaderMapper.POSTKORBHANDLE, POSTFACH_ID, ASSISTANT, ASSISTANT_MAP)) + .build(); + + @Test + void shoudParseData() { + var expectedMap = Map.of(VORNAME_KEY, VORNAME, NACHNAME_KEY, NACHNAME); + + var stringValueMap = IdentifierValueParser.parsePanelsData(formData); + + assertThat(stringValueMap).isEqualTo(expectedMap); + } + + @Test + void shouldHandleNullPanels() { + formData = FormDataTestFactory.createBuilder().formData(null).build(); + + var stringValueMap = IdentifierValueParser.parsePanelsData(formData); + + assertThat(stringValueMap).isEmpty(); + } + +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..78382712ee91ada8768176188f7af1008cc20b2f --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/xta/XtaZipRepresentationsMapperTest.java @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.enginebased.xta; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.io.InputStream; +import java.util.List; +import java.util.stream.IntStream; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory; +import de.ozgcloud.eingang.semantik.common.ZipAttachmentReader; +import lombok.SneakyThrows; + +class XtaZipRepresentationsMapperTest { + + private static final String ZIP_CONTENT_TYPE = "application/zip"; + + @Spy + private final XtaZipRepresentationsMapper mapper = new XtaZipRepresentationsMapper(); + + @Nested + class TestExtractZipFileEctract { + + @Test + void shouldExtractZipFiles() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + initZipRepresentationMocks(zipAttachment); + + var formData = mapper.parseFormData(createTestFormDataWithZipRepresentation()); + + assertThat(formData.getRepresentations()).hasSize(3); + } + } + + FormData createTestFormDataWithZipRepresentation() { + List<IncomingFile> representations = List.of( + IncomingFileTestFactory.createBuilder() + .name("attachments.zip") + .contentType(ZIP_CONTENT_TYPE) + .build()); + + return FormData.builder().representations(representations).numberOfRepresentations(representations.size()).build(); + } + + @Test + void shouldSetRepresentationsNumber() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + initZipRepresentationMocks(zipAttachment); + + var formData = mapper.parseFormData(createTestFormDataWithZipRepresentation()); + + assertThat(formData.getNumberOfRepresentations()).isEqualTo(3); + } + } + + @Test + void shouldIgnoreNonZipFiles() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + + var formData = mapper.parseFormData(createTestFormDataWithoutZipRepresentation()); + + assertThat(formData.getNumberOfRepresentations()).isEqualTo(1); + } + } + + FormData createTestFormDataWithoutZipRepresentation() { + List<IncomingFile> representations = List.of( + IncomingFileTestFactory.create()); + return FormData.builder().representations(representations).numberOfRepresentations(representations.size()).build(); + } + + @Test + void shouldNotDeleteOriginalZipFile() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + initZipRepresentationMocks(zipAttachment); + + var formData = mapper.parseFormData(createTestFormDataWithZipRepresentation()); + + assertThat(formData.getRepresentations()).map(IncomingFile::getContentType) + .filteredOn(e -> e.equals(XtaZipRepresentationsMapper.ZIP_CONTENT_TYPE)).hasSize(1); + } + } + + @Test + void shouldDoNothingOnEmptyRepresentations() { + try (var zipAttachment = Mockito.mockStatic(ZipAttachmentReader.class)) { + + var formData = mapper.parseFormData(createTestFormDataWithoutRepresentation()); + + assertThat(formData.getRepresentations()).isEmpty(); + } + } + + FormData createTestFormDataWithoutRepresentation() { + return FormData.builder().numberOfRepresentations(0).build(); + } + } + + @Test + void testIsZipFilePredicate() { + + assertThat(XtaZipRepresentationsMapper.IS_ZIP_FILE.test(IncomingFileTestFactory.create())).isFalse(); + assertThat(XtaZipRepresentationsMapper.IS_ZIP_FILE.test(IncomingFileTestFactory.createBuilder().contentType(ZIP_CONTENT_TYPE).build())) + .isTrue(); + } + + @SneakyThrows + private static void initZipRepresentationMocks(MockedStatic<ZipAttachmentReader> zipAttachmentMock) { + var contentEntries = IntStream.range(0, 2).boxed().map(i -> IncomingFileTestFactory.createBuilder().name(i.toString()).build()).toList(); + ZipAttachmentReader mock = when(mock(ZipAttachmentReader.class).readContent()).thenReturn(contentEntries).getMock(); + zipAttachmentMock.when(() -> ZipAttachmentReader.from(any(InputStream.class), any())).thenReturn(mock); + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..32b21773719dbf84d9ee6d1534663da50af9802f --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormBasedMapperTest.java @@ -0,0 +1,241 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.formbased; + +import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.InstanceOfAssertFactories.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.Collections; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; + +import de.ozgcloud.common.binaryfile.TempFileUtils; +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.IncomingFile; +import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; +import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; + +class DFoerdermittelFormBasedMapperTest { + + @Spy + @InjectMocks + private DFoerdermittelFormBasedMapper mapper; + + @Mock + private ServiceKontoBuildHelper serviceKontoHelper; + + @Nested + class TestIsResponsible { + + @Test + void shouldBeTrueWithFachnachricht() { + var responsible = mapper.isResponsible(createWithFachnachricht()); + + assertThat(responsible).isTrue(); + } + + @Test + void shouldBeFalseForOuther() { + var responsible = mapper.isResponsible(FormDataTestFactory.create()); + + assertThat(responsible).isFalse(); + } + } + + @Nested + class TestParseFachnachricht { + + @Nested + class ExtractData { + @Test + void shouldHaveFormData() { + var result = mapper.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); + + assertThat(result).isNotNull(); + } + + @Test + void shouldHavePages() { + var result = mapper.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); + + assertThat(result).containsKey("Pages"); + } + + @Test + void shouldHaveInboxRef() { + var result = mapper.extractFormDataFormXML(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); + + assertThat(result).containsEntry("InboxReference", "sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a"); + } + } + + @Nested + class HandleFachnachrichtData { + + private Map<String, Object> extracted = Map.of("name", "Theo"); + + @Test + void shouldCallExtractData() { + doReturn(extracted).when(mapper).extractFormDataFormXML(any()); + + mapper.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); + + verify(mapper).extractFormDataFormXML(notNull()); + } + + @Test + void shouldAddMap() { + doReturn(extracted).when(mapper).extractFormDataFormXML(any()); + + var result = mapper.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); + + assertThat(result.getFormData()).containsEntry("Fachnachricht", extracted); + } + + @Test + void shouldIgnoreEmptyData() { + doReturn(Collections.emptyMap()).when(mapper).extractFormDataFormXML(any()); + + var result = mapper.parseFachnachricht(createWithFachnachricht(), createFachnachrichtFile()); + + assertThat(result.getFormData()).doesNotContainKey("Fachnachricht"); + } + } + } + + FormData createWithFachnachricht() { + + return FormData.builder() + .formData(Collections.emptyMap()) + .representation(createFachnachrichtFile()).build(); + } + + IncomingFile createFachnachrichtFile() { + var tmpFile = TempFileUtils.writeTmpFile(TestUtils.loadFile("xta/Beispieldatensatz_Fachnachricht.xml")); + + return IncomingFile.builder() + .file(tmpFile) + .contentType("application/xml") + .size(1283) + .name("Beispieldatensatz_Fachnachricht.xml") + .build(); + } + + @Nested + class TestProcessFachnachricht { + + @Captor + private ArgumentCaptor<Map<String, Object>> fachnachrichtCaptor; + + @Test + void shouldCallAddServiceKonto() { + var formData = DFoerdermittelFormDataTestFactory.create(); + + mapper.processFachnachricht(formData); + + verify(mapper).addServiceKonto(same(formData), fachnachrichtCaptor.capture()); + assertThat(fachnachrichtCaptor.getValue()).containsAllEntriesOf(DFoerdermittelFormDataTestFactory.createFachnachrichtMap()); + } + + @Test + void shouldCallAddOrganisationsEinheitId() { + var extened = DFoerdermittelFormDataTestFactory.create(); + doReturn(extened).when(mapper).addServiceKonto(any(), any()); + + mapper.processFachnachricht(DFoerdermittelFormDataTestFactory.create()); + + verify(mapper).addOrganisationsEinheitId(same(extened), notNull()); + } + } + + @Nested + class TestAddServiceKonto { + + @BeforeEach + void init() { + when(serviceKontoHelper.buildOsiServiceKonto(any())).thenReturn(ServiceKontoTestFactory.create()); + } + + @Test + void shouldHaveServiceKonto() { + var formData = mapper.addServiceKonto(DFoerdermittelFormDataTestFactory.create(), + DFoerdermittelFormDataTestFactory.createFachnachrichtMap()); + + assertThat(formData.getHeader().getServiceKonto().getPostfachAddresses().get(0).getIdentifier()) + .asInstanceOf(type(StringBasedIdentifier.class)).extracting(StringBasedIdentifier::getPostfachId) + .isEqualTo(PostfachAddressTestFactory.POSTFACH_ID); + } + + @Test + void shouldRemovePrefix() { + mapper.addServiceKonto(DFoerdermittelFormDataTestFactory.create(), DFoerdermittelFormDataTestFactory.createFachnachrichtMap()); + + verify(serviceKontoHelper).buildOsiServiceKonto(DFoerdermittelFormDataTestFactory.POSTFACH_ID); + } + } + + @Nested + class TestExtractPrefix { + @Test + void shouldRemoveAllBeforeLastSlash() { + var result = mapper.extractPrefix("bla/bla/bla/12345"); + + assertThat(result).isEqualTo("12345"); + } + + @Test + void shouldBeFineWithoutSlash() { + var result = mapper.extractPrefix("12345"); + + assertThat(result).isEqualTo("12345"); + } + } + + @Nested + class TestAddOrganisationsEinheitId { + @Test + void shouldHaveOrganisationsEinheitId() { + var formData = mapper.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create(), + DFoerdermittelFormDataTestFactory.createFachnachrichtMap()); + + assertThat(formData.getZustaendigeStelle()).isNotNull().extracting(ZustaendigeStelle::getOrganisationseinheitenId) + .isEqualTo(DFoerdermittelFormDataTestFactory.ORGANISATIONS_EINHEIT_ID); + } + } +} diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..35007f79fd5a9d93e9fc5e815b1a091ae01fab21 --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/DFoerdermittelFormDataTestFactory.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.semantik.formbased; + +import java.util.Map; + +import de.ozgcloud.eingang.common.formdata.FormData; + +class DFoerdermittelFormDataTestFactory { + + static final String POSTFACH_ID = "4dd01647-b9d9-4775-1b50-08da3d83800a"; + static final String ORGANISATIONS_EINHEIT_ID = "9795669"; + + static FormData create() { + return createBuilder().build(); + } + + static FormData.FormDataBuilder createBuilder() { + return FormData.builder() + .formData(Map.of("Fachnachricht", createFachnachrichtMap())); + } + + static Map<String, Object> createFachnachrichtMap() { + return Map.of("InboxReference", "sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a", + "MetaText1", ORGANISATIONS_EINHEIT_ID); + } +} diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java similarity index 61% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapterTest.java rename to semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java index 46a375a5a2a216ee0388ddb3c6c97ebdf987cd14..7d0b1e4970598ee17e7657a33fc311585ce850b9 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/formbased/FormBasedSemantikAdapterTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/formbased/FormBasedSemantikAdapterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,14 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.formbased; +package de.ozgcloud.eingang.semantik.formbased; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import java.util.Collections; +import java.util.ArrayList; import java.util.List; -import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -37,7 +37,10 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.semantik.formbased.FormBasedMapper; +import de.ozgcloud.eingang.semantik.formbased.FormBasedSemantikAdapter; class FormBasedSemantikAdapterTest { @@ -45,40 +48,45 @@ class FormBasedSemantikAdapterTest { @InjectMocks private FormBasedSemantikAdapter adapter; @Spy - private List<FormBasedMapper> mappers; + private List<FormBasedMapper> mappers = new ArrayList<>(); @Mock private FormBasedMapper mapper; @Nested class TestParseFromData { - private FormData formData = FormData.builder().build(); - private AnliegenId anliegenId = AnliegenId.from(UUID.randomUUID().toString()); + private FormData formData = FormDataTestFactory.create(); @BeforeEach void mockEngineBasedMapper() { - when(mappers.size()).thenReturn(1); - when(mappers.get(anyInt())).thenReturn(mapper); - - doReturn(anliegenId).when(adapter).getAnliegenId(any(FormData.class)); + when(mapper.isResponsible(any())).thenReturn(true); + mappers.add(mapper); } @Test - void shouldCallMappersOnMatchingAnliegenId() { - when(mapper.getResponsibleAnliegenIds()).thenReturn(List.of(anliegenId)); - + void shouldCallMapperIfResponsible() { adapter.parseFormData(formData); verify(mapper).parseFormData(formData); } @Test - void shouldNotCallMappersOnNonMatchingAnliegenId() { - when(mapper.getResponsibleAnliegenIds()).thenReturn(Collections.emptyList()); + void shouldNotCallMappersIfNOTREsponsible() { + when(mapper.isResponsible(any())).thenReturn(false); adapter.parseFormData(formData); verifyNoMoreInteractions(mapper); } + + @Test + void shouldReturnMappingResult() { + var expected = FormDataTestFactory.create(); + when(mapper.parseFormData(any())).thenReturn(expected); + + var result = adapter.parseFormData(formData); + + assertThat(result).isSameAs(expected); + } } } \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/attachment-1file.zip b/semantik-adapter/src/test/resources/attachment-1file.zip new file mode 100644 index 0000000000000000000000000000000000000000..1bde2108dcd8ce6edf4d1afe2c221ededc9915a1 Binary files /dev/null and b/semantik-adapter/src/test/resources/attachment-1file.zip differ diff --git a/semantik-adapter/src/test/resources/attachment-2files.zip b/semantik-adapter/src/test/resources/attachment-2files.zip new file mode 100644 index 0000000000000000000000000000000000000000..1cd6370639e85040002e6b17df7dc2c36b877673 Binary files /dev/null and b/semantik-adapter/src/test/resources/attachment-2files.zip differ diff --git a/semantik-adapter/src/test/resources/attachment-empty.zip b/semantik-adapter/src/test/resources/attachment-empty.zip new file mode 100644 index 0000000000000000000000000000000000000000..c429aa655987d9210d6fb3c7aa5bfd36e60552ba Binary files /dev/null and b/semantik-adapter/src/test/resources/attachment-empty.zip differ diff --git a/semantik-adapter/src/test/resources/attachment-encrypted.zip b/semantik-adapter/src/test/resources/attachment-encrypted.zip new file mode 100644 index 0000000000000000000000000000000000000000..b144825f7836af85657e3abd26fa87da9ec92747 Binary files /dev/null and b/semantik-adapter/src/test/resources/attachment-encrypted.zip differ diff --git a/semantik-adapter/src/test/resources/behoerde_metadata.xml b/semantik-adapter/src/test/resources/behoerde_metadata.xml new file mode 100644 index 0000000000000000000000000000000000000000..66b1f000dd1af9e077657cab9f67bf0d3710b32f --- /dev/null +++ b/semantik-adapter/src/test/resources/behoerde_metadata.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<data xmlns="http://xmlns.cit.de/assistants/store" name="myForm" class="de.cit.assistants.DataBean"> + <field type="string" readonly="true" name="behoerde_anzeige_name">Landratsamt XYZ (Testbehörde für BDA)</field> + <field type="string" readonly="true" name="behoerde_caller_id">87331322433</field> + <field type="string" readonly="true" name="behoerde_pki_email"></field> + <field type="string" readonly="true" name="behoerde_link"> + https://redesign.bayernportal.bayern.de/dokumente/behoerde/87331322433</field> + <field type="string" readonly="true" name="behoerde_sicherer_kontakt_link"></field> + <field type="string" readonly="true" name="behoerde_postkorb_eakte"></field> + <field type="string" readonly="true" name="behoerde_organisationseinheit_eakte"></field> + <field type="string" readonly="true" name="gemeinde_schluessel_bp">09189155</field> + <field type="string" readonly="true" name="amtlicher_regionalschluessel">091890000000</field> + <field type="string" readonly="true" name="behoerde_email">poststelle@testbehoerde.bayern</field> + <field type="string" readonly="true" name="behoerde_telefon">+49 123 45-0</field> + <field type="string" readonly="true" name="behoerde_telefax">+49 12 45-7</field> + <field type="string" readonly="true" name="behoerde_hausanschrift_strasse">Teststraße 1</field> + <field type="string" readonly="true" name="behoerde_hausanschrift_plz">12345</field> + <field type="string" readonly="true" name="behoerde_hausanschrift_ort">Musterstadt</field> + <field type="string" readonly="true" name="behoerde_safeId"></field> + <field type="string" readonly="true" name="dvdv_praefix">bab</field> + <field type="string" readonly="true" name="dvdv_kennung">09189</field> +</data> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/eingang.pdf b/semantik-adapter/src/test/resources/eingang.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f31f40e88a8afa2258d07a82bc55d44d86468b1f Binary files /dev/null and b/semantik-adapter/src/test/resources/eingang.pdf differ diff --git a/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml b/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml new file mode 100644 index 0000000000000000000000000000000000000000..618c4813e1803a0619c68920505c9ee7cb303b12 --- /dev/null +++ b/semantik-adapter/src/test/resources/xta/Beispieldatensatz_Fachnachricht.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.dataport.de/dFAD/ApplicationDataMessageSchema"> + <ApplicationFormId>08db3c1c-db1f-4d27-8dec-73af167e87f2</ApplicationFormId> + <Timestamp>2023-04-18T11:40:24.9940624+02:00</Timestamp> + <ApplicationDataMessageVersion>1</ApplicationDataMessageVersion> + <Title>Testantrag XML-Fachnachricht-Erweiterung</Title> + <ProjectName>XML-Fachnachricht-Erweiterung</ProjectName> + <ProjectTitle>XML-Fachnachricht-Erweiterung</ProjectTitle> + <TransmittedApplicationId>7AtSMHpx3LfJp4</TransmittedApplicationId> + <InboxReference>sh/sh/4dd01647-b9d9-4775-1b50-08da3d83800a</InboxReference> + <MetaText1>9795669</MetaText1> + <Pages> + <Page> + <Title>Beispiel Seite 1</Title> + <Navigation>Beispiel Seite 1</Navigation> + <Controls> + <Control> + <RadioButtonGroup> + <Label>Beispiel-Steuerelement</Label> + <Alias>beispiel-element</Alias> + <SelectedItems> + <SelectedItem> + <Label>Beispielwert 2</Label> + <Value>bsp-2</Value> + </SelectedItem> + </SelectedItems> + </RadioButtonGroup> + </Control> + </Controls> + </Page> + </Pages> +</application> \ No newline at end of file diff --git a/semantik-adapter/src/test/resources/zip-file-0.txt b/semantik-adapter/src/test/resources/zip-file-0.txt new file mode 100644 index 0000000000000000000000000000000000000000..7073e6590de64929654c9b7ce15f138e4e980836 --- /dev/null +++ b/semantik-adapter/src/test/resources/zip-file-0.txt @@ -0,0 +1,2 @@ +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. + diff --git a/semantik-adapter/src/test/resources/zip-file-1.txt b/semantik-adapter/src/test/resources/zip-file-1.txt new file mode 100644 index 0000000000000000000000000000000000000000..cc0e7610296f49ef5ac08a29313824db875b52ed --- /dev/null +++ b/semantik-adapter/src/test/resources/zip-file-1.txt @@ -0,0 +1,796 @@ +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +orem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis. + +At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat. + +Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. + +augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. + +augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. + +augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait nulla facilisi. augue duis dolore te feugait diff --git a/semantik-adapter/src/test/resources/zipbombs/filewithmanyfiles.dat.zip b/semantik-adapter/src/test/resources/zipbombs/filewithmanyfiles.dat.zip new file mode 100644 index 0000000000000000000000000000000000000000..028b50d4663558eb718abfe2b568d6ac1671521c Binary files /dev/null and b/semantik-adapter/src/test/resources/zipbombs/filewithmanyfiles.dat.zip differ diff --git a/semantik-adapter/src/test/resources/zipbombs/filewithnulls.dat.zip b/semantik-adapter/src/test/resources/zipbombs/filewithnulls.dat.zip new file mode 100644 index 0000000000000000000000000000000000000000..2648814ae1d461b3812d16e8274af15041925c26 Binary files /dev/null and b/semantik-adapter/src/test/resources/zipbombs/filewithnulls.dat.zip differ diff --git a/sonar-project.properties b/sonar-project.properties index 8660b9e44335323e02f6aaa513605e4a34635db9..b7f52501bc2eb44826c3c59681a818c722ad1835 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,5 +1,5 @@ # -# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den # Ministerpräsidenten des Landes Schleswig-Holstein # Staatskanzlei # Abteilung Digitalisierung und zentrales IT-Management der Landesregierung diff --git a/src/main/helm/Chart.yaml b/src/main/helm/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2a6f1abdfb8836e58beb23da0fe4285e74d49bff --- /dev/null +++ b/src/main/helm/Chart.yaml @@ -0,0 +1,31 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +appVersion: "1.1" +description: A Helm chart for Intelliform Adapter +name: Intelliform-Adapter +version: 0.0.0-MANAGED-BY-JENKINS +icon: https://simpleicons.org/icons/helm.svg + diff --git a/src/main/helm/README.md b/src/main/helm/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0d0224d6b866924fd1e7341d86d60c9c59ea37d5 --- /dev/null +++ b/src/main/helm/README.md @@ -0,0 +1,93 @@ +# Intelliform Adapter + +Adapter zum empfangen von Formulardaten von einem IntellForm basierten Formularserver, zum Beispiel iAFM (integriertes Antrags- und Formularmanagement). + +## Routingkonfiguration + +### Vorgang-Manager Instanzen + +Für alle Vorgang-Manager-Instanzen, die von dem Adapter erreichbar sein sollen, muss in das _Environment_ ein Eintrag mit dem GRPC-Service ergänzt werden: + +```yaml +grpc.client.vorgang-manager-*vorgang-manager-name*.address:*url und port* +grpc.client.vorgang-manager-*vorgang-manager-name*.negotiationType: PLAINTEXT +``` + +### Fallback Strategy + +Die Fallback Stratey steuert wie mit Eingängen umgegangen werden soll, für die keine passende Vorgang-Manager-Instanze gefunden werden konnte. + +Folgende Optionen stehen zur Verfügung: + +- **DENY** der Antrag wird mit einer Fehlermeldung abgelehnt. Dies funktioniert nur, solange die Abarbeitung synchron erfolgt. + +- **FUNDSTELLE** der Antrag wird an eine zentrale Fundstelle weitergeleitet. Dafür muss der Name der Vorgang-Manager-Instanze, die als Fundstelle fungiert, eingetragen werden. + +### Routing Strategy + +Die Routing Strategy steuert wie das Routing konfiguriert wird und wieviele Vorgang-Manager-Instanzen berücksichtigt werden können. + +Folgende Optionen stehen zur Verfügung: + +- **MULTI** es kann an beliebig viele Vorgang-Manager-Instanzen geroutet werden. Dafür muss in der Environment ein Mapping der Organisationseinheit-Id auf den Namen einer Vorgang-Manager-Instanz konfiguriert werden. + +```yaml +ozgcloud.adapter.organisationseinheiten.*id*: *vorgang-manager-name* +``` + +- **SINGLE** es wird immer nur an eine Vorgang-Manager-Instanze geroutet, der Name der Instanz ist im Feld 'Vorgang-Manager Name' anzugeben. + +### Beispielkonfiguration + +```yaml +env: + springProfiles: "oc, dev" + grpc: + - name: grpc_client_vorgang-manager-test_address + value: "vorgang-manager.test:9090" + - name: grpc_client_vorgang-manager-test_negotiationType + value: PLAINTEXT + - name: ozgcloud.adapter.organisationseinheiten.1357913579 + value: test +image: + tag: snapshot-latest +imageCredentials: + email: webmaster@ozg-sh.de + password: + registry: docker.ozg-sh.de + username: ozgcloud +ingress: + host: kiel-afm.dev.by.ozg-cloud.de +replicaCount: 2 +resources: + limits: + cpu: 1 + memory: 1200Mi + requests: + cpu: 100m + memory: 250Mi +global: + cattle: + clusterId: c-8g78g + clusterName: ozg-dev + systemDefaultRegistry: "" + systemDefaultRegistry: "" +routing: + fallbackStrategy: FUNDSTELLE + fundstelleVorgangManagerName: kiel + routingStrategy: MULTI + targetVorgangManagerName: kiel +``` + +### Benutzung beliebiger environment Werte + +In jedem der Projekte kann man beliebige weitere environments setzen. Dazu muss man in der jeweiligen values.yaml unter env.customList ein name value Paar setzen: + +```yaml +env: + customList: + - name: Dinge + value: true + - name: ... + value: ... +``` diff --git a/src/main/helm/templates/NOTES.txt b/src/main/helm/templates/NOTES.txt new file mode 100644 index 0000000000000000000000000000000000000000..27dc6d6c07b76dff00002e96d462529770963085 --- /dev/null +++ b/src/main/helm/templates/NOTES.txt @@ -0,0 +1,24 @@ +==== + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. +==== + diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..0915f0f2372d26b4dab57e0c2aa3a25dae0b6b08 --- /dev/null +++ b/src/main/helm/templates/_helpers.tpl @@ -0,0 +1,96 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}} +{{/* Namespace */}} +{{- define "app.namespace" -}} +{{- if gt (len (.Release.Namespace)) 63 -}} +{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}} +{{- end -}} +{{ printf "%s" .Release.Namespace }} +{{- end -}} + +{{/* Chart: Name + Version */}} +{{- define "app.chart" -}} +{{- if gt (len (printf "%s-%s" .Chart.Name .Chart.Version)) 63 -}} +{{- fail (printf ".Chart.Name-.Chart.Version %s-%s ist zu lang (max. 63 Zeichen)" .Chart.Name .Chart.Version) -}} +{{- end -}} +{{ printf "%s-%s" .Chart.Name .Chart.Version }} +{{- end -}} + +{{/* Managed-by -> On Helm, this value is always Helm */}} +{{- define "app.managedBy" -}} +{{- if gt (len (.Release.Service)) 63 -}} +{{- fail (printf ".Release.Service %s ist zu lang (max. 63 Zeichen)" .Release.Service) -}} +{{- end -}} +{{ printf "%s" .Release.Service }} +{{- end -}} + +{{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}} +{{- define "app.defaultLabels" }} +app.kubernetes.io/instance: afm-adapter +app.kubernetes.io/managed-by: {{ include "app.managedBy" . }} +app.kubernetes.io/name: {{ .Release.Name }} +app.kubernetes.io/part-of: ozgcloud +app.kubernetes.io/version: {{ .Chart.Version }} +app.kubernetes.io/namespace: {{ include "app.namespace" . }} +helm.sh/chart: {{ include "app.chart" . }} +ozg-component: eingangsadapter +{{- end -}} + +{{- define "app.matchLabels" }} +app.kubernetes.io/name: {{ .Release.Name }} +app.kubernetes.io/namespace: {{ include "app.namespace" . }} +{{- end -}} + +{{- define "app.imagePullSecret" }} +{{- with .Values.imageCredentials }} +{{- printf "{\"auths\":{\"%s\":{\"username\":\"%s\",\"password\":\"%s\",\"email\":\"%s\",\"auth\":\"%s\"}}}" .registry .username .password .email (printf "%s:%s" .username .password | b64enc) | b64enc }} +{{- end }} +{{- end }} + +{{- define "app.envSpringProfiles" }} +{{- if (.Values.env).overrideSpringProfiles -}} +{{ printf "%s" (.Values.env).overrideSpringProfiles }} +{{- else -}} +{{ printf "oc, %s" (include "app.ozgcloudEnvironment" . ) }} +{{- end -}} +{{- end -}} + +{{- define "app.ozgcloudEnvironment" -}} +{{- required "Environment muss angegeben sein" (.Values.ozgcloud).environment -}} +{{- end -}} + +{{- define "app.ozgcloudBezeichner" -}} +{{ $length := len (.Values.ozgcloud).bezeichner }} +{{- if ge 46 $length -}} +{{ (.Values.ozgcloud).bezeichner }} +{{- else -}} +{{ required (printf "Bezeichner %s ist zu lang (max. 46 Zeichen)" (.Values.ozgcloud).bezeichner) nil }} +{{- end -}} +{{- end -}} + +{{- define "app.ingress.host" }} +{{- if (.Values.ingress).adapterBezeichner }} +{{- printf "%s-%s.%s" (include "app.ozgcloudBezeichner" .) .Values.ingress.adapterBezeichner .Values.baseUrl }} +{{- else if eq (.Values.image).name "formsolutions-adapter" }} +{{- printf "%s-fs.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- else if eq (.Values.image).name "formcycle-adapter" }} +{{- printf "%s-formcycle.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- else }} +{{- printf "%s-afm.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }} +{{- end }} +{{- end -}} + +{{- define "app.serviceAccountName" -}} +{{- if (.Values.serviceAccount).name }} +{{- printf "%s" .Values.serviceAccount.name }} +{{- else if eq (.Values.image).name "intelliform-adapter" }} +{{- printf "afm-adapter-service-account" }} +{{- else if eq (.Values.image).name "formsolutions-adapter" }} +{{- printf "fs-adapter-service-account" }} +{{- else if eq (.Values.image).name "formcycle-adapter" }} +{{- printf "formcycle-adapter-service-account" }} +{{- else if eq (.Values.image).name "enterprise-adapter" }} +{{- printf "enterprise-adapter-service-account" }} +{{- end }} +{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1434a5280852695070bda02c5da9c91375092656 --- /dev/null +++ b/src/main/helm/templates/deployment.yaml @@ -0,0 +1,174 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} +spec: + progressDeadlineSeconds: 600 + replicas: {{ .Values.replicaCount }} + revisionHistoryLimit: 10 + selector: + matchLabels: + {{- include "app.matchLabels" . | indent 6 }} + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + type: RollingUpdate + template: + metadata: + labels: + {{- include "app.defaultLabels" . | indent 8 }} + component: afm-adapter + spec: + {{- if (.Values.serviceAccount).create }} + serviceAccountName: {{ include "app.serviceAccountName" . }} + {{- end }} + topologySpreadConstraints: + - maxSkew: 1 + topologyKey: kubernetes.io/hostname + whenUnsatisfiable: DoNotSchedule + labelSelector: + matchLabels: + app.kubernetes.io/name: {{ .Release.Name }} + containers: + - env: + {{- range (.Values.env).grpc }} + - name: {{ .name }} + value: {{ .value }} + {{- end }} + - name: spring_profiles_active + value: {{ include "app.envSpringProfiles" . }} + - name: ozgcloud_adapter_fallbackStrategy + value: {{ (.Values.routing).fallbackStrategy | default "DENY"}} + {{- if (.Values.routing).fundstelleVorgangManagerName}} + - name: ozgcloud_adapter_fundstelleVorgangManagerName + value: {{ .Values.routing.fundstelleVorgangManagerName }} + {{- end }} + - name: ozgcloud_adapter_routingStrategy + value: {{ (.Values.routing).routingStrategy | default "SINGLE"}} + {{- if (.Values.routing).targetVorgangManagerName }} + - name: ozgcloud_adapter_targetVorgangManagerName + value: {{ (.Values.routing).targetVorgangManagerName}} + - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName}}_address + value: 'vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090' + - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName}}_negotiationType + value: {{ (.Values.routing).negotiationType | default "PLAINTEXT" }} + {{- end }} + {{- with (.Values.env).customList }} +{{ toYaml . | indent 8 }} + {{- end }} + image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ coalesce (.Values.image).tag "latest" }}" + imagePullPolicy: Always + name: intelliform-adapter + ports: + - containerPort: 8080 + name: 8080tcp1 + protocol: TCP + - containerPort: 8081 + name: metrics + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: /actuator/health/readiness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + startupProbe: + failureThreshold: 10 + httpGet: + path: /actuator/health/readiness + port: 8081 + scheme: HTTP + initialDelaySeconds: 30 + periodSeconds: 5 + successThreshold: 1 + timeoutSeconds: 5 + {{- if .Values.enableLivenessProbe }} + livenessProbe: + failureThreshold: 3 + httpGet: + path: /actuator/health/liveness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + {{- end }} + resources: + {{- with .Values.resources }} +{{ toYaml . | indent 10 }} + {{- end }} + securityContext: + allowPrivilegeEscalation: false + privileged: false + readOnlyRootFilesystem: false + runAsNonRoot: true + {{- with (.Values.securityContext).runAsUser }} + runAsUser: {{ . }} + {{- end }} + {{- with (.Values.securityContext).runAsGroup }} + runAsGroup: {{ . }} + {{- end }} + {{- with (.Values.securityContext).capabilities }} + capabilities: +{{ toYaml . | indent 12 }} + {{- end }} + stdin: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + tty: true + volumeMounts: + - name: temp-dir + mountPath: "/tmp" + volumes: + - name: temp-dir + emptyDir: {} + dnsConfig: {} + dnsPolicy: ClusterFirst + imagePullSecrets: + {{- if .Values.imagePullSecret }} + - name: {{ .Values.imagePullSecret }} + {{ else }} + - name: {{ .Release.Name }}-image-pull-secret + {{- end }} + restartPolicy: Always + {{- with .Values.hostAliases }} + hostAliases: +{{ toYaml . | indent 8 }} + {{- end }} + schedulerName: default-scheduler + {{- with .Values.podSecurityContext }} + securityContext: +{{ toYaml . | indent 8 }} + {{- end }} + terminationGracePeriodSeconds: 30 \ No newline at end of file diff --git a/src/main/helm/templates/image-pull-secret.yaml b/src/main/helm/templates/image-pull-secret.yaml new file mode 100644 index 0000000000000000000000000000000000000000..508f0516881d1fb417082759fa76504dd2d2ba1f --- /dev/null +++ b/src/main/helm/templates/image-pull-secret.yaml @@ -0,0 +1,34 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if not (.Values.imagePullSecret) }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Release.Name }}-image-pull-secret + namespace: {{ include "app.namespace" . }} +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: {{ include "app.imagePullSecret" . }} +{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/ingress.yaml b/src/main/helm/templates/ingress.yaml new file mode 100644 index 0000000000000000000000000000000000000000..15adeab0f1def64695a0bd15acce3a1f729367c5 --- /dev/null +++ b/src/main/helm/templates/ingress.yaml @@ -0,0 +1,67 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if (.Values.ingress).enabled }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + {{- with (.Values.ingress).annotations }} +{{ toYaml . | indent 4 }} + {{- end }} + {{- if not (.Values.ingress).disableDefaultCertManager }} + {{- if (.Values.ingress).use_staging_cert }} + cert-manager.io/cluster-issuer: letsencrypt-staging + {{- else }} + cert-manager.io/cluster-issuer: letsencrypt-prod + {{- end }} + {{- end }} + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} +spec: + {{- if and (.Values.ingress).className }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + rules: + - http: + paths: + - backend: + service: + port: + number: 8080 + name: {{ .Release.Name }} + path: '' + pathType: ImplementationSpecific + host: {{ include "app.ingress.host" . }} + tls: + - hosts: + - {{ include "app.ingress.host" . }} + {{- if not (.Values.ingress).skipTlsSecret -}} + {{- if (.Values.ingress).tlsSecretName }} + secretName: {{ (.Values.ingress).tlsSecretName }} + {{- else }} + secretName: {{ .Values.ozgcloud.bezeichner }}-{{ .Release.Name }}-tls + {{- end }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/src/main/helm/templates/network_policy.yaml b/src/main/helm/templates/network_policy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..63a2db6eb4ec33f5f10bb279ef47d1e7129e174e --- /dev/null +++ b/src/main/helm/templates/network_policy.yaml @@ -0,0 +1,62 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if not (.Values.networkPolicy).disabled }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: network-policy-{{ .Release.Name}} + namespace: {{ .Release.Namespace }} +spec: + podSelector: + matchLabels: + ozg-component: eingangsadapter + policyTypes: + - Ingress + - Egress + ingress: + - ports: + - port: 8080 + egress: + - to: + - podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: {{ required "networkPolicy.dnsServerNamespace must be set" (.Values.networkPolicy).dnsServerNamespace }} + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - port: 5353 + protocol: UDP + - port: 5353 + protocol: TCP +{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/service.yaml b/src/main/helm/templates/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3f688c3a012e1347a20a5999409fce25a59459b8 --- /dev/null +++ b/src/main/helm/templates/service.yaml @@ -0,0 +1,45 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} + component: afm-adapter-service +spec: + ports: + - name: http + port: 8080 + protocol: TCP + targetPort: 8080 + - name: metrics + port: 8081 + protocol: TCP + type: ClusterIP + selector: + {{- include "app.matchLabels" . | indent 4 }} + component: afm-adapter \ No newline at end of file diff --git a/src/main/helm/templates/service_account.yaml b/src/main/helm/templates/service_account.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3bac8e223d1fd108b386d1f06ed4e9fb2284a67c --- /dev/null +++ b/src/main/helm/templates/service_account.yaml @@ -0,0 +1,31 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if (.Values.serviceAccount).create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "app.serviceAccountName" . }} + namespace: {{ include "app.namespace" . }} +{{- end }} \ No newline at end of file diff --git a/src/main/helm/templates/service_monitor.yaml b/src/main/helm/templates/service_monitor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d9e7fc6975c5c977beee87216c9b45a2397fcba6 --- /dev/null +++ b/src/main/helm/templates/service_monitor.yaml @@ -0,0 +1,43 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} + component: afm-adapter-service-monitor +spec: + endpoints: + - port: metrics + path: /actuator/prometheus + namespaceSelector: + matchNames: + - {{ include "app.namespace" . }} + selector: + matchLabels: + {{- include "app.matchLabels" . | indent 6 }} + component: afm-adapter-service \ No newline at end of file diff --git a/src/main/helm/templates/tests/test-ingress-connection.yaml b/src/main/helm/templates/tests/test-ingress-connection.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b966b4b1a645aad9972344789cf9535a59f1d8df --- /dev/null +++ b/src/main/helm/templates/tests/test-ingress-connection.yaml @@ -0,0 +1,39 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-test-ingress" + labels: + {{- include "app.matchLabels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['https://{{ .Values.ingress.host }}/ws/intelliform_formDatas.wsdl'] + restartPolicy: Never diff --git a/src/main/helm/templates/tests/test-service-connection.yaml b/src/main/helm/templates/tests/test-service-connection.yaml new file mode 100644 index 0000000000000000000000000000000000000000..91bd4b3ec131fd45df62429e77beb1977c9ea2eb --- /dev/null +++ b/src/main/helm/templates/tests/test-service-connection.yaml @@ -0,0 +1,39 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-test-connection" + labels: + {{- include "app.matchLabels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ .Release.Name }}:8080/ws/intelliform_formDatas.wsdl'] + restartPolicy: Never diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..148aec40b24231ef2cd08e1622e4d4e223835632 --- /dev/null +++ b/src/main/helm/values.yaml @@ -0,0 +1,52 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +baseUrl: test.sh.ozg-cloud.de + +image: + repo: docker.ozg-sh.de + name: intelliform-adapter # [default: intelliform-adapter] + tag: latest # [default: latest] + +# env: +# overrideSpringProfiles: "oc,prod" + # customList: # add name value pair for additional environments + # - name: Dinge + # value: true +#resources: +# limits: +# cpu: 1 # [default: 1] +# memory: 1200Mi # [default: 1200Mi] +# requests: +# cpu: 100m # [default: 100m] +# memory: 250Mi # [default: 250Mi] + +ingress: + enabled: true + # overrideHost: kiel-afm.dev.by.ozg-cloud.de + +routing: + targetVorgangManagerName: vorgang-manager +# fallbackStrategy: DENY +# routingStrategy: SINGLE diff --git a/src/test/helm-linter-values.yaml b/src/test/helm-linter-values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..45d5d4b870e258b10f4e9bfb0cecd104318e7a84 --- /dev/null +++ b/src/test/helm-linter-values.yaml @@ -0,0 +1,31 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +ozgcloud: + environment: test + bezeichner: helm + bundesland: sh + +networkPolicy: + dnsServerNamespace: test-dns-server-namespace \ No newline at end of file diff --git a/src/test/helm/deployment_63_chars_test.yaml b/src/test/helm/deployment_63_chars_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7277b5dc56e2b1b78d533a74beb60684758bed67 --- /dev/null +++ b/src/test/helm/deployment_63_chars_test.yaml @@ -0,0 +1,55 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deyploment less than 63 chars +release: + name: eingang-manager + namespace: sh-helm-test + +chart: + name: eingang-manager +set: + ozgcloud.environment: test +templates: + - templates/deployment.yaml + +tests: + - it: should fail on .Release.Namespace length longer than 63 characters + release: + namespace: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 + asserts: + - failedTemplate: + errorMessage: .Release.Namespace test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) + - it: should not fail on .Release.Namespace length less than 63 characters + asserts: + - notFailedTemplate: {} + - it: should fail on .Chart.Name-.Chart.Version length longer than 63 characters + chart: + version: 1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 + asserts: + - failedTemplate: + errorMessage: .Chart.Name-.Chart.Version Intelliform-Adapter-1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) + - it: should not fail on .Chart.Name-.Chart.Version length less than 63 characters + asserts: + - notFailedTemplate: {} \ No newline at end of file diff --git a/src/test/helm/deployment_bindings_test.yaml b/src/test/helm/deployment_bindings_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9b3f68067786e6cdcb5a77c4dd07fced16581305 --- /dev/null +++ b/src/test/helm/deployment_bindings_test.yaml @@ -0,0 +1,46 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: deployment bindings +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: should have temp-dir volume + asserts: + - contains: + path: spec.template.spec.containers[0].volumeMounts + content: + name: temp-dir + mountPath: "/tmp" + + - it: should have temp-dir volume mount + asserts: + - contains: + path: spec.template.spec.volumes + content: + name: temp-dir + emptyDir: {} + diff --git a/src/test/helm/deployment_container_security_context_test.yaml b/src/test/helm/deployment_container_security_context_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d72bb6276c5cfc154f2e57a7d89bb8a6a19810a3 --- /dev/null +++ b/src/test/helm/deployment_container_security_context_test.yaml @@ -0,0 +1,90 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: check default values + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.privileged + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem + value: false + - equal: + path: spec.template.spec.containers[0].securityContext.runAsNonRoot + value: true + - isNull: + path: spec.template.spec.containers[0].securityContext.runAsUser + - isNull: + path: spec.template.spec.containers[0].securityContext.runAsGroup + - isNull: + path: spec.template.spec.securityContext.fsGroup + - isNull: + path: spec.template.spec.containers[0].securityContext.capabilities + - it: check runAsUser + set: + securityContext.runAsUser: 1000 + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.runAsUser + value: 1000 + - it: check runAsGroup + set: + securityContext.runAsGroup: 1000 + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.runAsGroup + value: 1000 + - it: check fsGroup + set: + podSecurityContext.fsGroup: 1000 + asserts: + - equal: + path: spec.template.spec.securityContext.fsGroup + value: 1000 + - it: check capabilities + set: + securityContext: + capabilities: + drop: + - ALL + asserts: + - equal: + path: spec.template.spec.containers[0].securityContext.capabilities + value: + drop: + - ALL \ No newline at end of file diff --git a/src/test/helm/deployment_defaults_labels_test.yaml b/src/test/helm/deployment_defaults_labels_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..05800075593994326b5bbe2b477ec4fd649f312e --- /dev/null +++ b/src/test/helm/deployment_defaults_labels_test.yaml @@ -0,0 +1,49 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - templates/deployment.yaml + - templates/service_monitor.yaml + - templates/service.yaml +set: + ozgcloud.environment: test +tests: + - it: check default labels + asserts: + - equal: + path: metadata.labels["app.kubernetes.io/instance"] + value: afm-adapter + - equal: + path: metadata.labels["app.kubernetes.io/name"] + value: intelliform-adapter + - equal: + path: metadata.labels["app.kubernetes.io/part-of"] + value: ozgcloud + - equal: + path: metadata.labels["app.kubernetes.io/namespace"] + value: sh-helm-test diff --git a/src/test/helm/deployment_env_test.yaml b/src/test/helm/deployment_env_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0b8b0d7ad83edbaf7ad0b21bad38793e083aa2a2 --- /dev/null +++ b/src/test/helm/deployment_env_test.yaml @@ -0,0 +1,50 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test environments +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: check customList + template: deployment.yaml + set: + env.customList: + - name: my_test_environment_name + value: "A test value" + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: my_test_environment_name + value: "A test value" + - it: check customList test value is not set by default + template: deployment.yaml + asserts: + - notContains: + path: spec.template.spec.containers[0].env + content: + name: my_test_environment_name + value: "A test value" diff --git a/src/test/helm/deployment_host_aliases_test.yaml b/src/test/helm/deployment_host_aliases_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f4ee222138835dcfd60d7f97195f2e0bb2d7d72b --- /dev/null +++ b/src/test/helm/deployment_host_aliases_test.yaml @@ -0,0 +1,53 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: deployment host aliases +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml + +set: + ozgcloud.environment: test +tests: + - it: should not set hostAliases + asserts: + - isNull: + path: spec.template.spec.hostAliases + - it: should set hostAliases + set: + hostAliases: + - ip: "127.0.0.1" + hostname: + - "eins" + - "zwei" + asserts: + - contains: + path: spec.template.spec.hostAliases + content: + ip: "127.0.0.1" + hostname: + - "eins" + - "zwei" diff --git a/src/test/helm/deployment_imagepull_secret_test.yaml b/src/test/helm/deployment_imagepull_secret_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8fce16a1c2a3437f7b381ff3c60635b9b1bfa72b --- /dev/null +++ b/src/test/helm/deployment_imagepull_secret_test.yaml @@ -0,0 +1,49 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: afm-adapter + namespace: sh-helm-test +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: should use default imagePull secret + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: afm-adapter-image-pull-secret + - it: should set the imagePull secret + set: + imagePullSecret: image-pull-secret + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: image-pull-secret \ No newline at end of file diff --git a/src/test/helm/deployment_liveness_probe_test.yaml b/src/test/helm/deployment_liveness_probe_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ba01bd8e6e49026a523b3e0ffde67e69bfa06b78 --- /dev/null +++ b/src/test/helm/deployment_liveness_probe_test.yaml @@ -0,0 +1,52 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: livenessProbe should be disabled by default + template: deployment.yaml + asserts: + - notExists: + path: spec.template.spec.containers[0].livenessProbe + + - it: enable livenessProbe + template: deployment.yaml + set: + enableLivenessProbe: true + asserts: + - isSubset: + path: spec.template.spec.containers[0].livenessProbe + content: + failureThreshold: 3 + httpGet: + path: /actuator/health/liveness + port: 8081 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 diff --git a/src/test/helm/deployment_resources_test.yaml b/src/test/helm/deployment_resources_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1f21714510de586bc2a84da5271ae2f554384db6 --- /dev/null +++ b/src/test/helm/deployment_resources_test.yaml @@ -0,0 +1,60 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: afm-adapter +templates: + - templates/deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: test resources + set: + resources: + limits: + cpu: "11m" + memory: "22Mi" + requests: + cpu: "33m" + memory: "44Mi" + asserts: + - equal: + path: spec.template.spec.containers[0].resources.limits.cpu + value: 11m + - equal: + path: spec.template.spec.containers[0].resources.limits.memory + value: 22Mi + - equal: + path: spec.template.spec.containers[0].resources.requests.cpu + value: 33m + - equal: + path: spec.template.spec.containers[0].resources.requests.memory + value: 44Mi + + - it: test empty resources + asserts: + - isEmpty: + path: spec.template.spec.containers[0].resources + diff --git a/src/test/helm/deployment_routing-strategy.yaml b/src/test/helm/deployment_routing-strategy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3ab7d5e8e3ffdacffed3676cc21b22c05cb089f6 --- /dev/null +++ b/src/test/helm/deployment_routing-strategy.yaml @@ -0,0 +1,73 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - deployment.yaml +set: + image.tag: latest + ozgcloud.environment: test +tests: + - it: validate default routing values without questions.yaml + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_routingStrategy + value: SINGLE + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_fallbackStrategy + value: DENY + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_negotiationType + value: PLAINTEXT + - it: validate routing infos + set: + routing: + routingStrategy: MULTI + fallbackStrategy: FUNDSTELLE + negotiationType: TLS + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_routingStrategy + value: MULTI + - contains: + path: spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_fallbackStrategy + value: FUNDSTELLE + - contains: + path: spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_negotiationType + value: TLS \ No newline at end of file diff --git a/src/test/helm/deployment_service_account_test.yaml b/src/test/helm/deployment_service_account_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f0d38826260c06cfbd9f87578e21e0a2274ab625 --- /dev/null +++ b/src/test/helm/deployment_service_account_test.yaml @@ -0,0 +1,83 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: deployment service account +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/deployment.yaml + +set: + ozgcloud.environment: test +tests: + - it: should use afm-adapter service account name + set: + image.name: intelliform-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: afm-adapter-service-account + - it: should use fs-adapter service account name + set: + image.name: formsolutions-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: fs-adapter-service-account + - it: should use formcycle-adapter service account name + set: + image.name: formcycle-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: formcycle-adapter-service-account + - it: should use enterprise-adapter service account name + set: + image.name: enterprise-adapter + serviceAccount: + create: true + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: enterprise-adapter-service-account + - it: should use service account with name + set: + serviceAccount: + create: true + name: helm-service-account + asserts: + - equal: + path: spec.template.spec.serviceAccountName + value: helm-service-account + - it: should use default service account + asserts: + - isNull: + path: spec.template.spec.serviceAccountName \ No newline at end of file diff --git a/src/test/helm/deployment_springProfile_test.yaml b/src/test/helm/deployment_springProfile_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..57762f63894443d86351c522b301d36f01de9886 --- /dev/null +++ b/src/test/helm/deployment_springProfile_test.yaml @@ -0,0 +1,53 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test spring profiles +release: + name: if-adapter +templates: + - templates/deployment.yaml + +tests: + - it: should override spring profiles + set: + env.overrideSpringProfiles: oc,stage,ea + asserts: + - isKind: + of: Deployment + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_profiles_active + value: oc,stage,ea + - it: should generate spring profiles + set: + ozgcloud.environment: test + asserts: + - isKind: + of: Deployment + - contains: + path: spec.template.spec.containers[0].env + content: + name: spring_profiles_active + value: oc, test \ No newline at end of file diff --git a/src/test/helm/deployment_test.yaml b/src/test/helm/deployment_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4d70a945e345fe99a191672e974a9d1f149e30d3 --- /dev/null +++ b/src/test/helm/deployment_test.yaml @@ -0,0 +1,54 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - deployment.yaml +set: + ozgcloud.environment: test +tests: + - it: validate image type and container image + asserts: + - isKind: + of: Deployment + - equal: + path: spec.template.spec.containers[0].image + value: docker.ozg-sh.de/intelliform-adapter:latest + - it: validate image pull secret resource name + asserts: + - equal: + path: spec.template.spec.imagePullSecrets[0].name + value: intelliform-adapter-image-pull-secret + - equal: + path: spec.template.spec.containers[0].image + value: docker.ozg-sh.de/intelliform-adapter:latest + - it: should have label ozg-component + asserts: + - equal: + path: metadata.labels.ozg-component + value: eingangsadapter + diff --git a/src/test/helm/image-pull-secret-test.yaml b/src/test/helm/image-pull-secret-test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3132d4df003f224a022e880ff6787e5841c555c9 --- /dev/null +++ b/src/test/helm/image-pull-secret-test.yaml @@ -0,0 +1,57 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test image pull secret +templates: + - templates/image-pull-secret.yaml +release: + name: intelliform-adaptero + namespace: helm-test +tests: + - it: should match basic data + set: + imageCredentials: + registry: docker.ozg-sh.de + username: test + password: test1234 + email: webmaster@ozg-sh.de + asserts: + - containsDocument: + kind: Secret + apiVersion: v1 + - equal: + path: metadata.name + value: intelliform-adaptero-image-pull-secret + - equal: + path: metadata.namespace + value: helm-test + - isNotEmpty: + path: data[".dockerconfigjson"] + + - it: should not create image pull secret + set: + imagePullSecret: "image-pull-secret" + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/src/test/helm/ingress-create-or-not.yaml b/src/test/helm/ingress-create-or-not.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9b302ef3bb3420c37caad7b69cc811878ed6f315 --- /dev/null +++ b/src/test/helm/ingress-create-or-not.yaml @@ -0,0 +1,49 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test ingress creation dependent from values +templates: + - templates/ingress.yaml + +set: + ozgcloud: + bezeichner: helm + +tests: + - it: create ingress by config + set: + ingress.enabled: true + asserts: + - isKind: + of: Ingress + - it: not create ingress by config + set: + ingress.enabled: false + asserts: + - hasDocuments: + count: 0 + - it: ingress should be created by default + asserts: + - isKind: + of: Ingress diff --git a/src/test/helm/ingress-nginx-tests.yaml b/src/test/helm/ingress-nginx-tests.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9543197259e1e332d704878e5b8574aec62c825d --- /dev/null +++ b/src/test/helm/ingress-nginx-tests.yaml @@ -0,0 +1,68 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test ingress options +templates: + - templates/ingress.yaml + +set: + ozgcloud: + bezeichner: helm + +tests: + - it: should create afm ingress tls + release: + name: afm-adapter + asserts: + - equal: + path: spec.tls[0].secretName + value: helm-afm-adapter-tls + - it: should create afm ingress tls + release: + name: fs-adapter + set: + image.name: formsolutions-adapter + asserts: + - equal: + path: spec.tls[0].secretName + value: helm-fs-adapter-tls + + - it: should not set secretName + set: + ingress.skipTlsSecret: true + asserts: + - isNull: + path: spec.tls[0].secretName + + - it: should not set ingressClassName + asserts: + - isNull: + path: spec.ingressClassName + - it: should set ingressClassName + set: + ingress.className: nginx + asserts: + - equal: + path: spec.ingressClassName + value: nginx \ No newline at end of file diff --git a/src/test/helm/ingress_host_test.yaml b/src/test/helm/ingress_host_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..07dc46d6f3815a6d1d228dc91b2e630b8cfb792f --- /dev/null +++ b/src/test/helm/ingress_host_test.yaml @@ -0,0 +1,42 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test ozgcloud bezeichner length +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/ingress.yaml + +tests: + - it: should fail on bezeichner (in ingress host) length longer than 46 characters + template: ingress.yaml + set: + ozgcloud: + bezeichner: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 + environment: test + bundesland: by + asserts: + - failedTemplate: + errorMessage: Bezeichner test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 46 Zeichen) \ No newline at end of file diff --git a/src/test/helm/ingress_test.yaml b/src/test/helm/ingress_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..02aa2308327f2b70e3afebd2b8726fe11ce1ca3d --- /dev/null +++ b/src/test/helm/ingress_test.yaml @@ -0,0 +1,147 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test ingress creation +release: + name: intelliform-adapter + namespace: sh-helm-test +templates: + - templates/ingress.yaml +set: + ozgcloud: + bezeichner: helm +tests: + - it: should match basic data + asserts: + - containsDocument: + kind: Ingress + apiVersion: networking.k8s.io/v1 + - equal: + path: metadata.name + value: intelliform-adapter + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should match service port number + asserts: + - equal: + path: spec.rules[0].http.paths[0].backend.service.port.number + value: 8080 + - it: should match service name + asserts: + - equal: + path: spec.rules[0].http.paths[0].backend.service.name + value: intelliform-adapter + - it: should match service path + asserts: + - equal: + path: spec.rules[0].http.paths[0].path + value: '' + - it: should match service pathType + asserts: + - equal: + path: spec.rules[0].http.paths[0].pathType + value: ImplementationSpecific + - it: should create afm host + asserts: + - equal: + path: spec.rules[0].host + value: helm-afm.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-afm.test.sh.ozg-cloud.de + + + - it: should create fs host + set: + image.name: formsolutions-adapter + asserts: + - equal: + path: spec.rules[0].host + value: helm-fs.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-fs.test.sh.ozg-cloud.de + + - it: should create formcycle host + set: + image.name: formcycle-adapter + asserts: + - equal: + path: spec.rules[0].host + value: helm-formcycle.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-formcycle.test.sh.ozg-cloud.de + + + - it: should create custom adapter host + set: + ingress.adapterBezeichner: test + asserts: + - equal: + path: spec.rules[0].host + value: helm-test.test.sh.ozg-cloud.de + - equal: + path: spec.tls[0].hosts[0] + value: helm-test.test.sh.ozg-cloud.de + + - it: should use letsencrypt-prod cluster-issuer as default + asserts: + - equal: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + value: letsencrypt-prod + + - it: should use letsencrypt-staging cluster-issuer if use_staging_cert is true + set: + ingress.use_staging_cert: true + asserts: + - equal: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + value: letsencrypt-staging + + - it: should use letsencrypt-prod cluster-issuer if use_staging_cert is false + set: + ingress.use_staging_cert: false + asserts: + - equal: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + value: letsencrypt-prod + + - it: should disable default cert-manager + set: + ingress.disableDefaultCertManager: true + asserts: + - notExists: + path: metadata.annotations["cert-manager.io/cluster-issuer"] + + - it: should set ingress annotation proxy body size to 42m + set: + ingress: + annotations: + nginx.ingress.kubernetes.io/proxy-body-size: 42m + asserts: + - equal: + path: metadata.annotations["nginx.ingress.kubernetes.io/proxy-body-size"] + value: 42m \ No newline at end of file diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..55b3b51857c1d66493c98ab4c7b1dff7e9869407 --- /dev/null +++ b/src/test/helm/network_policy_test.yaml @@ -0,0 +1,111 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: network policy test +release: + name: afm-adapter + namespace: by-helm-test +templates: + - templates/network_policy.yaml +tests: + - it: should match apiVersion + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - isAPIVersion: + of: networking.k8s.io/v1 + - it: should match kind + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - isKind: + of: NetworkPolicy + - it: validate metadata + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - equal: + path: metadata + value: + name: network-policy-afm-adapter + namespace: by-helm-test + - it: validate spec + set: + networkPolicy: + dnsServerNamespace: test-dns-namespace + asserts: + - equal: + path: spec + value: + podSelector: + matchLabels: + ozg-component: eingangsadapter + policyTypes: + - Ingress + - Egress + ingress: + - ports: + - port: 8080 + egress: + - to: + - podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: test-dns-namespace + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - port: 5353 + protocol: UDP + - port: 5353 + protocol: TCP + + - it: test network policy disabled + set: + networkPolicy: + disabled: true + dnsServerNamespace: test-dns-namespace + asserts: + - hasDocuments: + count: 0 + + - it: test network policy unset should be disabled + set: + networkPolicy: + disabled: false + dnsServerNamespace: test-dns-namespace + asserts: + - hasDocuments: + count: 1 \ No newline at end of file diff --git a/src/test/helm/service_account_test.yaml b/src/test/helm/service_account_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b84bdfe171fd7c0d9274f794d3e9a5671b4ddf80 --- /dev/null +++ b/src/test/helm/service_account_test.yaml @@ -0,0 +1,105 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test service account +release: + name: eingang-manager + namespace: sh-helm-test +templates: + - templates/service_account.yaml +tests: + - it: should create default afm adapter service account name + set: + image.name: intelliform-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: afm-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create default fs adapter service account name + set: + image.name: formsolutions-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: fs-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create default formcycle adapter service account name + set: + image.name: formcycle-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: formcycle-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create default enterprise adapter service account name + set: + image.name: enterprise-adapter + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: enterprise-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create service account with name + set: + serviceAccount: + create: true + name: helm-service-account + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: helm-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should not create service account + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e9eea43baa20e6998e234accf925119e47cdceec --- /dev/null +++ b/src/test/helm/service_monitor_test.yaml @@ -0,0 +1,76 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: afm-adapter + namespace: sh-helm-test +templates: + - templates/service_monitor.yaml +tests: + - it: should have the label component with value afm-adapter-service-monitor attached + asserts: + - isKind: + of: ServiceMonitor + - equal: + path: metadata.labels["component"] + value: afm-adapter-service-monitor + - it: should have the metrics endpoint configured by default + set: + env.springProfiles: oc,stage + asserts: + - isKind: + of: ServiceMonitor + - contains: + path: spec.endpoints + content: + port: metrics + path: /actuator/prometheus + - it: should be able to enable the endpoint + asserts: + - isKind: + of: ServiceMonitor + - contains: + path: spec.endpoints + content: + port: metrics + path: /actuator/prometheus + - it: namespace selector should contain the namespace + asserts: + - contains: + path: spec.namespaceSelector.matchNames + content: sh-helm-test + - it: selector should contain the component label with the value afm-adapter-service + asserts: + - equal: + path: spec.selector.matchLabels["component"] + value: afm-adapter-service + - it: selector should contain helm recommended labels name and namespace + asserts: + - equal: + path: spec.selector.matchLabels["app.kubernetes.io/name"] + value: afm-adapter + - equal: + path: spec.selector.matchLabels["app.kubernetes.io/namespace"] + value: sh-helm-test diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e3624485d451accb5529876418ad0e63a6f8d65e --- /dev/null +++ b/src/test/helm/service_test.yaml @@ -0,0 +1,78 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test deployment +release: + name: afm-adapter + namespace: sh-helm-test +templates: + - templates/service.yaml +tests: + - it: should have the label component with value afm-adapter-service attached + asserts: + - isKind: + of: Service + - equal: + path: metadata.labels["component"] + value: afm-adapter-service + - it: should be of type ClusterIP + asserts: + - equal: + path: spec.type + value: ClusterIP + - it: ports should contain the 8080 default http port + asserts: + - contains: + path: spec.ports + content: + name: http + port: 8080 + protocol: TCP + targetPort: 8080 + count: 1 + any: true + - it: ports should contain the metrics port + asserts: + - contains: + path: spec.ports + content: + name: metrics + port: 8081 + protocol: TCP + count: 1 + any: true + - it: selector should contain the component label with the value afm-adapter + asserts: + - equal: + path: spec.selector["component"] + value: afm-adapter + - it: selector should contain helm recommended labels name and namespace + asserts: + - equal: + path: spec.selector["app.kubernetes.io/name"] + value: afm-adapter + - equal: + path: spec.selector["app.kubernetes.io/namespace"] + value: sh-helm-test + \ No newline at end of file diff --git a/xta-adapter/doc/example-response-getmessages-items-pending.xml b/xta-adapter/doc/example-response-getmessages-items-pending.xml new file mode 100644 index 0000000000000000000000000000000000000000..8508a42439026ba9650354834f1fe7b2da029dfd --- /dev/null +++ b/xta-adapter/doc/example-response-getmessages-items-pending.xml @@ -0,0 +1,76 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> + <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> + <tran:MsgBoxResponse xmlns:tran="http://www.osci.eu/ws/2008/05/transport"> + <tran:MsgBoxResponse MsgBoxRequestID="urn:de:xta:requestid:xta-tester:e8959968-a8c3-4ba4-aad1-5928ad6030dc"> + <tran:ItemsPending>1</tran:ItemsPending> + </tran:MsgBoxResponse> + </tran:MsgBoxResponse> + <wsa:Action>http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest</wsa:Action> + <wsa:RelatesTo>uuid:d30e3dbd-4724-4a08-84b9-55e61ce1b404</wsa:RelatesTo> + </soapenv:Header> + <soapenv:Body> + <tran:MsgStatusList xmlns:tran="http://www.osci.eu/ws/2008/05/transport" xmlns:tran1="http://www.osci.eu/ws/2014/10/transport" xmlns:add="http://www.w3.org/2005/08/addressing"> + <tran1:MessageMetaData> + <tran1:DeliveryAttributes> + <tran1:Origin>2022-02-25T14:13:57.613+01:00</tran1:Origin> + <tran1:InitialSend>2022-02-25T14:13:57.613+01:00</tran1:InitialSend> + <tran1:Delivery>2022-02-25T14:13:57.613+01:00</tran1:Delivery> + <tran1:InitialFetch>2022-02-25T14:13:57.613+01:00</tran1:InitialFetch> + </tran1:DeliveryAttributes> + <tran1:Originators> + <tran1:Author> + <tran1:Identifier category="category" type="type"/> + </tran1:Author> + <tran1:Sender> + <tran1:Identifier category="category" type="type"/> + </tran1:Sender> + </tran1:Originators> + <tran1:Destinations> + <tran1:Reader> + <tran1:Identifier category="category" type="type"/> + </tran1:Reader> + </tran1:Destinations> + <tran1:MsgIdentification> + <add:MessageID>urn:de:xta:messageid:xta-tester:0149cd17-a905-4b4b-83c6-10b5ca04a96b</add:MessageID> + </tran1:MsgIdentification> + <tran1:Qualifier> + <tran1:Service>urn:service</tran1:Service> + <tran1:BusinessScenario> + <tran1:Defined> + <name>test</name> + </tran1:Defined> + </tran1:BusinessScenario> + <tran1:MessageType> + <name>mytype</name> + </tran1:MessageType> + </tran1:Qualifier> + <tran1:MsgSize>10</tran1:MsgSize> + </tran1:MessageMetaData> + </tran:MsgStatusList> + </soapenv:Body> +</soapenv:Envelope> \ No newline at end of file diff --git a/xta-adapter/doc/example-response-getmessages-no-messages-available.xml b/xta-adapter/doc/example-response-getmessages-no-messages-available.xml new file mode 100644 index 0000000000000000000000000000000000000000..4c81d65ef0cc41685d68542d4ac974d871a52671 --- /dev/null +++ b/xta-adapter/doc/example-response-getmessages-no-messages-available.xml @@ -0,0 +1,36 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> + <s:Header> + <a:Action s:mustUnderstand="1">http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest</a:Action> + <h:MsgBoxResponse MsgBoxRequestID="1" xmlns:h="http://www.osci.eu/ws/2008/05/transport" xmlns="http://www.osci.eu/ws/2008/05/transport" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <NoMessageAvailable reason="Keine Nachrichten gefunden."/> + </h:MsgBoxResponse> + </s:Header> + <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <MsgStatusList xmlns="http://www.osci.eu/ws/2008/05/transport"/> + </s:Body> +</s:Envelope> \ No newline at end of file diff --git a/xta-adapter/pom.xml b/xta-adapter/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..3240653ff7976f2a3b35d6c43d2fc94aa029ed1e --- /dev/null +++ b/xta-adapter/pom.xml @@ -0,0 +1,185 @@ +<?xml version="1.0"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>eingang-manager</artifactId> + <version>2.4.0</version> + </parent> + <artifactId>xta-adapter</artifactId> + <name>Eingangs Adapter - XTA</name> + <packaging>jar</packaging> + + <properties> + <spring-boot.build-image.imageName>docker.ozg-sh.de/xta-adapter:build-latest</spring-boot.build-image.imageName> + </properties> + + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web-services</artifactId> + <exclusions> + <exclusion> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.springframework.ws</groupId> + <artifactId>spring-ws-security</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-log4j2</artifactId> + </dependency> + <!-- own projects --> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>common</artifactId> + </dependency> + <dependency> + <groupId>de.ozgcloud.eingang</groupId> + <artifactId>semantik-adapter</artifactId> + </dependency> + <!--mapstruct--> + <dependency> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.ws</groupId> + <artifactId>spring-ws-core</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.ws</groupId> + <artifactId>spring-ws-support</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.ws</groupId> + <artifactId>spring-ws-test</artifactId> + <scope>test</scope> + </dependency> + <!-- JAXB API only --> + <dependency> + <groupId>jakarta.xml.bind</groupId> + <artifactId>jakarta.xml.bind-api</artifactId> + </dependency> + <dependency> + <groupId>com.sun.xml.bind</groupId> + <artifactId>jaxb-impl</artifactId> + </dependency> + <!-- Dev --> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-devtools</artifactId> + <scope>runtime</scope> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-configuration-processor</artifactId> + <optional>true</optional> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <configuration> + <profiles>local,sec</profiles> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>pl.project13.maven</groupId> + <artifactId>git-commit-id-plugin</artifactId> + </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jaxb2-maven-plugin</artifactId> + <executions> + <execution> + <id>wsdl1</id> + <goals> + <goal>xjc</goal> + </goals> + <configuration> + <sourceType>wsdl</sourceType> + <sources> + <source>${basedir}/src/main/resources/XTA.wsdl</source> + </sources> + <clearOutputDir>false</clearOutputDir> + <arguments>-wsdl</arguments> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <profiles> + <profile> + <id>ci-build</id> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <executions> + <execution> + <id>build-image</id> + <phase>install</phase> + <goals> + <goal>build-image</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/xta-adapter/readme.md b/xta-adapter/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..e285cd941516971122a3d156ca0685b0dfb4da55 --- /dev/null +++ b/xta-adapter/readme.md @@ -0,0 +1,39 @@ +# Keystore passwort + +Das Keystore und Passwort müssen extra hinzugefügt werden. Keystore irgendwo im Dateisystem ablegen. +Dazu eine Datei 'application-sec.yml' anlegen: + +ozgcloud: + xta: + keystore: + store: file:<pfad zum keystore> + password: <geheim> + +Den Dienst dann mit dem Spring-Profile 'sec' starten. + +# P12 Datei erzeugen und als Umgerbungsvariable umwandeln + +Wir haben eine pfx Datei bekommen und wandeln diese in eine P12 Cert Datei um: + + keytool -importkeystore -srckeystore KOP_SH_KIEL_DEV.pfx -srcstoretype pkcs12 -destkeystore KOP_SH_KIEL_DEV.p12 -deststoretype PKCS12 + +Dann in Base64 umwandeln, damit es als Umgebungsvariable gesetzt werden kann: + + base64 KOP_SH_KIEL_DEV.p12 + +# Lokale Installation + +Lokal das Root CA in keystore laden (https://ddatabox.dataport.de/public/download-shares/XUok5Wk3EDGWyYaoFGldOeJfGu0J8pke): + + sudo keytool -trustcacerts -keystore /lib/jvm/java-1.17.0-openjdk-amd64/lib/security/cacerts -storepass changeit -importcert -alias dataportRoot -file DataportRootCA02.crt + +Port forwarding aktivieren. Um eine Verbindung zum Nachrichtenbroker aufbauen zu können, muss diese über den Hetzner-Server geroutet werden: + + ssh -L 3000:141.91.184.67:443 ozg-sh.de (ggf ssh -L 0.0.0.0:3000:141.91.184.67:443 ozg-sh.de) + +## deprecated + +DEPRECATED, da wir den HostNameVerifier deaktiviert haben: Hosts Datei erzeugen, damit der Hostname passt: + + 127.0.0.1 LI33-0005 + diff --git a/xta-adapter/run_helm_test.sh b/xta-adapter/run_helm_test.sh new file mode 100755 index 0000000000000000000000000000000000000000..f7933535a6f91e007f4531c5133f9cf0142a95bc --- /dev/null +++ b/xta-adapter/run_helm_test.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + + +set -e + +helm template ./src/main/helm/ -f src/test/helm-linter-values.yaml +helm lint -f src/test/helm-linter-values.yaml ./src/main/helm/ +cd src/main/helm && helm unittest -f '../../test/helm/*.yaml' . diff --git a/xta-adapter/src/main/helm/Chart.yaml b/xta-adapter/src/main/helm/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4a8b3ff63ff9370d16f6ddebc74c74426ad0a8fe --- /dev/null +++ b/xta-adapter/src/main/helm/Chart.yaml @@ -0,0 +1,31 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: v1 +appVersion: "1.1" +description: A Helm chart for Xta-Adapter +name: xta-adapter +version: 0.0.0-MANAGED-BY-JENKINS +icon: https://simpleicons.org/icons/helm.svg + diff --git a/xta-adapter/src/main/helm/README.md b/xta-adapter/src/main/helm/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e0a7cdacb4a8c23bb9516c07556c582b59199ad2 --- /dev/null +++ b/xta-adapter/src/main/helm/README.md @@ -0,0 +1,35 @@ +# Helm + +## Linter + +`helm lint -f test-values.yaml` + +## Unit-Tests + +Für Unit-Tests wird das helm [helm-unittest](https://github.com/quintush/helm-unittest) plugin benötigt. Die Unit-Tests liegen im Verzeichnis src/test/helm + +`helm unittest -f '../../test/helm/*.yaml' -v '../../test/helm/values/unit-values.yaml' .` + +## SyntaxCheck + +`helm template --debug -f test-values.yaml .` + +## Package + +`helm package --version=[version] .` + +## Versionierung + +Jenkins verwendet die Version aus der pom.xml + +### Master Branch + +Im master Branch werden die ersten 7 Zeichen vom git commit hash an die Version gehangen. + +### Release Branch + +Ist nur die Version aus der pom.xml + +### Feature Branch + +In einem feature Branch wird der Branchname an die Version gehangen. \ No newline at end of file diff --git a/xta-adapter/src/main/helm/app-readme.md b/xta-adapter/src/main/helm/app-readme.md new file mode 100644 index 0000000000000000000000000000000000000000..8d33e802a5142a579e690d124737d9e8b3ba7e7e --- /dev/null +++ b/xta-adapter/src/main/helm/app-readme.md @@ -0,0 +1 @@ +# Xta-Adapter \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/_helpers.tpl b/xta-adapter/src/main/helm/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..afcc6d669c8d184bc9029f310e6b9464372b5cfd --- /dev/null +++ b/xta-adapter/src/main/helm/templates/_helpers.tpl @@ -0,0 +1,67 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}} +{{/* Namespace */}} +{{- define "app.namespace" -}} +{{- if gt (len (.Release.Namespace)) 63 -}} +{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}} +{{- end -}} +{{ printf "%s" .Release.Namespace }} +{{- end -}} + +{{/* Chart: Name + Version */}} +{{- define "app.chart" -}} +{{- if gt (len (printf "%s-%s" .Chart.Name .Chart.Version)) 63 -}} +{{- fail (printf ".Chart.Name-.Chart.Version %s-%s ist zu lang (max. 63 Zeichen)" .Chart.Name .Chart.Version) -}} +{{- end -}} +{{ printf "%s-%s" .Chart.Name .Chart.Version }} +{{- end -}} + +{{/* Managed-by -> On Helm, this value is always Helm */}} +{{- define "app.managedBy" -}} +{{- if gt (len (.Release.Service)) 63 -}} +{{- fail (printf ".Release.Service %s ist zu lang (max. 63 Zeichen)" .Release.Service) -}} +{{- end -}} +{{ printf "%s" .Release.Service }} +{{- end -}} + +{{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}} +{{- define "app.defaultLabels" }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ include "app.managedBy" . }} +app.kubernetes.io/name: {{ .Release.Name }} +app.kubernetes.io/part-of: ozgcloud +app.kubernetes.io/version: {{ .Chart.Version }} +app.kubernetes.io/namespace: {{ include "app.namespace" . }} +helm.sh/chart: {{ include "app.chart" . }} +{{- end -}} + +{{- define "app.imagePullSecret" }} +{{- with .Values.imageCredentials }} +{{- printf "{\"auths\":{\"%s\":{\"username\":\"%s\",\"password\":\"%s\",\"email\":\"%s\",\"auth\":\"%s\"}}}" .registry .username .password .email (printf "%s:%s" .username .password | b64enc) | b64enc }} +{{- end }} +{{- end }} + +{{- define "app.envSpringProfiles" }} +{{- if (.Values.env).overrideSpringProfiles -}} +{{ printf "%s" (.Values.env).overrideSpringProfiles }} +{{- else -}} +{{ printf "oc, %s" (include "app.kopEnvironment" . ) }} +{{- end -}} +{{- end -}} + +{{- define "app.kopEnvironment" -}} +{{- required "Environment muss angegeben sein" (.Values.ozgcloud).environment -}} +{{- end -}} + +{{- define "app.xtaSchedule" -}} +{{- if (.Values.xta).schedule -}} +{{ .Values.xta.schedule | quote }} +{{- else if eq (include "app.kopEnvironment" . ) "dev" -}} +{{ "*/15 * * * *" | quote }} +{{- end -}} +{{- end -}} + +{{- define "app.serviceAccountName" -}} +{{ printf "%s" ( (.Values.serviceAccount).name | default "xta-adapter-service-account" ) }} +{{- end -}} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/image-pull-secret.yaml b/xta-adapter/src/main/helm/templates/image-pull-secret.yaml new file mode 100644 index 0000000000000000000000000000000000000000..508f0516881d1fb417082759fa76504dd2d2ba1f --- /dev/null +++ b/xta-adapter/src/main/helm/templates/image-pull-secret.yaml @@ -0,0 +1,34 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if not (.Values.imagePullSecret) }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Release.Name }}-image-pull-secret + namespace: {{ include "app.namespace" . }} +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: {{ include "app.imagePullSecret" . }} +{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/network_policy.yaml b/xta-adapter/src/main/helm/templates/network_policy.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7b33ebedd9b7633dda932c24574480c8d8d46c2c --- /dev/null +++ b/xta-adapter/src/main/helm/templates/network_policy.yaml @@ -0,0 +1,73 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if not (.Values.networkPolicy).disabled }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: network-policy-xta-adapter + namespace: {{ .Release.Namespace }} +spec: + podSelector: + matchLabels: + ozg-component: xta-adapter + policyTypes: + - Egress + egress: + - to: + - podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: {{ required "networkPolicy.dnsServerNamespace must be set" (.Values.networkPolicy).dnsServerNamespace }} + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - port: 5353 + protocol: UDP + - port: 5353 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: ssh-port-forward + ports: + - port: 443 + protocol: TCP + - port: 80 + protocol: TCP + - port: 9000 + protocol: TCP +{{- with (.Values.networkPolicy).additionalEgressConfig }} +{{ toYaml . | indent 2 }} +{{- end }} + +{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/service_account.yaml b/xta-adapter/src/main/helm/templates/service_account.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3bac8e223d1fd108b386d1f06ed4e9fb2284a67c --- /dev/null +++ b/xta-adapter/src/main/helm/templates/service_account.yaml @@ -0,0 +1,31 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if (.Values.serviceAccount).create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "app.serviceAccountName" . }} + namespace: {{ include "app.namespace" . }} +{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f0f7984c5a466618ade0e5b9853cbcc70eea606b --- /dev/null +++ b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml @@ -0,0 +1,174 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +apiVersion: batch/v1 +kind: CronJob +metadata: + name: {{ .Release.Name }} + namespace: {{ include "app.namespace" . }} + labels: + {{- include "app.defaultLabels" . | indent 4 }} +spec: + schedule: {{ include "app.xtaSchedule" . }} + successfulJobsHistoryLimit: 3 + failedJobsHistoryLimit: 3 + concurrencyPolicy: Forbid + startingDeadlineSeconds: 120 + jobTemplate: + spec: + backoffLimit: 1 + template: + metadata: + labels: + workload: xta-adapter-cronjob + ozg-component: xta-adapter + spec: + {{- if (.Values.serviceAccount).create }} + serviceAccountName: {{ include "app.serviceAccountName" . }} + {{- end }} + restartPolicy: Never + containers: + - name: xta-adapter + image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ (.Values.image).tag }}" + imagePullPolicy: Always + env: + - name: spring_profiles_active + value: {{ include "app.envSpringProfiles" . }} + - name: SERVICE_BINDING_ROOT + value: "/bindings" + - name: ozgcloud_xta_server_name + value: {{ (.Values.xta).server.name }} + - name: ozgcloud_xta_server_address + value: {{ (.Values.xta).server.address }} + - name: ozgcloud_xta_server_protocol + value: {{ (.Values.xta).server.protocol }} + - name: ozgcloud_xta_identifier + value: {{ quote (.Values.xta).identifier }} + - name: ozgcloud_xta_keystore_file + value: "keystore/xta-keystore.p12" + - name: ozgcloud_xta_keystore_password + valueFrom: + secretKeyRef: + name: "xta-keystore" + key: password + optional: false + - name: ozgcloud_adapter_fallbackStrategy + value: {{ (.Values.routing).fallbackStrategy | default "DENY"}} + - name: ozgcloud_adapter_routingStrategy + value: {{ (.Values.routing).routingStrategy | default "SINGLE"}} + {{- if (.Values.routing).targetVorgangManagerName }} + - name: ozgcloud_adapter_targetVorgangManagerName + value: {{ (.Values.routing).targetVorgangManagerName}} + - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName }}_address + value: 'vorgang-manager.{{ coalesce (.Values.routing).targetNamespace .Release.Namespace }}:9090' + - name: grpc_client_vorgang-manager-{{ (.Values.routing).targetVorgangManagerName }}_negotiationType + value: {{ (.Values.routing).negotiationType | default "PLAINTEXT" }} + {{- end }} + volumeMounts: + - name: bindings + mountPath: "/bindings/ca-certificates/type" + subPath: type + readOnly: true + - name: xta-root-ca + mountPath: "/bindings/ca-certificates/xta-root-ca.crt" + subPath: ca.crt + readOnly: true + - name: xta-keystore + mountPath: "/workspace/keystore/xta-keystore.p12" + subPath: file + readOnly: true + - name: temp-dir + mountPath: "/tmp" + securityContext: + allowPrivilegeEscalation: false + privileged: false + readOnlyRootFilesystem: false + runAsNonRoot: true + {{- with (.Values.securityContext).runAsUser }} + runAsUser: {{ . }} + {{- end }} + {{- with (.Values.securityContext).runAsGroup }} + runAsGroup: {{ . }} + {{- end }} + {{- with (.Values.securityContext).capabilities }} + capabilities: +{{ toYaml . | indent 18 }} + {{- end }} + resources: + {{- with .Values.resources }} +{{ toYaml . | indent 16 }} + {{- end }} + + {{- if (.Values.dummyProbesEnabled) }} + livenessProbe: + exec: + command: + - echo + - '>' + - /dev/null + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + readinessProbe: + exec: + command: + - echo + - '>' + - /dev/null + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + startupProbe: + exec: + command: + - echo + - '>' + - /dev/null + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 3 + {{- end }} + + volumes: + - name: bindings + configMap: + name: xta-adapter-bindings-type + - name: xta-root-ca + secret: + secretName: xta-root-ca + - name: xta-keystore + secret: + secretName: xta-keystore + - name: temp-dir + emptyDir: {} + imagePullSecrets: + {{- if .Values.imagePullSecret }} + - name: {{ .Values.imagePullSecret }} + {{ else }} + - name: {{ .Release.Name }}-image-pull-secret + {{- end }} + {{- with .Values.podSecurityContext }} + securityContext: +{{ toYaml . | indent 12 }} + {{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml b/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2f35e2bd402a6ba245c7b4137bff0f0f0bdbf084 --- /dev/null +++ b/xta-adapter/src/main/helm/templates/xta_bindings_type_configmap.yaml @@ -0,0 +1,34 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if (.Values.xta).rootCa }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: xta-adapter-bindings-type + namespace: {{ include "app.namespace" . }} +data: + type: | + ca-certificates +{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml b/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9bf1b742ba307335cc7b41ade8092e07f9ec754b --- /dev/null +++ b/xta-adapter/src/main/helm/templates/xta_keystore_secret.yaml @@ -0,0 +1,36 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if (.Values.xta).keystore }} +apiVersion: v1 +kind: Secret +metadata: + name: xta-keystore + namespace: {{ include "app.namespace" . }} +type: Opaque +stringData: + password: {{ .Values.xta.keystore.password }} +data: + file: {{ .Values.xta.keystore.file }} +{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml b/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml new file mode 100644 index 0000000000000000000000000000000000000000..38786208a0821414bd594564dc69194b375c6a72 --- /dev/null +++ b/xta-adapter/src/main/helm/templates/xta_root_ca_secret.yaml @@ -0,0 +1,34 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +{{- if (.Values.xta).rootCa }} +apiVersion: v1 +kind: Secret +metadata: + name: xta-root-ca + namespace: {{ include "app.namespace" . }} +type: Opaque +data: + ca.crt: {{ .Values.xta.rootCa }} +{{- end }} \ No newline at end of file diff --git a/xta-adapter/src/main/helm/values.yaml b/xta-adapter/src/main/helm/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..dd07230341ab50ffc83b4b68ac4a40345498b14d --- /dev/null +++ b/xta-adapter/src/main/helm/values.yaml @@ -0,0 +1,36 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +image: + repo: docker.ozg-sh.de + name: xta-adapter + tag: 9.9.99 + +# env: +# overrideSpringProfiles: "oc,prod" + +routing: + targetVorgangManagerName: vorgang-manager + fallbackStrategy: DENY + routingStrategy: SINGLE \ No newline at end of file diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..34ff1ebe50bfca16307099a09ff33e894cd4058f --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponse.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.math.BigInteger; +import java.util.stream.Stream; + +import eu.osci.ws._2014._10.transport.MessageMetaData; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@AllArgsConstructor +@Getter +@Builder +class MsgStatusListTypeAndHeaderResponse { + private String msgBoxRequestID; + private boolean noMessageAvailable; + private BigInteger messageItemsPending; + private Stream<MessageMetaData> messages; +} \ No newline at end of file diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java new file mode 100644 index 0000000000000000000000000000000000000000..102e15c63f284aab81999f5b42b8c39e08236fc6 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/WsHeaderAddingInterceptor.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.ws.client.WebServiceClientException; +import org.springframework.ws.client.support.interceptor.ClientInterceptor; +import org.springframework.ws.context.MessageContext; +import org.springframework.ws.soap.SoapMessage; + +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import eu.osci.ws._2014._10.transport.OriginatorsType; +import eu.osci.ws._2014._10.transport.PartyIdentifierType; +import eu.osci.ws._2014._10.transport.PartyType; +import jakarta.validation.Valid; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBElement; +import jakarta.xml.bind.JAXBException; + +@Component +class WsHeaderAddingInterceptor implements ClientInterceptor { + + @Autowired + @Valid + private XtaProperties properties; + + @Override + public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException { + var soapMessage = (SoapMessage) messageContext.getRequest(); + var header = soapMessage.getSoapHeader(); + + try { + JAXBContext context = JAXBContext.newInstance(PartyType.class); + var marshaller = context.createMarshaller(); + marshaller.marshal(createAuthor(), header.getResult()); + } catch (JAXBException e) { + throw new TechnicalException("Error on handling Request for adding Header.", e); + } + + return true; + } + + JAXBElement<PartyType> createAuthor() { + eu.osci.ws._2014._10.transport.ObjectFactory objectFactory = new eu.osci.ws._2014._10.transport.ObjectFactory(); + + PartyType partyType = new PartyType(); + PartyIdentifierType identifier = new PartyIdentifierType(); + identifier.setValue(properties.getIdentifier()); + partyType.setIdentifier(identifier); + + var origin = new OriginatorsType(); + origin.setAuthor(partyType); + + return objectFactory.createAuthor(partyType); + } + + @Override + public boolean handleResponse(MessageContext messageContext) throws WebServiceClientException { + return true; + } + + @Override + public boolean handleFault(MessageContext messageContext) throws WebServiceClientException { + return true; + } + + @Override + public void afterCompletion(MessageContext messageContext, Exception ex) throws WebServiceClientException { + // nothing to do here + } + +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaApplicationConfiguration.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaApplicationConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..f76696324d42338444e60bee46ab67eee903dbe6 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaApplicationConfiguration.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import de.ozgcloud.eingang.semantik.enginebased.xta.XtaEngineBasedAdapter; + +@Configuration +class XtaApplicationConfiguration { + + @Bean + XtaEngineBasedAdapter engineBasedAdapter() { + return new XtaEngineBasedAdapter(); + } +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java new file mode 100644 index 0000000000000000000000000000000000000000..f0ce8da50afab52e21b09a5f1ffacbbc20041a26 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaFile.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.io.File; +import java.math.BigInteger; + +import lombok.Builder; + +@Builder +public record XtaFile(File file, + String contentType, + String name, + BigInteger size) { + +} diff --git a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFile.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java similarity index 73% rename from common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFile.java rename to xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java index 356db270343308ab6527c0e6bc7b48e7136016ce..d20422b842f14960ff96f8b591c90ad242eb4754 100644 --- a/common/src/main/java/de/itvsh/kop/eingangsadapter/common/formdata/IncomingFile.java +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessage.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,23 +21,18 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.common.formdata; +package de.ozgcloud.eingang.xta; + +import java.util.Collection; import lombok.Builder; import lombok.Getter; -import lombok.Setter; -import lombok.ToString; +import lombok.Singular; @Builder(toBuilder = true) @Getter -@ToString -public class IncomingFile { - - private String id; - private String vendorId; - private String name; - private String contentType; - @Setter - private byte[] content; - private long size; +public class XtaMessage { + private XtaMessageMetaData metaData; + @Singular + private Collection<XtaFile> messageFiles; } diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java new file mode 100644 index 0000000000000000000000000000000000000000..4a9db10e600c009ca29f38a5cb1335edcf45eb6e --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageId.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import de.ozgcloud.common.datatype.StringBasedValue; + +public class XtaMessageId extends StringBasedValue { + + public XtaMessageId(String messageId) { + super(messageId); + } + + public static XtaMessageId from(String messageId) { + return new XtaMessageId(messageId); + } +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..d8736e023d0fdc1bed44129bee6d11b38f501c29 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMapper.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.util.Objects; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.IncomingFile; + +@Mapper +interface XtaMessageMapper { + + @Mapping(target = "antragsteller", ignore = true) + @Mapping(target = "attachment", ignore = true) + @Mapping(target = "attachments", ignore = true) + @Mapping(target = "formData", ignore = true) + @Mapping(target = "id", ignore = true) + @Mapping(target = "numberOfAttachments", ignore = true) + @Mapping(target = "numberOfRepresentations", constant = "1") + @Mapping(target = "representation", ignore = true) + @Mapping(target = "representations", source = "messageFiles") + @Mapping(target = "zustaendigeStelle", ignore = true) + @Mapping(target = "header", source = "metaData") + FormData toFormData(XtaMessage message); + + @Mapping(target = "formEngineName", ignore = true) + @Mapping(target = "formId", source = "messageType") + @Mapping(target = "requestId", source = "messageId") + @Mapping(target = "serviceKonto", ignore = true) + @Mapping(target = "createdAt", source = "origin") + @Mapping(target = "sender", constant = "XTA") + @Mapping(target = "formName", constant = "dFördermittelantrag") + FormHeader formHeaderFromMetaData(XtaMessageMetaData metaData); + + default IncomingFile toIncomingFile(XtaFile messageFile) { + if (Objects.nonNull(messageFile)) { + return IncomingFile.builder() + .name(messageFile.name()) + .contentType("application/zip") + .file(messageFile.file()) + .size(messageFile.file().length()) + .build(); + } + return null; + } + + default String fromId(XtaMessageId id) { + return id.toString(); + } +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java new file mode 100644 index 0000000000000000000000000000000000000000..e9db01e74a7102ac3d51cf9d51343a0bd6456603 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaData.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.time.ZonedDateTime; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +class XtaMessageMetaData { + // MsgIdentification.MessageId + private XtaMessageId messageId; + // DeliveryAttributes.origin + private ZonedDateTime origin; + // DeliveryAttributes.delivery + private ZonedDateTime delivery; + // Qualifier.MessageType.code + private String messageType; + +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..1d662a752646c242678b980e789d5b9409adfdb9 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapper.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.math.BigInteger; +import java.util.Optional; +import java.util.stream.Stream; + +import jakarta.xml.bind.JAXBElement; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; + +import eu.osci.ws._2008._05.transport.MsgStatusListType; +import eu.osci.ws._2014._10.transport.MessageMetaData; + +@Mapper +interface XtaMessageMetaDataMapper { + + @Mapping(target = "origin", source = "deliveryAttributes.origin") + @Mapping(target = "delivery", source = "deliveryAttributes.delivery") + @Mapping(target = "messageId", source = "msgIdentification.messageID.value") + @Mapping(target = "messageType", source = "qualifier.messageType.code") + XtaMessageMetaData fromSoap(MessageMetaData metaData); + + default XtaMessageId fromString(String id) { + return XtaMessageId.from(id); + } + + @Mapping(target = "moreMessagesAvailable", source = ".", qualifiedByName = "moreMessagesAvailable") + XtaMessageMetaDatasAndHeader msgStatusListFromSoap(MsgStatusListTypeAndHeaderResponse statusList); + + @Named("moreMessagesAvailable") + default boolean moreMessagesAvailable(MsgStatusListTypeAndHeaderResponse statusList) { + if (statusList.isNoMessageAvailable()) { + return false; + } + return Optional.ofNullable(statusList.getMessageItemsPending()) + .filter(messagesPending -> !BigInteger.ZERO.equals(messagesPending)) + .isPresent(); + } + + default Stream<XtaMessageMetaData> map(JAXBElement<MsgStatusListType> msgStatusListResponse) { + return msgStatusListResponse.getValue().getMessageMetaData().stream().map(this::fromSoap); + } +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java new file mode 100644 index 0000000000000000000000000000000000000000..9b1ed87cde79cdd72cb9ce69ce23f3da9b29c306 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeader.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.util.stream.Stream; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +class XtaMessageMetaDatasAndHeader { + + private String msgBoxRequestID; + private boolean moreMessagesAvailable; + private Stream<XtaMessageMetaData> messages; +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java new file mode 100644 index 0000000000000000000000000000000000000000..6a14b436388e74fc1a210547eab8b1b299f3ffbb --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIterator.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.util.Iterator; + +public class XtaMessageMetadataRemoteIterator implements Iterator<XtaMessageMetaData> { + + private final XtaRemoteService xtaRemoteService; + private XtaMessageMetaDatasAndHeader messagesMetadata; + private Iterator<XtaMessageMetaData> remoteMessageIterator; + + public XtaMessageMetadataRemoteIterator(XtaRemoteService xtaRemoteService) { + this.xtaRemoteService = xtaRemoteService; + messagesMetadata = this.xtaRemoteService.getMessagesMetadata(); + remoteMessageIterator = getRemoteMessageIterator(messagesMetadata); + } + + @Override + public boolean hasNext() { + if (remoteMessageIterator.hasNext()) { + return true; + } + if (messagesMetadata.isMoreMessagesAvailable()) { + loadNextMessages(); + return remoteMessageIterator.hasNext(); + } + return false; + } + + void loadNextMessages() { + messagesMetadata = xtaRemoteService.getNextMessagesMetadata(messagesMetadata.getMsgBoxRequestID()); + remoteMessageIterator = getRemoteMessageIterator(messagesMetadata); + } + + Iterator<XtaMessageMetaData> getRemoteMessageIterator(XtaMessageMetaDatasAndHeader messagesMetadata) { + return messagesMetadata.getMessages().iterator(); + } + + @Override + public XtaMessageMetaData next() { + return remoteMessageIterator.next(); + } +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..6e6faf60513390dfe505811035e662a6766bb9b7 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaProperties.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.math.BigInteger; +import java.net.URI; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; +import org.springframework.validation.annotation.Validated; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Validated +@ToString +@Setter +@Getter +@Configuration +@ConfigurationProperties(prefix = XtaProperties.PROPERTIES_PREFIX) +class XtaProperties { + static final String PROPERTIES_PREFIX = "ozgcloud.xta"; + + private Server server; + private BigInteger maxListElements; + + private KeyStore keyStore; + private Actions actions; + @NotEmpty + private String identifier; +} + +@Validated +@ToString +@Getter +@Setter +@Component +@ConfigurationProperties(prefix = Server.PROPERTIES_PREFIX) +class Server { + static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".server"; + + @NotEmpty + private String name; + private String address; + @NotEmpty + private String protocol; +} + +@Validated +@ToString +@Getter +@Setter +@Component +@ConfigurationProperties(prefix = KeyStore.PROPERTIES_PREFIX) +class KeyStore { + static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".keystore"; + + @NotNull + private Resource file; + private String type = "PKCS12"; + @NotEmpty + private char[] password; +} + +@Validated +@ToString +@Setter +@Getter +@Configuration +@ConfigurationProperties(prefix = Actions.PROPERTIES_PREFIX) +class Actions { + static final String PROPERTIES_PREFIX = XtaProperties.PROPERTIES_PREFIX + ".actions"; + + @NotNull + private URI statusList; + @NotNull + private URI fetchRequest; + @NotNull + private URI closeRequest; +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java new file mode 100644 index 0000000000000000000000000000000000000000..61f6fc9f096ba6d0ac988ba8842842efd0a41914 --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteService.java @@ -0,0 +1,307 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Collections; +import java.util.Iterator; +import java.util.stream.Stream; + +import javax.xml.namespace.QName; +import javax.xml.transform.TransformerException; + +import org.apache.commons.io.IOUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.webservices.client.WebServiceTemplateBuilder; +import org.springframework.oxm.jaxb.Jaxb2Marshaller; +import org.springframework.stereotype.Service; +import org.springframework.ws.WebServiceMessage; +import org.springframework.ws.client.core.WebServiceMessageCallback; +import org.springframework.ws.client.core.WebServiceMessageExtractor; +import org.springframework.ws.soap.SoapFaultDetailElement; +import org.springframework.ws.soap.SoapHeader; +import org.springframework.ws.soap.SoapHeaderElement; +import org.springframework.ws.soap.SoapMessage; +import org.springframework.ws.soap.addressing.client.ActionCallback; +import org.springframework.ws.soap.addressing.version.Addressing10; +import org.springframework.ws.soap.client.SoapFaultClientException; +import org.springframework.ws.support.MarshallingUtils; +import org.w3._2005._08.addressing.AttributedURIType; + +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import de.xoev.transport.xta._211.ContentType; +import de.xoev.transport.xta._211.ExceptionType; +import de.xoev.transport.xta._211.GenericContentContainer; +import eu.osci.ws._2008._05.transport.MsgBoxCloseRequestType; +import eu.osci.ws._2008._05.transport.MsgBoxFetchRequest; +import eu.osci.ws._2008._05.transport.MsgBoxGetNextRequestType; +import eu.osci.ws._2008._05.transport.MsgBoxResponseType; +import eu.osci.ws._2008._05.transport.MsgBoxStatusListRequestType; +import eu.osci.ws._2008._05.transport.MsgSelector; +import eu.osci.ws._2008._05.transport.MsgStatusListType; +import eu.osci.ws._2008._05.transport.ObjectFactory; +import eu.osci.ws._2014._10.transport.MessageMetaData; +import jakarta.validation.Valid; +import jakarta.xml.bind.JAXBElement; +import lombok.NonNull; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Service +class XtaRemoteService { + + private static final String ERROR_ON_CLOSE_LOG_TEMPLATE = "Error result on close request.\nReason: %s"; + private static final String DETAIL_LOG_TEMPLATE = "Code: %s, Message: %s"; + + @Autowired + @Valid + private XtaProperties properties; + + @Autowired + private XtaMessageMetaDataMapper mapper; + + @Autowired + private WebServiceTemplateBuilder webServiceTemplateBuilder; + + @Autowired + @Qualifier("osciTransportMarshaller") + private Jaxb2Marshaller osciMarshaller; + + @Autowired + @Qualifier("xoevTransportMarshaller") + private Jaxb2Marshaller xoevMarshaller; + + public XtaMessageMetaDatasAndHeader getMessagesMetadata() { + return mapper.msgStatusListFromSoap(getStatusList()); + } + + public XtaMessageMetaDatasAndHeader getNextMessagesMetadata(String msgBoxRequestId) { + return mapper.msgStatusListFromSoap(getNextStatusList(msgBoxRequestId)); + } + + MsgStatusListTypeAndHeaderResponse getStatusList() { + var request = buildListRequest(); + return getGenericStatusList(request); + } + + MsgStatusListTypeAndHeaderResponse getNextStatusList(String msgBoxRequestId) { + var request = buildNextListRequest(msgBoxRequestId); + return getGenericStatusList(request); + } + + MsgStatusListTypeAndHeaderResponse getGenericStatusList(Object request) { + + var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(osciMarshaller).build(); + + return template.sendAndReceive(buildMarshalCallBack(request, buildActionCallback()), buildHeaderExtractor()); + } + + private ActionCallback buildActionCallback() { + return new ActionCallback(properties.getActions().getStatusList(), new Addressing10(), getTargetUri()); + } + + WebServiceMessageCallback buildMarshalCallBack(Object jaxbElement, ActionCallback callback) { + return new WebServiceMessageCallback() { + @Override + public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException { + MarshallingUtils.marshal(osciMarshaller, jaxbElement, message); + callback.doWithMessage(message); + } + }; + } + + WebServiceMessageExtractor<MsgStatusListTypeAndHeaderResponse> buildHeaderExtractor() { + return new WebServiceMessageExtractor<MsgStatusListTypeAndHeaderResponse>() { + @Override + public MsgStatusListTypeAndHeaderResponse extractData(WebServiceMessage message) throws IOException, TransformerException { + + MsgBoxResponseType header = extractHeader(message); + + return MsgStatusListTypeAndHeaderResponse.builder() + .msgBoxRequestID(header.getMsgBoxRequestID()) + .noMessageAvailable(header.getNoMessageAvailable() != null) + .messageItemsPending(header.getItemsPending()) + .messages(extractMessages(message)) + .build(); + } + + @SuppressWarnings("unchecked") + private MsgBoxResponseType extractHeader(WebServiceMessage message) { + SoapHeader soapHeader = ((SoapMessage) message).getSoapHeader(); + Iterator<SoapHeaderElement> it = soapHeader + .examineHeaderElements(new QName("http://www.osci.eu/ws/2008/05/transport", "MsgBoxResponse")); + validateHasHeader(it); + return ((JAXBElement<MsgBoxResponseType>) osciMarshaller.unmarshal(it.next().getSource())).getValue(); + } + + private void validateHasHeader(Iterator<SoapHeaderElement> it) { + if (!it.hasNext()) { + throw new TechnicalException("Response from XTA GetStatusList has no header"); + } + } + + @SuppressWarnings("unchecked") + private Stream<MessageMetaData> extractMessages(WebServiceMessage message) throws IOException { + return ((JAXBElement<MsgStatusListType>) MarshallingUtils.unmarshal(osciMarshaller, message)).getValue().getMessageMetaData() + .stream(); + } + }; + } + + private JAXBElement<MsgBoxStatusListRequestType> buildListRequest() { + ObjectFactory objectFactory = new ObjectFactory(); + + MsgBoxStatusListRequestType msg = new MsgBoxStatusListRequestType(); + msg.setMaxListItems(properties.getMaxListElements()); + return objectFactory.createMsgBoxStatusListRequest(msg); + } + + private JAXBElement<MsgBoxGetNextRequestType> buildNextListRequest(String msgBoxRequestId) { + ObjectFactory objectFactory = new ObjectFactory(); + + MsgBoxGetNextRequestType msg = new MsgBoxGetNextRequestType(); + msg.setMsgBoxRequestID(msgBoxRequestId); + return objectFactory.createMsgBoxGetNextRequest(msg); + } + + private URI getTargetUri() { + try { + return new URI(buildServerAddressUri()); + } catch (URISyntaxException e) { + throw new TechnicalException("Error building target url: " + e); + } + } + + String buildServerAddressUri() { + return XtaRemoteServiceConfiguration.URI_TEMPLATE.formatted(properties.getServer().getProtocol(), + properties.getServer().getName()); + } + + public XtaMessage getMessage(XtaMessageId messageId) { + return XtaMessage.builder() + .metaData(null) + .messageFiles(Collections.singleton(getMessage(messageId.toString()))) + .build(); + } + + XtaFile getMessage(String messageId) { + var callback = new ActionCallback(properties.getActions().getFetchRequest(), new Addressing10(), getTargetUri()); + var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(xoevMarshaller).build(); + + var result = (GenericContentContainer) template.marshalSendAndReceive(buildFetchRequest(messageId), callback); + return toXtaFile(result.getContentContainer().getMessage()); + } + + private XtaFile toXtaFile(ContentType type) { + return XtaFile.builder() + .file(persistToFile(type.getValue())) + .name(type.getFilename()) + .contentType(type.getContentType()) + .size(type.getSize()) + .build(); + } + + private File persistToFile(byte[] data) { + try { + var file = File.createTempFile("xta", ".data"); + file.deleteOnExit(); + var out = new FileOutputStream(file); + IOUtils.write(data, out); + out.flush(); + out.close(); + return file; + } catch (IOException e) { + throw new TechnicalException("Error writing Attachment to temp file", e); + } + } + + private JAXBElement<MsgBoxFetchRequest> buildFetchRequest(String msgId) { + MsgSelector msgSelector = new MsgSelector(); + AttributedURIType attribute = new AttributedURIType(); + attribute.setValue(msgId); + msgSelector.getMessageID().add(attribute); + + var request = new MsgBoxFetchRequest(); + request.setMsgSelector(msgSelector); + + return wrapAsJaxBElemement(request); + } + + private JAXBElement<MsgBoxFetchRequest> wrapAsJaxBElemement(MsgBoxFetchRequest request) { + QName qname = new QName("http://www.osci.eu/ws/2008/05/transport", "MsgBoxFetchRequest"); + + return new JAXBElement<>(qname, MsgBoxFetchRequest.class, request); + } + + public void close(@NonNull XtaMessageId messageId) { + var callback = new ActionCallback(properties.getActions().getCloseRequest(), new Addressing10(), getTargetUri()); + var template = webServiceTemplateBuilder.setMarshaller(osciMarshaller).setUnmarshaller(xoevMarshaller).build(); + + try { + template.marshalSendAndReceive(buildCloseRequest(messageId.toString()), callback); + } catch (SoapFaultClientException e) { + logErrorOnClose(e); + } + } + + private JAXBElement<MsgBoxCloseRequestType> buildCloseRequest(String msgId) { + MsgBoxCloseRequestType request = new MsgBoxCloseRequestType(); + var lastMsgReceived = request.getLastMsgReceived(); + + AttributedURIType attribute = new AttributedURIType(); + attribute.setValue(msgId); + lastMsgReceived.add(attribute); + + return new ObjectFactory().createMsgBoxCloseRequest(request); + } + + private void logErrorOnClose(SoapFaultClientException e) { + try { + var fault = e.getSoapFault(); + StringBuilder logBuilder = new StringBuilder(ERROR_ON_CLOSE_LOG_TEMPLATE.formatted(e.getSoapFault().getFaultStringOrReason())); + + var entries = fault.getFaultDetail().getDetailEntries(); + entries.forEachRemaining(entry -> logBuilder.append("\n").append(formatFaultEntry(entry))); + + LOG.error(logBuilder.toString(), e); + } catch (Exception e1) { + LOG.error("Error on loggging close error", e1); + LOG.error("origin error was", e); + } + } + + private String formatFaultEntry(SoapFaultDetailElement soapfaultdetailelement1) { + @SuppressWarnings("unchecked") + ExceptionType exceptionType = ((JAXBElement<ExceptionType>) xoevMarshaller.unmarshal(soapfaultdetailelement1.getSource())).getValue(); + + return DETAIL_LOG_TEMPLATE.formatted(exceptionType.getErrorCode().getCode(), exceptionType.getErrorCode().getName().toString()); + + } + +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..3f7036f4c1358bec4119da91e64ae0abd3cb24bd --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfiguration.java @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; + +import javax.net.ssl.KeyManagerFactory; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.webservices.client.WebServiceTemplateCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.oxm.jaxb.Jaxb2Marshaller; +import org.springframework.ws.client.support.destination.DestinationProvider; +import org.springframework.ws.client.support.interceptor.ClientInterceptor; +import org.springframework.ws.soap.SoapVersion; +import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; +import org.springframework.ws.transport.WebServiceMessageSender; +import org.springframework.ws.transport.http.HttpsUrlConnectionMessageSender; + +import de.ozgcloud.eingang.common.errorhandling.TechnicalException; +import lombok.extern.log4j.Log4j2; + +@Log4j2 +@Configuration +public class XtaRemoteServiceConfiguration { + + static final String URI_TEMPLATE = "%s://%s/MB_XTA-WS/XTA210msgBoxPort.svc"; + + @Autowired + private XtaProperties properties; + + @Bean + Jaxb2Marshaller osciTransportMarshaller() { + Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); + marshaller.setContextPath("eu.osci.ws._2008._05.transport"); + marshaller.setMtomEnabled(true); + return marshaller; + } + + @Bean + Jaxb2Marshaller xoevTransportMarshaller() { + Jaxb2Marshaller unmarshaller = new Jaxb2Marshaller(); + unmarshaller.setContextPath("de.xoev.transport.xta._211"); + unmarshaller.setMtomEnabled(true); + return unmarshaller; + } + + @Bean + WebServiceTemplateCustomizer webServiceTemplateCustomizer() { + return template -> template.setMessageSender(messageSender()); + } + + @Bean + WebServiceTemplateCustomizer setMessageFactoryCustomizer() { + return template -> template.setMessageFactory(messageFactory()); + } + + @Bean + WebServiceTemplateCustomizer addingInterceptorCustomizer(WsHeaderAddingInterceptor interceptor) { + return template -> template.setInterceptors(new ClientInterceptor[] { interceptor }); + } + + @Bean + WebServiceTemplateCustomizer setDestionationProvider() { + return template -> template.setDestinationProvider(destinationProvider()); + } + + @Bean + DestinationProvider destinationProvider() { + return () -> { + try { + String serverUri = buildServerAddressUri(properties.getServer()); + LOG.trace("Xta Service remote URI: {}", serverUri); + return new URI(serverUri); + } catch (URISyntaxException e) { + throw new TechnicalException("Error building URI", e); + } + }; + } + + String buildServerAddressUri(Server server) { + return URI_TEMPLATE.formatted(server.getProtocol(), server.getAddress()); + } + + @Bean + SaajSoapMessageFactory messageFactory() { + SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory(); + messageFactory.setSoapVersion(SoapVersion.SOAP_12); + return messageFactory; + } + + @Bean + WebServiceMessageSender messageSender() { + try { + var keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + keyManagerFactory.init(xtaKeyStore(), properties.getKeyStore().getPassword()); + + var messageSender1 = new HttpsUrlConnectionMessageSender(); + messageSender1.setKeyManagers(keyManagerFactory.getKeyManagers()); + messageSender1.setHostnameVerifier((hostname, session) -> true); // NOSONAR hostname verification is senseless due missing DNS for + // Dataport XTA Server + + return messageSender1; + } catch (Exception e) { + throw new TechnicalException("Error initializating message sender.", e); + } + } + + @Bean + KeyStore xtaKeyStore() throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException { + var keyStoreResource = properties.getKeyStore().getFile(); + var keyStore = KeyStore.getInstance(properties.getKeyStore().getType()); + try (InputStream keyStoreStream = keyStoreResource.getInputStream()) { + keyStore.load(keyStoreStream, properties.getKeyStore().getPassword()); + } + + return keyStore; + } + +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java new file mode 100644 index 0000000000000000000000000000000000000000..5ecae38470a1a6e3e3cd24acde2cfe28dfb7968f --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationListener; +import org.springframework.context.annotation.Profile; +import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.stereotype.Component; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.SemantikAdapter; +import lombok.NonNull; +import lombok.extern.log4j.Log4j2; + +@Profile("!itcase") +@Log4j2 +@Component +class XtaRunner implements ApplicationListener<ContextRefreshedEvent> { + + @Autowired + private XtaService service; + @Autowired + private SemantikAdapter semantikAdapter; + + @Override + public void onApplicationEvent(ContextRefreshedEvent event) { + LOG.info("Fetching XTA Messages"); + runGetXtaMessages(); + } + + void runGetXtaMessages() { + try { + service.getMessages().forEach(this::processAndAcknowledge); + } catch (RuntimeException e) { + LOG.error("Error fetch XTA Message List.", e); + } + } + + private void processAndAcknowledge(@NonNull FormData formData) { + try { + LOG.info("Process XTA-Message '{}'.", formData.getHeader().getRequestId()); + semantikAdapter.processFormData(formData); + service.acknowledgeReceive(XtaMessageId.from(formData.getHeader().getRequestId())); + } catch (RuntimeException e) { + LOG.error("Error on processing XTA-Message. Continue with next message.", e); + } + } + +} diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java new file mode 100644 index 0000000000000000000000000000000000000000..c928e280ce5bd9ce681eb2f55e9d8b667ccdf7dc --- /dev/null +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.util.Spliterators; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; +import lombok.NonNull; +import lombok.extern.log4j.Log4j2; + +@Service +@Log4j2 +class XtaService { + + static final String DFOERDERMITTELANTRAG_MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; + static final int VORGANG_NUMMER_SUFFIX_LENGTH = 4; + + @Autowired + private XtaRemoteService remoteService; + @Autowired + private XtaMessageMapper mapper; + @Autowired + private VorgangNummerSupplier vorgangNummerSupplier; + + public Stream<FormData> getMessages() { + return createXtaMessageStream().filter(this::filterByMessageType).map(this::getFormData); + } + + Stream<XtaMessageMetaData> createXtaMessageStream() { + var iterator = new XtaMessageMetadataRemoteIterator(remoteService); + return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false); + } + + // filter criteria for dFoerdermittelantrag + // https://jira.mgm-tp.com/jira/browse/OZG-3659 + boolean filterByMessageType(XtaMessageMetaData metaData) { + if (StringUtils.equals(metaData.getMessageType(), DFOERDERMITTELANTRAG_MESSAGE_TYPE)) { + return true; + } + + LOG.warn("Ignoring XTA-Message of type '{}'.", metaData.getMessageType()); + return false; + } + + public FormData getFormData(@NonNull XtaMessageMetaData metaData) { + var msg = remoteService.getMessage(metaData.getMessageId()); + var formData = mapper.toFormData(msg.toBuilder().metaData(metaData).build()); + return updateHeader(formData); + } + + FormData updateHeader(FormData formData) { + return formData.toBuilder().header(setVorgangNummer(formData.getHeader())).build(); + } + + FormHeader setVorgangNummer(FormHeader formHeader) { + return formHeader.toBuilder().vorgangNummer(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH)).build(); + } + + public void acknowledgeReceive(@NonNull XtaMessageId messageId) { + remoteService.close(messageId); + } +} diff --git a/xta-adapter/src/main/resources/XTA.wsdl b/xta-adapter/src/main/resources/XTA.wsdl new file mode 100644 index 0000000000000000000000000000000000000000..d7ca5a364f4864a44ea0c2c5cbff4a76ae63a042 --- /dev/null +++ b/xta-adapter/src/main/resources/XTA.wsdl @@ -0,0 +1,620 @@ +<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://xoev.de/transport/xta/211" + xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" + xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" + xmlns:xsd="http://www.w3.org/2001/XMLSchema" + xmlns:wsa="http://www.w3.org/2005/08/addressing" + xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" + xmlns:wspmtom="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" + xmlns:osci="http://www.osci.eu/ws/2008/05/transport" + xmlns:wsp="http://www.w3.org/ns/ws-policy" + xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" + xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" + xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" + xmlns:s12="http://www.w3.org/2003/05/soap-envelope" + xmlns:xta="http://xoev.de/transport/xta/211" name="XTA-Webservice"> + <wsp:Policy wsu:Id="osciCommon"> + <!--###### general osci policies ##########--> + <wsp:All> + <wsam:Addressing wsp:Optional="false"> + <wsp:Policy> + <wsam:AnonymousResponses/> + </wsp:Policy> + </wsam:Addressing> + <wspmtom:OptimizedMimeSerialization/> + <sp:Wss11> + <wsp:Policy> + <sp:MustSupportRefKeyIdentifier/> + <sp:MustSupportRefIssuerSerial/> + <sp:MustSupportRefThumbprint/> + <sp:MustSupportRefEncryptedKey/> + <sp:RequireSignatureConfirmation/> + </wsp:Policy> + </sp:Wss11> + <sp:Trust13> + <wsp:Policy> + <sp:MustSupportIssuedTokens/> + <sp:RequireClientEntropy/> + <sp:RequireServerEntropy/> + </wsp:Policy> + </sp:Trust13> + </wsp:All> + </wsp:Policy> + <wsp:Policy wsu:Id="TransportBindingPolicy"> + <wsp:ExactlyOne> + <wsp:All> + <sp:TransportBinding> + <wsp:Policy> + <sp:TransportToken> + <wsp:Policy> + <sp:HttpsToken RequireClientCertificate="true"/> + </wsp:Policy> + </sp:TransportToken> + <sp:AlgorithmSuite> + <wsp:Policy> + <sp:Basic256/> + </wsp:Policy> + </sp:AlgorithmSuite> + <sp:Layout> + <wsp:Policy> + <sp:Lax/> + </wsp:Policy> + </sp:Layout> + <!-- sp:IncludeTimestamp/ --> + </wsp:Policy> + </sp:TransportBinding> + <!-- sp:Wss10> + <wsp:Policy> + <sp:MustSupportRefKeyIdentifier/> + </wsp:Policy> + </sp:Wss10 --> + </wsp:All> + </wsp:ExactlyOne> + </wsp:Policy> + <!--Datenstrukturen --> + <types> + <xsd:schema targetNamespace="http://xoev.de/transport/xta/211"> + <xsd:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="../xsd/OSCI_MessageMetaData_V2.02.xsd"/> + <xsd:import namespace="http://www.osci.eu/ws/2008/05/transport" schemaLocation="../xsd/OSCI2_02.xsd"/> + <xsd:include schemaLocation="../xsd/XTA-Webservice-Globale-Elemente.xsd"/> + <xsd:include schemaLocation="../xsd/XTA-Webservice-Exceptions.xsd"/> + </xsd:schema> + </types> + <!--Nachrichten --> + <message name="EmptyBody"/> + <message name="XTAHeader"> + <part name="AuthorIdentifier" element="oscimeta:Author"/> + <part name="MessageMetaData" element="oscimeta:MessageMetaData"/> + </message> + <message name="LookupServiceRequest"> + <part name="LookupServiceRequest" element="xta:LookupServiceRequest"/> + </message> + <message name="LookupServiceResponse"> + <part name="LookupServiceResponse" element="xta:LookupServiceResponse"/> + </message> + <message name="GetTransportReportResponse"> + <part name="GetTransportReportResponse" element="xta:TransportReport"/> + </message> + <message name="GenericContainerBody"> + <part name="GenericContainer" element="xta:GenericContentContainer"/> + </message> + <message name="MessageID"> + <part name="MessageID" element="wsa:MessageID"/> + </message> + <message name="OptHeaders"> + <part name="FetchResponseHeader" element="osci:MsgBoxResponse"/> + <part name="X509TokenContainer" element="osci:X509TokenContainer"/> + </message> + <message name="FetchMsgRequest"> + <part name="FetchRequest" element="osci:MsgBoxFetchRequest"/> + </message> + <message name="GetNextRequest"> + <part name="FetchRequest" element="osci:MsgBoxGetNextRequest"/> + </message> + <message name="CloseRequest"> + <part name="FetchRequest" element="osci:MsgBoxCloseRequest"/> + </message> + <message name="FetchListRequest"> + <part name="FetchRequest" element="osci:MsgBoxStatusListRequest"/> + </message> + <message name="FetchListResponse"> + <part name="FetchResponse" element="osci:MsgStatusList"/> + </message> + <message name="GetNextRequest"> + <part name="FetchRequest" element="osci:MsgBoxGetNextListRequest"/> + </message> + <!--Nachrichten - SOAP-Exceptions--> + <message name="PermissionDeniedException"> + <part name="permissionDeniedException" element="xta:PermissionDeniedException"/> + </message> + <message name="XTAWSTechnicalProblemException"> + <part name="xtawsTechnicalProblem" element="xta:XTAWSTechnicalProblemException"/> + </message> + <message name="ParameterIsNotValidException"> + <part name="parameterIsNotValidException" element="xta:ParameterIsNotValidException"/> + </message> + <message name="MessageSchemaViolationException"> + <part name="messageSchemaViolationException" element="xta:MessageSchemaViolationException"/> + </message> + <message name="MessageVirusDetectionException"> + <part name="messageVirusDetectionException" element="xta:MessageVirusDetectionException"/> + </message> + <message name="SyncAsyncException"> + <part name="syncAsyncException" element="xta:SyncAsyncException"/> + </message> + <message name="InvalidMessageIDException"> + <!-- <part name="invalidMessageIDException" element="xta:InvalidMessageIdException"/> +--> + <part name="invalidMessageIDException" element="xta:InvalidMessageIDException"/> + </message> + <message name="CancelDeniedException"> + <part name="cancelDeniedException" element="xta:CancelDeniedException"/> + </message> + <!--Interfaces --> + <portType name="managementPortType"> + <documentation>xta managementPort</documentation> + <operation name="checkAccountActive"> + <input message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"/> + <output message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"> + <documentation>only for exception handling</documentation> + </output> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/CheckAccountActive"/> + </operation> + <operation name="lookupService"> + <input message="xta:LookupServiceRequest" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> + <output message="xta:LookupServiceResponse" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> + <fault name="ParameterIsNotValid" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/IsServiceAvailable"/> + </operation> + <operation name="getTransportReport"> + <input message="xta:MessageID" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> + <output message="xta:GetTransportReportResponse" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> + <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.xta.de/XTA/GetTransportReport"/> + </operation> + <operation name="cancelMessage"> + <input message="xta:MessageID" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> + <output message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CancelMessage"> + <documentation>only for exception handling</documentation> + </output> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> + <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> + <fault name="CancelDeniedException" message="xta:CancelDeniedException" wsam:Action="http://www.xta.de/XTA/CancelMessage"/> + </operation> + <operation name="createMessageId"> + <input message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> + <output message="xta:MessageID" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/CreateMessageID"/> + </operation> + </portType> + <portType name="sendPortType"> + <documentation>sendPort</documentation> + <operation name="sendMessage"> + <input message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessage"/> + <output message="xta:EmptyBody" wsam:Action="http://www.xta.de/XTA/SendMessage"/> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> + <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> + <fault name="MessageSchemaViolationException" message="xta:MessageSchemaViolationException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> + <fault name="MessageVirusDetectionException" message="xta:MessageVirusDetectionException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> + <fault name="SyncAsyncException" message="xta:SyncAsyncException" wsam:Action="http://www.xta.de/XTA/SendMessage"/> + </operation> + <operation name="sendMessageSync"> + <input message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <output message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="MessageSchemaViolationException" message="xta:MessageSchemaViolationException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="MessageVirusDetectionException" message="xta:MessageVirusDetectionException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="SyncAsyncException" message="xta:SyncAsyncException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + </operation> + </portType> + <portType name="msgBoxPortType"> + <documentation>msgboxfetchPort</documentation> + <operation name="getMessage"> + <input message="xta:FetchMsgRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> + <output message="xta:GenericContainerBody" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> + <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest"/> + </operation> + <operation name="getStatusList"> + <input message="xta:FetchListRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> + <output message="xta:FetchListResponse" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest"/> + </operation> + <operation name="getNextMessage"> + <input message="xta:GetNextRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> + <output message="xta:GenericContainerBody" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> + <!-- Stand 13.05.2016 Vorgabe fehlt in Abschnitt B1.1.1, Annahme: Es werden + dieselben Exceptions benötigt, wie für getMessage --> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> + <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest"/> + </operation> + <operation name="getNextStatusList"> + <input message="xta:GetNextRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> + <output message="xta:FetchListResponse" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest"/> + </operation> + <operation name="close"> + <input message="xta:CloseRequest" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> + <output message="xta:EmptyBody" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"> + <documentation>only for exception handling</documentation> + </output> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> + <fault name="InvalidMessageIDException" message="xta:InvalidMessageIDException" wsam:Action="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest"/> + </operation> + </portType> + <!--Bindung von Protokoll und Interface --> + <binding name="sendXTAHttpsBinding" type="xta:sendPortType"> + <documentation>https binding for the sendPort</documentation> + <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> + <wsp:PolicyReference URI="#TransportBindingPolicy"/> + <wsp:PolicyReference URI="#osciCommon"/> + <operation name="sendMessage"> + <documentation>The sendMessage method delivers a content message to the sending + hub.</documentation> + <soap:operation soapAction="http://www.xta.de/XTA/SendMessage" soapActionRequired="true" style="document"/> + <input> + <documentation>Input Header: MessageMetaData header contains additional information + for the for the given payload. Body: The GenericContainerBody containins the + "xöv" message.</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> + <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> + </input> + <output> + <documentation>only for exception handling</documentation> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="ParameterIsNotValidException"> + <soap:fault name="ParameterIsNotValidException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + <fault name="MessageSchemaViolationException"> + <soap:fault name="MessageSchemaViolationException" use="literal"/> + </fault> + <fault name="MessageVirusDetectionException"> + <soap:fault name="MessageVirusDetectionException" use="literal"/> + </fault> + <fault name="SyncAsyncException"> + <soap:fault name="SyncAsyncException" use="literal"/> + </fault> + </operation> + <operation name="sendMessageSync"> + <documentation>The sendMessage method delivers a content message to the sending + hub.</documentation> + <soap:operation soapAction="http://www.xta.de/XTA/SendMessageSync" soapActionRequired="true" style="document"/> + <input> + <documentation>Input Header: MessageMetaData header contains additional information + for the for the given payload. Body: The GenericContainerBody contains the "xöv" + message.</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> + <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> + </input> + <output> + <documentation>Output body: A GenericContainerBody in the body, containing the + synchronous "xöv" message response.</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> + <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="ParameterIsNotValidException"> + <soap:fault name="ParameterIsNotValidException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + <fault name="MessageSchemaViolationException"> + <soap:fault name="MessageSchemaViolationException" use="literal"/> + </fault> + <fault name="MessageVirusDetectionException"> + <soap:fault name="MessageVirusDetectionException" use="literal"/> + </fault> + <fault name="SyncAsyncException"> + <soap:fault name="SyncAsyncException" use="literal"/> + </fault> + </operation> + </binding> + <binding name="managementHttpsBinding" type="xta:managementPortType"> + <documentation>https binding for the managementPort</documentation> + <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> + <wsp:PolicyReference URI="#TransportBindingPolicy"/> + <wsp:PolicyReference URI="#osciCommon"/> + <operation name="getTransportReport"> + <documentation>Method to get the transport report for the given + MessageID</documentation> + <soap:operation soapAction="http://www.xta.de/XTA/GetTransportReport" soapActionRequired="true" style="document"/> + <input> + <documentation>Input: optional xta:AuthorIdentifier header and the MessageID in the + body part.</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>Output body: The Transport report containing the detailed information + for the related message.</documentation> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + <fault name="InvalidMessageIDException"> + <soap:fault name="InvalidMessageIDException" use="literal"/> + </fault> + </operation> + <operation name="cancelMessage"> + <documentation>Method to cancel disptach order (if not yet finalied + successfully)</documentation> + <soap:operation soapAction="http://www.xta.de/XTA/CancelMessage" soapActionRequired="true" style="document"/> + <input> + <documentation>Input: optional xta:AuthorIdentifier header and the MessageID in the + body part.</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>only for exception handling</documentation> + <soap:body use="literal"/> + </output> + <fault name="CancelDeniedException"> + <soap:fault name="CancelDeniedException" use="literal"/> + </fault> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="ParameterIsNotValidException"> + <soap:fault name="ParameterIsNotValidException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + </operation> + <operation name="lookupService"> + <documentation>Method to get further information about the given address + information</documentation> + <soap:operation soapAction="http://www.xta.de/XTA/IsServiceAvailable" soapActionRequired="true" style="document"/> + <input> + <documentation>Input: optional xta:AuthorIdentifier header and a list of address + information in the body part</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>Output body: further information for the given address + list.</documentation> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="ParameterIsNotValid"> + <soap:fault name="ParameterIsNotValid" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + </operation> + <operation name="checkAccountActive"> + <documentation>Method to check whether the account is activ</documentation> + <soap:operation soapAction="http://www.xta.de/XTA/CheckAccountActive" soapActionRequired="true" style="document"/> + <input> + <documentation>Input: optional xta:AuthorIdentifier header.</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>only for exception handling</documentation> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + </operation> + <operation name="createMessageId"> + <documentation>Method to obtain new created MesMessageID</documentation> + <soap:operation soapAction="http://www.xta.de/XTA/CreateMessageID" soapActionRequired="true" style="document"/> + <input> + <documentation>Input: optional xta:AuthorIdentifier header</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>Output body: The created MesMessageID</documentation> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + </operation> + </binding> + <binding name="msgBoxHttpsBinding" type="xta:msgBoxPortType"> + <documentation>https binding for the msgBox</documentation> + <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> + <wsp:PolicyReference URI="#TransportBindingPolicy"/> + <wsp:PolicyReference URI="#osciCommon"/> + <operation name="getMessage"> + <documentation>The getMethode method returns the first message relating to the given + parameter</documentation> + <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest" soapActionRequired="true"/> + <input> + <documentation>Input: optional xta:AuthorIdentifier header and OSCI 2 + MsgBoxFetchRequest parameter in the body part</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>Output: Header: Optional xta:AuthorIdentifier header or OSCI2 Header + MsgBoxResponse with addional information and related GenericContentContainer in + the body part</documentation> + <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> + <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + <fault name="InvalidMessageIDException"> + <soap:fault name="InvalidMessageIDException" use="literal"/> + </fault> + </operation> + <operation name="getStatusList"> + <documentation>getStatusList returns the list of related message + information</documentation> + <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest" soapActionRequired="true"/> + <input> + <documentation>Input: optional xta:AuthorIdentifier header and OSCI 2 + MsgStatusListRequest parameter in the body part</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>Output: Header: OSCI2 Header MsgBoxResponse with addional information + and related MsgStatusList in the body part</documentation> + <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + </operation> + <operation name="getNextMessage"> + <documentation>getNextMessage returns next message relates to fetch + iterator</documentation> + <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextMsgRequest" soapActionRequired="true"/> + <input> + <documentation>Input: Optional xta:AuthorIdentifier header and in the body part the + MsgBoxNextRequest element conatining the fetch iterator</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>Output: Header: Optional xta:AuthorIdentifier header or OSCI2 Header + MsgBoxResponse with addional information and related MsgStatusList in the body + part</documentation> + <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> + <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + <fault name="InvalidMessageIDException"> + <soap:fault name="InvalidMessageIDException" use="literal"/> + </fault> + </operation> + <operation name="getNextStatusList"> + <documentation>getNextStatusList returns the next list of related message information + related to the fetch iterator</documentation> + <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxGetNextListRequest" soapActionRequired="true"/> + <input> + <documentation>Input: optional xta:AuthorIdentifier header and in the body part the + MsgBoxNextRequest element conatining the fetch iterator</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>Output: Header: OSCI2 Header MsgBoxResponse with addional information + and next related MsgStatusList in the body part</documentation> + <soap:header message="xta:OptHeaders" part="FetchResponseHeader" use="literal"/> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + </operation> + <operation name="close"> + <documentation>The close method returns close the fetch iterator</documentation> + <soap:operation soapAction="http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest" soapActionRequired="true"/> + <input> + <documentation>Input: optional xta:AuthorIdentifier header and the + MsgBoxCloseRequest element conatining the fetch iterator in the body + part</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="AuthorIdentifier" use="literal"/> + </input> + <output> + <documentation>only for exception handling</documentation> + <soap:body use="literal"/> + </output> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + <fault name="InvalidMessageIDException"> + <soap:fault name="InvalidMessageIDException" use="literal"/> + </fault> + </operation> + </binding> + <!--Endpoints des Services --> + <service name="XTAService"> + <port name="MsgBoxPort" binding="xta:msgBoxHttpsBinding"> + <soap:address location="REPLACE_WITH_ACTUAL_URL"/> + <wsa:EndpointReference> + <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> + <wsa:ReferenceParameters> + <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> + </wsa:ReferenceParameters> + </wsa:EndpointReference> + </port> + <port name="SendXtaPort" binding="xta:sendXTAHttpsBinding"> + <soap:address location="REPLACE_WITH_ACTUAL_URL"/> + <wsa:EndpointReference> + <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> + <wsa:ReferenceParameters> + <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> + </wsa:ReferenceParameters> + </wsa:EndpointReference> + </port> + <port name="ManagementPort" binding="xta:managementHttpsBinding"> + <soap:address location="REPLACE_WITH_ACTUAL_URL"/> + <wsa:EndpointReference> + <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> + <wsa:ReferenceParameters> + <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> + </wsa:ReferenceParameters> + </wsa:EndpointReference> + </port> + </service> +</definitions> diff --git a/xta-adapter/src/main/resources/application-local.yml b/xta-adapter/src/main/resources/application-local.yml new file mode 100644 index 0000000000000000000000000000000000000000..83e7b8ca8d1088a6fcbae18446b9ac917d21f942 --- /dev/null +++ b/xta-adapter/src/main/resources/application-local.yml @@ -0,0 +1,17 @@ +ozgcloud: + xta: + identifier: gae:jens.reese@mgm-tp.com + server: + address: localhost:3000 + name: LI33-0005 + protocol: https + adapter: + targetVorgangManagerName: local + fallbackStrategy: DENY + routingStrategy: SINGLE + +grpc: + client: + vorgang-manager-local: + address: static://127.0.0.1:9090 + negotiationType: PLAINTEXT diff --git a/xta-adapter/src/main/resources/application.yml b/xta-adapter/src/main/resources/application.yml new file mode 100644 index 0000000000000000000000000000000000000000..53387ac656fe6347c611c311c363d971a2da055c --- /dev/null +++ b/xta-adapter/src/main/resources/application.yml @@ -0,0 +1,15 @@ +logging: + level: + ROOT: WARN + '[de.ozgcloud]': INFO + '[org.springframework.ws]': WARN + +ozgcloud: + xta: + max-list-elements: 10 + keystore: + type: PKCS12 + actions: + status-list: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxStatusListRequest" + fetch-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxFetchRequest" + close-request: "http://www.osci.eu/ws/2008/05/transport/urn/messageTypes/MsgBoxCloseRequest" diff --git a/xta-adapter/src/main/wsdl/XTA-synchron.wsdl b/xta-adapter/src/main/wsdl/XTA-synchron.wsdl new file mode 100644 index 0000000000000000000000000000000000000000..9ee3b169997c2ae3590c6c7c740a9c1f92158b5a --- /dev/null +++ b/xta-adapter/src/main/wsdl/XTA-synchron.wsdl @@ -0,0 +1,201 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://xoev.de/transport/xta/211" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wspmtom="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" xmlns:osci="http://www.osci.eu/ws/2008/05/transport" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:xta="http://xoev.de/transport/xta/211" name="XTA-Webservice"> + <wsp:Policy wsu:Id="osciCommon"> + <!--###### general osci policies ##########--> + <wsp:All> + <wsam:Addressing wsp:Optional="false"> + <wsp:Policy> + <wsam:AnonymousResponses/> + </wsp:Policy> + </wsam:Addressing> + <wspmtom:OptimizedMimeSerialization/> + <sp:Wss11> + <wsp:Policy> + <sp:MustSupportRefKeyIdentifier/> + <sp:MustSupportRefIssuerSerial/> + <sp:MustSupportRefThumbprint/> + <sp:MustSupportRefEncryptedKey/> + <sp:RequireSignatureConfirmation/> + </wsp:Policy> + </sp:Wss11> + <sp:Trust13> + <wsp:Policy> + <sp:MustSupportIssuedTokens/> + <sp:RequireClientEntropy/> + <sp:RequireServerEntropy/> + </wsp:Policy> + </sp:Trust13> + </wsp:All> + </wsp:Policy> + <wsp:Policy wsu:Id="TransportBindingPolicy"> + <wsp:ExactlyOne> + <wsp:All> + <sp:TransportBinding> + <wsp:Policy> + <sp:TransportToken> + <wsp:Policy> + <sp:HttpsToken RequireClientCertificate="true"/> + </wsp:Policy> + </sp:TransportToken> + <sp:AlgorithmSuite> + <wsp:Policy> + <sp:Basic256/> + </wsp:Policy> + </sp:AlgorithmSuite> + <sp:Layout> + <wsp:Policy> + <sp:Lax/> + </wsp:Policy> + </sp:Layout> + <!-- sp:IncludeTimestamp/ --> + </wsp:Policy> + </sp:TransportBinding> + <!-- sp:Wss10> + <wsp:Policy> + <sp:MustSupportRefKeyIdentifier/> + </wsp:Policy> + </sp:Wss10 --> + </wsp:All> + </wsp:ExactlyOne> + </wsp:Policy> + <!--Datenstrukturen --> + <types> + <xsd:schema targetNamespace="http://xoev.de/transport/xta/211"> + <xsd:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="http://www.osci.eu/ws/2014/10/transport/OSCI_MessageMetaData_V2.02.xsd"/> + <xsd:import namespace="http://www.osci.eu/ws/2008/05/transport" schemaLocation="http://www.osci.eu/ws/2014/10/transport/OSCI2_02.xsd"/> + <xsd:include schemaLocation="http://xoev.de/transport/xta/211/XTA-Webservice-Globale-Elemente.xsd"/> + <xsd:include schemaLocation="http://xoev.de/transport/xta/211/XTA-Webservice-Exceptions.xsd"/> + </xsd:schema> + </types> + <!--Nachrichten --> + <message name="EmptyBody"/> + <message name="XTAHeader"> + <part name="MessageMetaData" element="oscimeta:MessageMetaData"/> + <part name="AuthorIdentifier" element="oscimeta:Author"/> + </message> + <message name="GenericContainerBody"> + <part name="GenericContainer" element="xta:GenericContentContainer"/> + </message> + <message name="OptHeaders"> + <part name="FetchResponseHeader" element="osci:MsgBoxResponse"/> + <part name="X509TokenContainer" element="osci:X509TokenContainer"/> + </message> + <!--Nachrichten - SOAP-Exceptions--> + <message name="PermissionDeniedException"> + <part name="permissionDeniedException" element="xta:PermissionDeniedException"/> + </message> + <message name="XTAWSTechnicalProblemException"> + <part name="xtawsTechnicalProblem" element="xta:XTAWSTechnicalProblemException"/> + </message> + <message name="ParameterIsNotValidException"> + <part name="parameterIsNotValidException" element="xta:ParameterIsNotValidException"/> + </message> + <message name="MessageSchemaViolationException"> + <part name="messageSchemaViolationException" element="xta:MessageSchemaViolationException"/> + </message> + <message name="MessageVirusDetectionException"> + <part name="messageVirusDetectionException" element="xta:MessageVirusDetectionException"/> + </message> + <message name="SyncAsyncException"> + <part name="syncAsyncException" element="xta:SyncAsyncException"/> + </message> + <message name="CancelDeniedException"> + <part name="cancelDeniedException" element="xta:CancelDeniedException"/> + </message> + <message name="InvalidMessageIDException"> + <part name="invalidMessageIDException" element="xta:InvalidMessageIDException"/> + </message> + <!--Interfaces --> + <portType name="sendSynchronPortType"> + <documentation>sendPort</documentation> + <operation name="sendMessageSync"> + <input message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <output message="xta:GenericContainerBody" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="PermissionDeniedException" message="xta:PermissionDeniedException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="ParameterIsNotValidException" message="xta:ParameterIsNotValidException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="XTAWSTechnicalProblemException" message="xta:XTAWSTechnicalProblemException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="MessageSchemaViolationException" message="xta:MessageSchemaViolationException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="MessageVirusDetectionException" message="xta:MessageVirusDetectionException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + <fault name="SyncAsyncException" message="xta:SyncAsyncException" wsam:Action="http://www.xta.de/XTA/SendMessageSync"/> + </operation> + </portType> + <binding name="sendXTAHttpsBinding" type="xta:sendSynchronPortType"> + <documentation>https binding for the sendPort</documentation> + <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> + <wsp:PolicyReference URI="#TransportBindingPolicy"/> + <wsp:PolicyReference URI="#osciCommon"/> + <operation name="sendMessageSync"> + <documentation>The sendMessage method delivers a content message to the sending + hub</documentation> + <soap:operation soapAction="http://www.xta.de/XTA/SendMessageSync" soapActionRequired="true" style="document"/> + <input> + <documentation>Input Header: MessageMetaData header contains additional information + for the for the given payload. Body: The GenericContainerBody contains the "xöv" + message</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> + <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> + </input> + <output> + <documentation>Output body: A GenericContainerBody in the body, containing the + synchronous "xöv" message response</documentation> + <soap:body use="literal"/> + <soap:header message="xta:XTAHeader" part="MessageMetaData" use="literal"/> + <soap:header message="xta:OptHeaders" part="X509TokenContainer" use="literal"/> + </output> + <fault name="MessageSchemaViolationException"> + <soap:fault name="MessageSchemaViolationException" use="literal"/> + </fault> + <fault name="MessageVirusDetectionException"> + <soap:fault name="MessageVirusDetectionException" use="literal"/> + </fault> + <fault name="ParameterIsNotValidException"> + <soap:fault name="ParameterIsNotValidException" use="literal"/> + </fault> + <fault name="PermissionDeniedException"> + <soap:fault name="PermissionDeniedException" use="literal"/> + </fault> + <fault name="SyncAsyncException"> + <soap:fault name="SyncAsyncException" use="literal"/> + </fault> + <fault name="XTAWSTechnicalProblemException"> + <soap:fault name="XTAWSTechnicalProblemException" use="literal"/> + </fault> + </operation> + </binding> + <service name="XTAServiceSynchron"> + <port name="SendXtaSynchronPort" binding="xta:sendXTAHttpsBinding"> + <soap:address location="REPLACE_WITH_ACTUAL_URL"/> + <wsa:EndpointReference> + <wsa:Address>REPLACE_WITH_ACTUAL_URL</wsa:Address> + <wsa:ReferenceParameters> + <osci:TypeOfBusinessScenario>http://www.xoevxta.de/xta/ws</osci:TypeOfBusinessScenario> + </wsa:ReferenceParameters> + </wsa:EndpointReference> + </port> + </service> +</definitions> diff --git a/xta-adapter/src/main/xsd/OSCI2_02.xsd b/xta-adapter/src/main/xsd/OSCI2_02.xsd new file mode 100644 index 0000000000000000000000000000000000000000..5ac34339cbcc6de85b4817018c3a33f3d6e6f2f8 --- /dev/null +++ b/xta-adapter/src/main/xsd/OSCI2_02.xsd @@ -0,0 +1,353 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:osci="http://www.osci.eu/ws/2008/05/transport" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xmlns:wsp="http://www.w3.org/ns/ws-policy" targetNamespace="http://www.osci.eu/ws/2008/05/transport" elementFormDefault="qualified" attributeFormDefault="unqualified"> + <!--OSCI Transport Version 2.02 schema - last edited 2015-01-23 --> + <!--OSCI Transport 2.02 schema extended by metadata header for OSCI2.0, according modification for MsgBoxStatusList; MsgBoxFetchRequest attributed for reqeuesting whole envelope, headers of body of original message only--> + <xs:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="OSCI_MessageMetaData_V2.02.xsd"/> + <xs:import namespace="http://www.w3.org/ns/ws-policy" schemaLocation="ws-policy.xsd"/> + <xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="ws-addr.xsd"/> + <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> + <xs:import namespace="http://www.w3.org/2003/05/soap-envelope" schemaLocation="soap-envelope.xsd"/> + <xs:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-utility-1.0.xsd"/> + <!--WSA-Extension: BusinessScenarioType--> + <xs:complexType name="TypeOfBusinessScenarioType"> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attribute ref="wsa:IsReferenceParameter" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:element name="TypeOfBusinessScenario" type="osci:TypeOfBusinessScenarioType"/> + <!--General header-part of OSCI messages: timestamps--> + <xs:complexType name="MsgTimeStampsType"> + <xs:sequence> + <xs:element name="ObsoleteAfter" type="xs:date" minOccurs="0"> + <xs:annotation> + <xs:documentation>Date, when this message is obsolete; may be set by Initiator</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Delivery" type="xs:dateTime" minOccurs="0"> + <xs:annotation> + <xs:documentation>Time of entry in a Recipient MsgBox</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="InitialFetch" type="xs:dateTime" minOccurs="0"> + <xs:annotation> + <xs:documentation>Time of first comitted fetch from MsgBox by the Recipient</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Reception" type="xs:dateTime" minOccurs="0"> + <xs:annotation> + <xs:documentation>Reception Time set by the Recipient</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:element name="MsgTimeStamps" type="osci:MsgTimeStampsType"/> + <!--Types and Elements for MsgBox request/responses--> + <xs:annotation> + <xs:documentation>Template for MsgBox-Requests</xs:documentation> + </xs:annotation> + <xs:complexType name="MsgBoxRequestType"> + <xs:sequence> + <xs:element ref="osci:MsgSelector" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="MsgBoxReasonEnum"> + <xs:restriction base="xs:anyURI"> + <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/MsgBox/reasons/NoMatch"/> + <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/MsgBox/reasons/SearchArgsInvalid"/> + <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/MsgBox/reasons/RequestIdInvalid"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="MsgBoxReasonOpenEnum"> + <xs:union memberTypes="osci:MsgBoxReasonEnum xs:anyURI"/> + </xs:simpleType> + <xs:complexType name="MsgBoxResponseType"> + <xs:choice> + <xs:element name="NoMessageAvailable"> + <xs:complexType> + <xs:attribute name="reason" type="osci:MsgBoxReasonOpenEnum" use="required"/> + </xs:complexType> + </xs:element> + <xs:element name="ItemsPending" type="xs:nonNegativeInteger"/> + </xs:choice> + <xs:attribute name="MsgBoxRequestID" type="xs:anyURI" use="required"/> + </xs:complexType> + <xs:complexType name="MsgAttributeListType"> + <xs:sequence> + <xs:element ref="wsa:MessageID"/> + <xs:element ref="wsa:RelatesTo" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="wsa:From" minOccurs="0"/> + <xs:element ref="osci:TypeOfBusinessScenario"/> + <xs:element name="MsgSize" type="xs:int"/> + <!--xs:element ref="osci:MsgTimeStamps"/--> + <xs:element name="ObsoleteAfterDate" type="xs:date" minOccurs="0"/> + <xs:element name="DeliveryTime" type="xs:dateTime"/> + <xs:element name="InitialFetchedTime" type="xs:dateTime" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:attribute name="MsgBoxRequestID" type="xs:anyURI"/> + <xs:element name="MsgSelector"> + <xs:complexType> + <xs:sequence minOccurs="0"> + <xs:element ref="wsa:MessageID" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="wsa:RelatesTo" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="MsgBoxEntryTimeFrom" type="xs:dateTime" minOccurs="0"/> + <xs:element name="MsgBoxEntryTimeTo" type="xs:dateTime" minOccurs="0"/> + <xs:element name="Extension" type="xs:anyType" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="newEntry" type="xs:boolean"/> + </xs:complexType> + </xs:element> + <xs:element name="MsgStatusList" type="osci:MsgStatusListType"/> + <xs:complexType name="MsgStatusListType"> + <xs:sequence> + <xs:element name="MsgAttributes" type="osci:MsgAttributeListType" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="oscimeta:MessageMetaData" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:element name="MsgBoxFetchRequest"> + <xs:complexType> + <xs:complexContent> + <xs:extension base="osci:MsgBoxRequestType"> + <xs:attribute name="MsgPart" default="Envelope"> + <xs:simpleType> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="Envelope"/> + <xs:enumeration value="Header"/> + <xs:enumeration value="Body"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + <xs:element name="MsgBoxStatusListRequest" type="osci:MsgBoxStatusListRequestType"/> + <xs:complexType name="MsgBoxStatusListRequestType"> + <xs:complexContent> + <xs:extension base="osci:MsgBoxRequestType"> + <xs:attribute name="maxListItems" type="xs:positiveInteger"/> + <xs:attribute name="ListForm"> + <xs:simpleType> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="MsgAtrributes"/> + <xs:enumeration value="MessageMetaData"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:element name="MsgBoxResponse" type="osci:MsgBoxResponseType"/> + <xs:element name="MsgBoxGetNextRequest" type="osci:MsgBoxGetNextRequestType"/> + <xs:complexType name="MsgBoxGetNextRequestType"> + <xs:sequence minOccurs="0"> + <xs:element name="LastMsgReceived" type="wsa:AttributedURIType" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="MsgBoxRequestID" type="xs:anyURI" use="required"/> + </xs:complexType> + <xs:element name="MsgBoxCloseRequest" type="osci:MsgBoxCloseRequestType"/> + <xs:complexType name="MsgBoxCloseRequestType"> + <xs:sequence minOccurs="0"> + <xs:element name="LastMsgReceived" type="wsa:AttributedURIType" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="MsgBoxRequestID" type="xs:anyURI" use="required"/> + </xs:complexType> + <!--Types and Elements for Receipt- and Notification Handling--> + <xs:attribute name="qualTSPForReceipt" type="xs:boolean" default="false"/> + <xs:attribute name="echoRequest" type="xs:boolean" default="false"/> + <xs:complexType name="ReceiptDemandType"> + <xs:sequence> + <xs:element ref="wsa:ReplyTo"/> + </xs:sequence> + <xs:attribute name="qualTSPForReceipt" type="xs:boolean" default="false"/> + <xs:attribute name="echoRequest" type="xs:boolean" default="false"/> + </xs:complexType> + <xs:element name="DeliveryReceiptDemand" type="osci:DeliveryReceiptDemandType"/> + <xs:element name="ReceptionReceiptDemand" type="osci:ReceptionReceiptDemandType"/> + <xs:element name="ReceiptInfo" type="osci:ReceiptInfoType"/> + <xs:complexType name="ReceiptInfoType"> + <xs:sequence> + <xs:element ref="wsa:MessageID"/> + <xs:element ref="osci:MsgTimeStamps"/> + <xs:element ref="wsa:RelatesTo" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="To" type="wsa:EndpointReferenceType"/> + <xs:element ref="wsa:From" minOccurs="0"/> + <xs:element ref="wsa:ReplyTo"/> + <xs:element name="RequestEcho" type="xs:base64Binary" minOccurs="0"/> + <xs:element ref="oscimeta:MessageMetaData" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="Id" type="xs:ID" use="required"/> + <xs:attribute name="ReceiptIssuerRole" use="optional"> + <xs:simpleType> + <xs:restriction base="xs:anyURI"> + <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/MsgBox"/> + <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/Recipient"/> + <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/Sender +"/> + <xs:enumeration value="http://www.osci.eu/ws/2008/05/transport/role/Relay +"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + <xs:complexType name="DeliveryReceiptDemandType"> + <xs:complexContent> + <xs:restriction base="osci:ReceiptDemandType"> + <xs:sequence> + <xs:element ref="wsa:ReplyTo"/> + </xs:sequence> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ReceptionReceiptDemandType"> + <xs:complexContent> + <xs:restriction base="osci:ReceiptDemandType"> + <xs:sequence> + <xs:element ref="wsa:ReplyTo"/> + </xs:sequence> + </xs:restriction> + <!-- xs:attribute ref="s12:role" fixed="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"/--> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="DeliveryReceiptType"> + <xs:sequence> + <xs:element ref="osci:ReceiptInfo"/> + <xs:element ref="ds:Signature"/> + </xs:sequence> + </xs:complexType> + <xs:element name="DeliveryReceipt" type="osci:DeliveryReceiptType"/> + <xs:element name="SubmissionReceipt" type="osci:DeliveryReceiptType"/> + <xs:element name="RelayReceipt" type="osci:DeliveryReceiptType"/> + <xs:complexType name="ReceptionReceiptType"> + <xs:sequence> + <xs:element ref="osci:ReceiptInfo"/> + <xs:element ref="ds:Signature"/> + </xs:sequence> + </xs:complexType> + <xs:element name="ReceptionReceipt" type="osci:ReceptionReceiptType"/> + <xs:complexType name="FetchedNotificationDemandType"> + <xs:sequence> + <xs:element ref="wsa:ReplyTo"/> + </xs:sequence> + <xs:attribute ref="s12:role" default="http://www.osci.eu/ws/2008/05/transport/role/MsgBox"/> + </xs:complexType> + <xs:element name="FetchedNotificationDemand" type="osci:FetchedNotificationDemandType"/> + <xs:complexType name="FetchedNotificationType"> + <xs:sequence> + <xs:element name="FetchedTime" type="xs:dateTime"/> + <xs:element ref="wsa:MessageID"/> + <xs:element ref="wsa:To"/> + <xs:element ref="wsa:From"/> + </xs:sequence> + </xs:complexType> + <xs:element name="FetchedNotification" type="osci:FetchedNotificationType"/> + <!--Extentensions for Key usage context--> + <xs:complexType name="X509TokenContainerType"> + <xs:sequence maxOccurs="unbounded"> + <xs:element ref="osci:X509TokenInfo"/> + </xs:sequence> + <xs:attribute name="validateCompleted" type="xs:boolean" default="false"/> + </xs:complexType> + <xs:element name="X509TokenContainer" type="osci:X509TokenContainerType"/> + <xs:element name="X509TokenInfo"> + <xs:complexType> + <xs:sequence> + <xs:element ref="ds:X509Data"/> + <xs:element name="TokenApplication" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="TimeInstant" type="xs:dateTime"/> + <xs:element name="MsgItemRef" type="xs:IDREF" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="validateResultRef" type="xs:IDREF"/> + <xs:attribute name="ocspNoCache" type="xs:boolean"/> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="validated" type="xs:boolean" default="false"/> + <xs:attribute name="Id" type="xs:ID" use="required"/> + <!-- RFC 3280 for KeyUsage with Extentensions Attribute Certificate and usage for Authentication --> + </xs:complexType> + <!--OSCI Policy Asserstions--> + <!--Policy qualified Timestamp Servcie available--> + </xs:element> + <!--Poliy Assertion carrying Endpoints X509Certificates--> + <xs:element name="X509CertificateAssertion"> + <xs:complexType> + <xs:sequence> + <xs:element ref="wsp:All"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <!--Policy, when qualified TSP service can be requested from this node--> + <xs:element name="QualTspAssertion"> + <xs:complexType> + <xs:attribute name="PolicyRef" type="xs:anyURI"/> + </xs:complexType> + </xs:element> + <!--Policy if and how MsgTimeStamps:OsoleteAfter is handled--> + <xs:element name="ObsoleteAfterAssertion"> + <xs:complexType> + <xs:sequence> + <xs:element name="MsgRetainDays" type="xs:positiveInteger"/> + <xs:element name="WarningBeforeMsgObsolete" type="xs:positiveInteger" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="PolicyRef" type="xs:anyURI"/> + </xs:complexType> + </xs:element> + <!--Poliy for MakeConnection: Response Retention Days--> + <xs:element name="MsgRetainDays" type="xs:positiveInteger"/> + <!--Enumeration for possible X509 Token Usages--> + <xs:attribute name="TokenUsage"> + <xs:simpleType> + <xs:restriction base="xs:anyURI"> + <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/e2eContentEncryption"/> + <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/TransportEncryption"/> + <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/ReceiptSigning"/> + <xs:enumeration value="http://www.osci.eu/common/names/TokenUsage/TSPSigning"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <!--Opaque Body Type - not used--> + <!--Policy maximum accepted Message size and Frequency per hour--> + <xs:element name="AcceptedMsgLimits"> + <xs:complexType> + <xs:sequence> + <xs:element name="MaxSize" type="xs:positiveInteger"/> + <xs:element name="MaxPerHour" type="xs:positiveInteger"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:complexType name="MessageBody"> + <xs:sequence> + <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> +</xs:schema> diff --git a/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd b/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd new file mode 100644 index 0000000000000000000000000000000000000000..560efe36888cbb97033ec5ed0cdcd032c7b80693 --- /dev/null +++ b/xta-adapter/src/main/xsd/OSCI_MessageMetaData_V2.02.xsd @@ -0,0 +1,404 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<!--Schema for OSCI Message Meta Data - last edited 2015-02-19 --> +<!-- Change 2015-02-19: MessageType amended by mandatory attribte @payloadSchema --> +<!-- Change 2015-01-23: Alignment with XTA/KoSIT: introduced KeyCodeType, changed PropertyType, BusinessScenarioType, MessageType; ServiceQuality (to #any type), SecurityToken may carry IDREF attribute to token in payload now; usage attribute mandatory now --> +<!-- Change 2014-11-30: xoev basis data type schema version changed from 1_0 to 1_1 --> +<!-- Last recent changes: Codelist for BusinessScenarioTypes defined and imported --> +<!-- Changes: 2.0.2: Adoption of xoev:Codelist type for some elements; eliminating QName typed attributes/elements; PartyType elements now may include optional SecurityTokens (as e.g. used in XVergabe) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1" targetNamespace="http://www.osci.eu/ws/2014/10/transport" elementFormDefault="qualified" attributeFormDefault="unqualified"> + <xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="ws-addr.xsd"/> + <xs:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd"/> + <xs:import namespace="http://xoev.de/schemata/basisdatentypen/1_1" schemaLocation="xoev-basisdatentypen.xsd"/> + <xs:simpleType name="NonEmptyStringType"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="NonEmptyURIType"> + <xs:restriction base="xs:anyURI"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="AnyType" mixed="true"> + <xs:sequence minOccurs="0" maxOccurs="unbounded"> + <xs:any namespace="##any" processContents="lax"/> + </xs:sequence> + <xs:anyAttribute namespace="##any"/> + </xs:complexType> + <!-- End AnyType --> + <xs:complexType name="ReceiptRequestType"> + <xs:sequence> + <xs:element name="Submission" minOccurs="0"> + <xs:annotation> + <xs:documentation>Sending node: Message accepted for delivery and submitted</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Relay" minOccurs="0"> + <xs:annotation> + <xs:documentation>Active node on the delivery route: Message forwarded to next hop</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Delivery" minOccurs="0"> + <xs:annotation> + <xs:documentation>Destination node:Successful delivery to Recipient in synchronous scenarios, to MsgBox if asynchronous</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Fetch" minOccurs="0"> + <xs:annotation> + <xs:documentation>Only MsgBox node: Initial fetch of Message by Recipient from his MsgBox</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Reception" minOccurs="0"> + <xs:annotation> + <xs:documentation>Ultimate Recipient node, after acceptance of message, after successful decryption of payload</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ReceiptTo" type="wsa:EndpointReferenceType" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DeliveryAttributesType"> + <xs:annotation> + <xs:documentation>Message delivery time instants, quality and receipts requested</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:annotation> + <xs:documentation>Timestamps, priority etc.</xs:documentation> + </xs:annotation> + <xs:element name="Origin" type="xs:dateTime" minOccurs="0"> + <xs:annotation> + <xs:documentation>Production of content by Requester respective (response) Provider</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="InitialSend" type="xs:dateTime" minOccurs="0"> + <xs:annotation> + <xs:documentation>Time when delivery was started (submission by Senders node)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NotBefore" type="xs:dateTime" minOccurs="0"> + <xs:annotation> + <xs:documentation>Time when sending node should submit message</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ObsoleteAfter" type="xs:date" minOccurs="0"> + <xs:annotation> + <xs:documentation>Date, when this message is obsolete; may be set by Initiator</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Delivery" type="xs:dateTime" minOccurs="0"> + <xs:annotation> + <xs:documentation>Time of entry in a Recipients MsgBox or reception by Recipient in synchronous case</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="InitialFetch" type="xs:dateTime" minOccurs="0"> + <xs:annotation> + <xs:documentation>Time of first comitted fetch from MsgBox by recipient</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Reception" type="xs:dateTime" minOccurs="0"> + <xs:annotation> + <xs:documentation>Reception time set by the Ultimate Recipient ("Reader", target application)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ServiceQuality" type="oscimeta:NonEmptyStringType" minOccurs="0"> + <xs:annotation> + <xs:documentation>Property like priority etc. - XTA here points to "Service Profile"</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ReceiptRequests" type="oscimeta:ReceiptRequestType" minOccurs="0"> + <xs:annotation> + <xs:documentation>Receipts requested by sender or author</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:element name="SecurityToken"> + <xs:complexType> + <xs:choice> + <xs:element ref="wsse:BinarySecurityToken"/> + <xs:element ref="wsse:SecurityTokenReference"/> + <xs:element ref="wsse:UsernameToken"/> + </xs:choice> + <xs:attribute name="usage" use="required"> + <xs:simpleType> + <xs:restriction base="xs:NMTOKEN"> + <xs:enumeration value="AUTHENTICATION"/> + <xs:enumeration value="ENCRYPTION"/> + <xs:enumeration value="SIGNATURE"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="payloadRef" type="xs:IDREF"/> + </xs:complexType> + </xs:element> + <xs:complexType name="PartyType"> + <xs:annotation> + <xs:documentation>Logical identifier and optional security tokens of that entity (binary, may carry SAML, too) </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Identifier" type="oscimeta:PartyIdentifierType"/> + <xs:element ref="oscimeta:SecurityToken" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="PartyIdentifierType"> + <xs:annotation> + <xs:documentation>Value of generic party identifier, as classified by @type attribute, e.g.: Prefix:Kennung</xs:documentation> + </xs:annotation> + <xs:simpleContent> + <xs:extension base="xs:normalizedString"> + <xs:attribute name="type" type="oscimeta:NonEmptyStringType" use="required"> + <xs:annotation> + <xs:documentation>Orientation: ebMS Core: type, how to interpret Party-Id value, e.g.: xöv oder Justiz</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="name" type="oscimeta:NonEmptyStringType"> + <xs:annotation> + <xs:documentation>optional "friendly name" value for displaying in user agents (as e.g. known from eMail)</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="category" type="oscimeta:NonEmptyStringType"> + <xs:annotation> + <xs:documentation>Concrete role of party in business scenario (e.g. "buyer", "Meldehörde", "Standesamt"...)</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:element name="Author" type="oscimeta:PartyType"> + <xs:annotation> + <xs:documentation>Requester resp. (response-) Provider</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Reader" type="oscimeta:PartyType"> + <xs:annotation> + <xs:documentation>Destinations of the message</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="OriginatorsType"> + <xs:sequence> + <xs:element ref="oscimeta:Author"/> + <xs:element ref="oscimeta:Sender" minOccurs="0"/> + <xs:element name="ReplyTo" type="oscimeta:PartyType" minOccurs="0"> + <xs:annotation> + <xs:documentation>If response expected different from value outlined in "From" address</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="DestinationsType"> + <xs:sequence> + <xs:element ref="oscimeta:Reader"> + <xs:annotation> + <xs:documentation>Ultimate target of the message</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="oscimeta:OtherDestinations" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="ProcessIdentifierType"> + <xs:annotation> + <xs:documentation>Process ID message is realated to</xs:documentation> + </xs:annotation> + <xs:simpleContent> + <xs:extension base="oscimeta:NonEmptyStringType"> + <xs:attribute name="ProccesName" type="oscimeta:NonEmptyStringType"> + <xs:annotation> + <xs:documentation>Process may have a name, e.g. "order"</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:complexType name="MsgIdentificationType"> + <xs:sequence> + <xs:element ref="wsa:MessageID"/> + <xs:element name="In-Reply-To" type="wsa:AttributedURIType" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Referenced application level Message-Id(s)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ProcessRef" minOccurs="0"> + <xs:annotation> + <xs:documentation>References to business process-id's (like ebMS Conversation-Id, "Aktenzeichen" in Germany)</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Requester" type="oscimeta:ProcessIdentifierType" minOccurs="0"> + <xs:annotation> + <xs:documentation>Ref on requester (Source Application) side</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Responder" type="oscimeta:ProcessIdentifierType" minOccurs="0"> + <xs:annotation> + <xs:documentation>Ref on responder (Target Application) side, if different</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="KeyCodeType"> + <xs:complexContent> + <xs:restriction base="xoev-dt:Code"> + <xs:sequence> + <xs:element name="code" type="xs:token" form="unqualified"/> + <xs:element name="name" type="xs:normalizedString" form="unqualified" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="listURI" type="xs:anyURI" use="required"/> + <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"/> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PropertyType"> + <xs:sequence> + <xs:element name="Key" type="oscimeta:KeyCodeType"/> + <xs:element name="Value" type="oscimeta:NonEmptyStringType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="MessagePropertiesType"> + <xs:sequence> + <xs:element name="Property" type="oscimeta:PropertyType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="QualifierType"> + <xs:sequence> + <xs:element name="Subject" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Message subject text (informational)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Service" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>Distinct service in a certain business scenario context; in the XÖV context this is the "Dienste URI"</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="BusinessScenario"> + <xs:annotation> + <xs:documentation>Domain qualifier, e.g. Meldewesen, XVergabe...</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:choice> + <xs:element name="Defined" type="oscimeta:KeyCodeType"/> + <xs:element name="Undefined" type="xs:normalizedString"/> + </xs:choice> + </xs:complexType> + </xs:element> + <xs:element name="MessageType"> + <xs:annotation> + <xs:documentation>Payload: Type of document or message. MessageTypes normally bound to specific BusinessScenario</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:complexContent> + <xs:extension base="oscimeta:KeyCodeType"> + <xs:attribute name="payloadSchema" type="oscimeta:NonEmptyURIType" use="required"/> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:element name="DeliveryAttributes" type="oscimeta:DeliveryAttributesType"> + <xs:annotation> + <xs:documentation>Time stamps, receipts to be generated, service quality</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Originators" type="oscimeta:OriginatorsType"> + <xs:annotation> + <xs:documentation>Message originators and reply address</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Destinations" type="oscimeta:DestinationsType"> + <xs:annotation> + <xs:documentation>Actual and other destinations of Message</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MsgIdentification" type="oscimeta:MsgIdentificationType"> + <xs:annotation> + <xs:documentation>Message ID and Message relations</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Qualifier" type="oscimeta:QualifierType"> + <xs:annotation> + <xs:documentation>General payload properties, common to all scenarios</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MessageProperties"> + <xs:annotation> + <xs:documentation>Scenarios specific payload properties, to be agreed upon per scenario</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Property" type="oscimeta:PropertyType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Sender" type="oscimeta:PartyType"> + <xs:annotation> + <xs:documentation>Sending node, entry may be added by Sender node</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OtherDestinations"> + <xs:annotation> + <xs:documentation>Other destinations of message - informational, as known from e-mail</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="oscimeta:OtherReaders" maxOccurs="unbounded"/> + <xs:element ref="oscimeta:CcReaders" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="OtherReaders" type="oscimeta:PartyIdentifierType"/> + <xs:element name="CcReaders" type="oscimeta:PartyIdentifierType"> + <xs:annotation> + <xs:documentation>Destinations in cc role</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MessageMetaData"> + <xs:complexType> + <xs:sequence> + <xs:element ref="oscimeta:DeliveryAttributes"/> + <xs:element ref="oscimeta:Originators"/> + <xs:element ref="oscimeta:Destinations"/> + <xs:element ref="oscimeta:MsgIdentification"/> + <xs:element ref="oscimeta:Qualifier"/> + <xs:element ref="oscimeta:MessageProperties" minOccurs="0"/> + <xs:element name="MsgSize" type="xs:positiveInteger" minOccurs="0"> + <xs:annotation> + <xs:documentation>Message size in bytes</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="TestMsg" type="xs:boolean" default="false"> + <xs:annotation> + <xs:documentation>"true", if test-message; defaults to "false"</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + </xs:element> +</xs:schema> diff --git a/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd b/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd new file mode 100644 index 0000000000000000000000000000000000000000..666bf8e26f7250039806da1c0f6b7c0f56d6a3f3 --- /dev/null +++ b/xta-adapter/src/main/xsd/XTA-Webservice-Datentypen.xsd @@ -0,0 +1,569 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xta="http://xoev.de/transport/xta/211" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1" targetNamespace="http://xoev.de/transport/xta/211" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1.1"> + <xs:annotation> + <xs:documentation>Hier wird die Sammlung von Typen dargestellt, welche innerhalb des Standards XTA definiert und verwendet werden.</xs:documentation> + </xs:annotation> + <xs:import namespace="http://xoev.de/schemata/basisdatentypen/1_1" schemaLocation="xoev-basisdatentypen.xsd"/> + <xs:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="OSCI_MessageMetaData_V2.02.xsd"/> + <xs:complexType name="AdditionalReportListType"> + <xs:annotation> + <xs:documentation>Dieser Typ gestattet das Ablegen weiterer Prüfberichte, welche das XTA-Protokoll (TransportReport) ergänzen sollen.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Report" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>In diesem Element ist ein zusätzlicher Report abgelegt, der das XTA-Protokoll (TransportReport) ergänzt. Die Art des Reports (z. B. OSCI Process Card) und der Inhalt des Reports werden bzw. sind in separaten Bereichen dieses Containers eingetragen.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Key" type="xta:Code.ReportType"> + <xs:annotation> + <xs:documentation>Dieses Element benennt den Typ des Reports, um dem Leser die Interpretation der Reportdaten zu ermöglichen. Die Benennung des Typs des Reports geschieht auf der Basis einer Codeliste.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Data" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation>Hier wird der zusätzliche Report in einem technisch neutralen Format eingetragen.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="Code.Fehlernummer"> + <xs:annotation> + <xs:appinfo> + <listAgencyName>Koordinierungsstelle für IT-Standards (KoSIT)</listAgencyName> + <listName>XTA-WS Fehlernummer</listName> + </xs:appinfo> + <xs:documentation>Diese Codeliste gibt eine Übersicht über die in XTA-WS zu verwendenden Fehlernummern (ErrorCodes) und ordnet sie den Exceptions zu, in deren Kontext sie auftreten können.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xoev-dt:Code"> + <xs:sequence> + <xs:element name="code" type="xs:token" form="unqualified"/> + <xs:element name="name" type="xs:normalizedString" form="unqualified"/> + </xs:sequence> + <xs:attribute name="listURI" type="xs:anyURI" use="optional" fixed="urn:de:xta:webservice:codeliste:fehlernummer"/> + <xs:attribute name="listVersionID" type="xs:normalizedString" use="optional" fixed="1.0"/> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Code.RecordType"> + <xs:annotation> + <xs:appinfo> + <listAgencyName>N.N.</listAgencyName> + <listName>Record Type</listName> + </xs:appinfo> + <xs:documentation>In diesen Typ ist eine auszuwählende bzw. selbst zu definierende Codeliste einzubinden, die Arten von Meldungen benennt, welche in das Protokoll zur Abarbeitung eines Transportauftrags (TransportReport) eingetragen werden. Dort können die Meldungen als Fehler-, Warn- oder Informationseinträge eingeordnet sein. +In die Attribute des vorliegenden Typs sind die Codelisten-URI und die Nummer der Version der ausgewählten Codeliste einzutragen. + +Die KoSIT hat die Absicht, für den Standard XTA eine passende Codeliste zu definieren und als einheitliches Angebot zur Einbindung für diesen Typ bereitzustellen. Diese Codeliste ist, wenn die Bereitstellung erfolgt ist, im XRepository (www.xrepository.de) unter der Codelisten-URI urn:de:xta:codeliste:record.type auffindbar und kann von dort im XML-Format OASIS Genericode abgerufen werden.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xoev-dt:Code"> + <xs:sequence> + <xs:element name="code" type="xs:token" form="unqualified"> + <xs:annotation> + <xs:documentation>In diesem Element ist ein Schlüssel aus der referenzierten Codeliste einzutragen.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="listURI" type="xs:anyURI" use="required"> + <xs:annotation> + <xs:documentation>Hier wird die URI einer Codeliste eingetragen, die dadurch hier eingebunden ist. Es ist die Codeliste dafür auszuwählen, auf deren Basis der übermittelte Schlüssel durch den Leser der Nachricht interpretiert werden soll.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"> + <xs:annotation> + <xs:documentation>Die Version der Codeliste, welche der Interpretation des übermittelten Schlüssels zu Grunde gelegt werden soll.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Code.ReportType"> + <xs:annotation> + <xs:appinfo> + <listAgencyName>N.N.</listAgencyName> + <listName>Report Type</listName> + </xs:appinfo> + <xs:documentation>Dieser Typ gestattet die Kennzeichnung der Art eines zusätzlichen Reports. Es wird eine zu wählende Codeliste eingebunden, die mögliche Arten von Reports nennt (spezielles Format, innerhalb oder außerhalb von XTA definiert), die in das XTA-Protokoll (TransportReport) eingefügt werden können. +Die KoSIT gibt für den Standard XTA eine Codeliste heraus, welche Einträge für einschlägige Arten von Reports auflistet. Diese Codeliste kann auf Antrag erweitert bzw. geändert werden. Sie ist durch XTA-konforme Systeme für übergreifende Prozesse zu verwenden. +Diese Codeliste ist im XRepository (www.xrepository.de) unter Nennung ihrer Codelisten-URI urn:de:xta:codeliste:report.type auffindbar und kann dort im XML-Format OASIS Genericode in der aktuellen Version abgerufen werden (ggf. sind auch frühere Versionen verfügbar). In die Attribute des vorliegenden Typs sind entsprechend ihre Codelisten-URI und die Nummer der ausgewählten Version einzutragen. +Für lokale Zwecke können XTA-Kommunikationspartner auch eigene Codelisten definieren (welche bilateral abgestimmte Reportformate benennen) und an dieser Stelle einbinden. In die Attribute des vorliegenden Typs werden dann Codelisten-URI und Versionsnummer der selbstdefinierten Codeliste eingetragen.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xoev-dt:Code"> + <xs:sequence> + <xs:element name="code" type="xs:token" form="unqualified"> + <xs:annotation> + <xs:documentation>In diesem Element ist ein Schlüssel aus der referenzierten Codeliste einzutragen.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="listURI" type="xs:anyURI" use="required"> + <xs:annotation> + <xs:documentation>Hier wird die URI einer Codeliste eingetragen, die dadurch hier eingebunden ist. Es ist die Codeliste dafür auszuwählen, auf deren Basis der übermittelte Schlüssel durch den Leser der Nachricht interpretiert werden soll.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"> + <xs:annotation> + <xs:documentation>Die Version der Codeliste, welche der Interpretation des übermittelten Schlüssel zu Grunde gelegt werden soll.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Code.ServiceParameterType"> + <xs:annotation> + <xs:appinfo> + <listAgencyName>N.N.</listAgencyName> + <listName>Service Parameter Type</listName> + </xs:appinfo> + <xs:documentation>Dieser Typ gestattet die Kennzeichnung der Art eines Parameters für die technische Erreichbarkeit des Dienstes, der adressiert werden soll. +Hier wird eine zu wählende Codeliste eingebunden, die mögliche Parameterarten nennt. +Die KoSIT gibt für den Standard XTA eine Codeliste heraus, welche einschlägige solcher Parameterarten auflistet. Diese Codeliste kann auf Antrag erweitert bzw. geändert werden. Sie ist durch XTA-konforme Systeme für übergreifende Prozesse zu verwenden. +Diese Codeliste ist im XRepository (www.xrepository.de) unter Nennung ihrer Codelisten-URI urn:de:xta:codeliste:service.parameter.type auffindbar und kann dort im XML-Format OASIS Genericode in der aktuellen Version abgerufen werden (ggf. sind auch frühere Versionen verfügbar). In die Attribute des vorliegenden Typs sind entsprechend ihre Codelisten-URI und die Nummer der ausgewählten Version einzutragen. +Für lokale Zwecke können XTA-Kommunikationspartner auch eigene Codelisten definieren (welche bilateral abgestimmte Parameterarten benennen) und an dieser Stelle einbinden. In die Attribute des vorliegenden Typs werden dann Codelisten-URI und Versionsnummer der selbstdefinierten Codeliste eingetragen.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:restriction base="xoev-dt:Code"> + <xs:sequence> + <xs:element name="code" type="xs:token" form="unqualified"> + <xs:annotation> + <xs:documentation>In diesem Element ist ein Schlüssel aus der referenzierten Codeliste einzutragen.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="listURI" type="xs:anyURI" use="required"> + <xs:annotation> + <xs:documentation>Hier wird die URI einer Codeliste eingetragen, die dadurch hier eingebunden ist. Es ist die Codeliste dafür auszuwählen, auf deren Basis der übermittelte Schlüssel durch den Leser der Nachricht interpretiert werden soll.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"> + <xs:annotation> + <xs:documentation>Die Version der Codeliste, welche der Interpretation des übermittelten Schlüssel zu Grunde gelegt werden soll.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:restriction> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="Codelist.Fehlernummer"> + <xs:annotation/> + <xs:restriction base="xs:token"> + <xs:enumeration value="9000"> + <xs:annotation> + <xs:appinfo> + <codeName>Unspezifizierter Fehler, als Freitext beschrieben</codeName> + </xs:appinfo> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9010"> + <xs:annotation> + <xs:appinfo> + <codeName>Authentisierung/Zertifikat ist abgelaufen.</codeName> + </xs:appinfo> + <xs:documentation>PermissiondeniedException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9011"> + <xs:annotation> + <xs:appinfo> + <codeName>Account ist gesperrt.</codeName> + </xs:appinfo> + <xs:documentation>PermissiondeniedException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9012"> + <xs:annotation> + <xs:appinfo> + <codeName>Account nicht vorhanden.</codeName> + </xs:appinfo> + <xs:documentation>PermissiondeniedException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9013"> + <xs:annotation> + <xs:appinfo> + <codeName>Dienst ist nicht gebucht.</codeName> + </xs:appinfo> + <xs:documentation>PermissiondeniedException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9014"> + <xs:annotation> + <xs:appinfo> + <codeName>Authentisierung/Zertifikat passt nicht zur Absenderkennung.</codeName> + </xs:appinfo> + <xs:documentation>PermissiondeniedException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9020"> + <xs:annotation> + <xs:appinfo> + <codeName>Keine Parameter vorhanden</codeName> + </xs:appinfo> + <xs:documentation>ParameterIsNotValidExeption</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9021"> + <xs:annotation> + <xs:appinfo> + <codeName>Keine gültige URI</codeName> + </xs:appinfo> + <xs:documentation>ParameterIsNotValidExeption</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9022"> + <xs:annotation> + <xs:appinfo> + <codeName>Ungültige Parameterkombination</codeName> + </xs:appinfo> + <xs:documentation>ParameterIsNotValidException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9023"> + <xs:annotation> + <xs:appinfo> + <codeName>Die Nachricht überschreitet die Größenbeschränkung.</codeName> + </xs:appinfo> + <xs:documentation>ParameterIsNotValidException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9024"> + <xs:annotation> + <xs:appinfo> + <codeName>MessageID ist bereits vergeben.</codeName> + </xs:appinfo> + <xs:documentation>ParameterIsNotValidException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9030"> + <xs:annotation> + <xs:appinfo> + <codeName>Interner Fehler beim XTA-Server bzw. XTA-Dienstleister</codeName> + </xs:appinfo> + <xs:documentation>XTAWSTechnicalProblemException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9031"> + <xs:annotation> + <xs:appinfo> + <codeName>Fehler beim externen Verzeichnisdienst</codeName> + </xs:appinfo> + <xs:documentation>XTAWSTechnicalProblemException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9032"> + <xs:annotation> + <xs:appinfo> + <codeName>Fehler bei der Zustellung</codeName> + </xs:appinfo> + <xs:documentation>XTAWSTechnicalProblemException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9050"> + <xs:annotation> + <xs:appinfo> + <codeName>Fachnachricht ist nicht schemakonform</codeName> + </xs:appinfo> + <xs:documentation>MessageSchemaViolationException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9051"> + <xs:annotation> + <xs:appinfo> + <codeName>Fachnachricht trägt ein falsches Encoding.</codeName> + </xs:appinfo> + <xs:documentation>MessageSchemaViolationException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9052"> + <xs:annotation> + <xs:appinfo> + <codeName>Nachricht verletzt das entsprechende Service Profil.</codeName> + </xs:appinfo> + <xs:documentation>MessageSchemaViolationException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9060"> + <xs:annotation> + <xs:appinfo> + <codeName>Es wurde schadhafter Code ermittelt.</codeName> + </xs:appinfo> + <xs:documentation>MessageVirusDetectionException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9070"> + <xs:annotation> + <xs:appinfo> + <codeName>MessageID für den Account nicht bekannt.</codeName> + </xs:appinfo> + <xs:documentation>InvalidMessageIDException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9080"> + <xs:annotation> + <xs:appinfo> + <codeName>Der Dienst wird nur asynchron angeboten.</codeName> + </xs:appinfo> + <xs:documentation>SyncAsyncException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9081"> + <xs:annotation> + <xs:appinfo> + <codeName>Der Dienst wird nur synchron angeboten.</codeName> + </xs:appinfo> + <xs:documentation>SyncAsyncException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9100"> + <xs:annotation> + <xs:appinfo> + <codeName>Der durch den Schalter NotBefore gesetzte Termin ist +verstrichen.</codeName> + </xs:appinfo> + <xs:documentation>CancelDeniedException</xs:documentation> + </xs:annotation> + </xs:enumeration> + <xs:enumeration value="9101"> + <xs:annotation> + <xs:appinfo> + <codeName>Der Schalter NotBefore wurde nicht gesetzt.</codeName> + </xs:appinfo> + <xs:documentation>CancelDeniedException</xs:documentation> + </xs:annotation> + </xs:enumeration> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="ContentType"> + <xs:annotation> + <xs:documentation>Typ für die technisch neutrale (base64-kodierte) Darstellung von Information. Enthält den base64-kodierten Inhalt (Fachnachricht), der zwischen WebService-Client und XTA-Server transportiert wird. Die Attribute sind der MIME-Spezifikation (RFC 2183) entnommen. +Die Belegung der Attribute ist für verschiedene Fachlichkeiten unterschiedlich und ist durch den Fachstandard festzulegen, der für die Fachnachricht verantwortlich ist.</xs:documentation> + </xs:annotation> + <xs:simpleContent> + <xs:extension base="xs:base64Binary"> + <xs:attribute name="contentDescription" type="oscimeta:NonEmptyStringType" use="optional"> + <xs:annotation> + <xs:documentation>Beschreibung des fachlichen Inhalts, z.B. 'Angebot' oder 'Rechnung'.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="contentType" type="oscimeta:NonEmptyStringType" use="required"> + <xs:annotation> + <xs:documentation>Dieses Attribut nennt den MIME-Typ des enthaltenen Inhalts, hat also Einträge wie text/xml, text/plain, application/gzip oder application/pdf. Mandatorisch, weil besonders wichtige Information (wird in E-Mail analog gehandhabt).</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="encoding" type="oscimeta:NonEmptyStringType" use="optional"> + <xs:annotation> + <xs:documentation>Der Zeichensatz, der der Kodierung des Inhalts zugrunde gelegen hat.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="filename" type="oscimeta:NonEmptyStringType" use="optional"> + <xs:annotation> + <xs:documentation>Der Dateiname der Datenquelle, falls der Inhalt einer Datei entnommen worden ist. Bsp.: Für die Übermittlung von xdomea-Nachrichten ist dieses Attribut Pflicht.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="id" type="xs:ID" use="optional"> + <xs:annotation> + <xs:documentation>Bietet die Möglichkeit, den Inhalt über z.B. eine laufende Nummer zu referenzieren.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="lang" type="xs:language" use="optional"> + <xs:annotation> + <xs:documentation>Sprache, in der der Inhalt formuliert ist.</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="size" type="xs:positiveInteger" use="optional"> + <xs:annotation> + <xs:documentation>Die Größe des Inhalts in Bytes.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:complexType name="IsServiceAvailableValueType"> + <xs:annotation> + <xs:documentation>Das Feld enthält die benötigten Attribute zum Ergebnis der Dienstanfrage: ob der Dienst angeboten wird oder nicht, oder ob diese Information generell nicht bekannt ist.</xs:documentation> + </xs:annotation> + <xs:choice> + <xs:element name="ServiceIsAvailable" type="xs:boolean"> + <xs:annotation> + <xs:documentation>Der Dienst wird angeboten (true) oder nicht angeboten (false).</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ServiceIsAvailableUnknown" type="xs:boolean" fixed="true"> + <xs:annotation> + <xs:documentation>Es ist nicht bekannt, ob der Dienst angeboten wird oder nicht.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:choice> + </xs:complexType> + <xs:complexType name="LookupServiceResultType"> + <xs:annotation> + <xs:documentation>Das Ergebnis zu einer Dienstanfrage, das die Information enthält, ob der Dienst angeboten wird. Außerdem sind die nötigen technischen Paramter für die Erreichbarkeit vorhanden.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xta:LookupServiceType"> + <xs:sequence> + <xs:element name="IsServiceAvailableValue" type="xta:IsServiceAvailableValueType"> + <xs:annotation> + <xs:documentation>Enthält das Ergebnis der Dienstanfrage: ob der Dienst angeboten wird oder nicht oder ob diese Information generell nicht bekannt ist.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ServiceParameter" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Dieses Element enthält im Erfolgsfall die benötigten technischen Parameter für die elektronische Kommunikation mit dem Leser, z.B. das öffentliche Zertifikat des Lesers zur Inhaltsdatenverschlüsselung. Das Feld ist zu füllen, falls der angefragte Dienst angeboten und in diesem Kontext der Parameter benötigt wird. +Vom Fachszenario ist zu beschreiben, welche Parameter für die Erreichbarkeit der Dienste in diesem Fachszenario anzuwenden sind.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="ParameterType" type="xta:Code.ServiceParameterType"> + <xs:annotation> + <xs:documentation>Dieses Element steht für die Art des Parameters, welche ins passende Kindelement einzutragen bzw. eingetragen ist. Die vorgesehenen Parameterarten werden auf der Basis einer Codeliste interpretiert, welche durch die Attribute listURI und listVersionID referenziert ist.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Resource" type="xs:base64Binary"> + <xs:annotation> + <xs:documentation>Hier ist der Parameter enthalten bzw. einnzutragen in technisch neutraler Darstellung.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="LookupServiceType"> + <xs:annotation> + <xs:documentation>Dies ist die Struktur einer Service-Anfrage: Sie enthält die Daten über den Diensteanbieter (Leser) und den Dienst des Lesers, den der Autor in Anspruch nehmen will. Diese Anfrage dient dazu, zu ermitteln, ob der Dienst von diesem Anbieter angeboten wird und über welche technischen Parameter er angesprochen werden kann.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element ref="oscimeta:Reader"> + <xs:annotation> + <xs:documentation>Dies ist die fachliche Identifizierung des Lesers. Der Wert entspricht z.B. dem DVDV-Behördenschlüssel.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ServiceType" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>Dies ist die Bezeichnung des anzufordernden Dienstes. Sie wird im Format einer URL übergeben, was den Vorteil hat, dass damit auch eine Versionsnummer eingeschlossen ist. Beispiel für Dienstebezeichnungen, wie sie im DVDV verwendet werden: http://www.osci.de/xmeld181/xmeld181Rueckmeldung.wsdl + + +Abgrenzung: "Dienst" ist das, was gemäß Diensteeinteilung der Fachdomäne im Verzeichnisdienst als Service (im Sinne eines Web Service) eingetragen ist. Dadurch ist die Dienstebezeichnung weniger differenziert als der Nachrichtentyp. Typischerweise sind im Verzeichnisdienst mehrere Nachrichtentypen in einer Service-WSDL zusammengefasst.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="MessageStatusType"> + <xs:annotation> + <xs:documentation>Gibt die Struktur für die Meldungen (Logging-Informationen) über den Transportverlauf vor. Er sieht Meldungszeilen für Infos, Warnungen und Fehler vor.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Status" type="xs:integer"> + <xs:annotation> + <xs:documentation>Wird durch Sender bzw. Empfänger fortgeschrieben. Wird der TransportReport noch fortgeschrieben, wird er hier mit 0=offen markiert. Nach Abschluss des TransportReports wird nach dem Max-Prinzip der höchste Ampelstatus aus den Elementen ErrorList, WarnList, InfoList hier numerisch dargestellt. + + + + +0=offen: Die Nachricht befindet sich noch in der Verarbeitung. +1=grün: Es sind keine Fehler oder Warnungen aufgetreten. +2=gelb: Es sind Warnungen, aber keine kritischen Fehler aufgetreten. +3=rot: Es sind kritische Fehler aufgetreten.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ErrorList" minOccurs="0"> + <xs:annotation> + <xs:documentation>Liste der Fehlermeldungen.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Error" type="xta:RecordType" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Hier wird die Fehlermeldung mit ihren Parametern eingetragen.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="WarnList" minOccurs="0"> + <xs:annotation> + <xs:documentation>Liste der Warnungen.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Warning" type="xta:RecordType" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Hier wird die Warnung mit ihren Paramtern eingetragen.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="InfoList" minOccurs="0"> + <xs:annotation> + <xs:documentation>Liste der Informationsmeldungen.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Info" type="xta:RecordType" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Hier wird die Informationsmeldung mit ihren Parametern eingetragen.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="RecordType"> + <xs:annotation> + <xs:documentation>Der Typ zur Kennzeichnung und Erläuterung einer Meldung (anwendbar auf Info-, Fehlermeldungen und Warnungen).</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Timestamp" type="xs:dateTime"> + <xs:annotation> + <xs:documentation>Zeitstempel für den Zeitpunkt der Aufzeichnung der Meldung.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Code" type="xta:Code.RecordType"> + <xs:annotation> + <xs:documentation>Schlüssel, der die Bedeutung der Meldung kodiert. Dieser Schlüssel muss aus einer eingebundenen Codeliste stammen.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Reason" type="xs:string"> + <xs:annotation> + <xs:documentation>Hier wird zur weiteren Erläuterung der Grund der Meldung als Freitext eingetragen.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> +</xs:schema> diff --git a/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd b/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd new file mode 100644 index 0000000000000000000000000000000000000000..107e27946063395b935aea358c1f4f6f8c150bff --- /dev/null +++ b/xta-adapter/src/main/xsd/XTA-Webservice-Exceptions.xsd @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xta="http://xoev.de/transport/xta/211" targetNamespace="http://xoev.de/transport/xta/211" version="2.1.1" elementFormDefault="qualified" attributeFormDefault="unqualified"> + <xs:annotation> + <xs:documentation>Hier wird die Sammlung von Typen dargestellt, welche innerhalb des Standards XTA verwendet werden, um SOAP Exceptions zu definieren und zu verwenden.</xs:documentation> + </xs:annotation> + <xs:include schemaLocation="XTA-Webservice-Datentypen.xsd" /> + <xs:complexType name="CancelDeniedExceptionType"> + <xs:annotation> + <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objeikt verwendet.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xta:ExceptionType" /> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ExceptionType"> + <xs:annotation> + <xs:documentation>Dieser Datentyp legt die grundlegende Struktur einer Exception im Rahmen des XTA Webservice fest. Sie kapselt Information zu Identität und Bedeutung eines aufgetretenen Fehlers.</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="errorCode" type="xta:Code.Fehlernummer"> + <xs:annotation> + <xs:documentation>In diesem Element werden Fehlernummer und Fehlertext übermittelt, die einen Fehler näher beschreiben (gemäß verlinkter Codeliste). +In das Unterelement code ist die Fehlernummer einzutragen, ins Unterelement name die entsprechende textuelle Repräsentation.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="InvalidMessageIDExceptionType"> + <xs:annotation> + <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xta:ExceptionType" /> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="MessageSchemaViolationExceptionType"> + <xs:annotation> + <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xta:ExceptionType" /> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="MessageVirusDetectionExceptionType"> + <xs:annotation> + <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xta:ExceptionType" /> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ParameterIsNotValidExceptionType"> + <xs:annotation> + <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xta:ExceptionType" /> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PermissionDeniedExceptionType"> + <xs:annotation> + <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xta:ExceptionType" /> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="SyncAsyncExceptionType"> + <xs:annotation> + <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xta:ExceptionType" /> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="XTAWSTechnicalProblemExceptionType"> + <xs:annotation> + <xs:documentation>Dieser abgeleitete Typ wird vom zugehörigen Exception-Objekt verwendet.</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="xta:ExceptionType" /> + </xs:complexContent> + </xs:complexType> + <xs:element name="CancelDeniedException" type="xta:CancelDeniedExceptionType"> + <xs:annotation> + <xs:documentation>Diese Exception wird geworfen, falls die Methode cancelMessage aufgerufen wurde, aber der Transportauftrag aus einem der folgenden Gründe nicht zurückgezogen werden kann: + + Der bei Erteilung des Transportauftrags über den Schalter NotBefore gesetzte Termin ist erreicht. + +Der Schalter NotBefore wurde bei Erteilung des Transportauftrags nicht gesetzt.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="InvalidMessageIDException" type="xta:InvalidMessageIDExceptionType"> + <xs:annotation> + <xs:documentation>Diese Exception wird geworfen, wenn in einem gegebenen Kontext die anhand der ID bezeichnete Nachricht nicht bekannt ist, also beispielsweise nicht geliefert werden kann.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MessageSchemaViolationException" type="xta:MessageSchemaViolationExceptionType"> + <xs:annotation> + <xs:documentation>Diese Exception wird geworfen, wenn eine Fachnachricht nicht der jeweiligen Schema-Definition entspricht.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MessageVirusDetectionException" type="xta:MessageVirusDetectionExceptionType"> + <xs:annotation> + <xs:documentation>Diese Exception wird geworfen, wenn schadhafter Code in einem der übergebenen Container ermittelt wurde.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ParameterIsNotValidException" type="xta:ParameterIsNotValidExceptionType"> + <xs:annotation> + <xs:documentation>Diese Fehlermeldung wird geworfen, wenn ein Parameter nicht korrekt an die Methode übergeben wurde.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="PermissionDeniedException" type="xta:PermissionDeniedExceptionType"> + <xs:annotation> + <xs:documentation>Diese Exception wird geworfen, wenn der Account gesperrt oder nicht vorhanden ist.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SyncAsyncException" type="xta:SyncAsyncExceptionType"> + <xs:annotation> + <xs:documentation>Diese Exception wird geworfen falls dem XTA-Webservice + + eine Nachricht, die nur für die synchrone Weiterleitung gültig ist, für die asynchrone Weiterleitung übergeben wurde oder + +eine Nachricht für die synchrone Weiterleitung übergeben wurde, die nur für die asynchrone Weiterleitung gültig ist.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="XTAWSTechnicalProblemException" type="xta:XTAWSTechnicalProblemExceptionType"> + <xs:annotation> + <xs:documentation>Diese Exception wird allgemein geworfen, wenn ein technisches Problem im XTA-WS aufgetreten ist. Sie kann z. B. durch ein Problem beim Zugriff auf die interne Datenbank des XTA-Servers ausgelöst worden sein.</xs:documentation> + </xs:annotation> + </xs:element> +</xs:schema> + diff --git a/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd b/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd new file mode 100644 index 0000000000000000000000000000000000000000..91bc0b9373db59eb1dc4113bfdab001d5d9d763b --- /dev/null +++ b/xta-adapter/src/main/xsd/XTA-Webservice-Globale-Elemente.xsd @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xta="http://xoev.de/transport/xta/211" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://xoev.de/transport/xta/211" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1.1"> + <xs:annotation> + <xs:documentation>Dies ist die Liste der globalen Elemente, welche durch die Operationen des XTA-WS verwendet werden .</xs:documentation> + </xs:annotation> + <xs:include schemaLocation="XTA-Webservice-Datentypen.xsd"/> + <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="xenc-schema.xsd"/> + <xs:import namespace="http://www.osci.eu/ws/2014/10/transport" schemaLocation="OSCI_MessageMetaData_V2.02.xsd"/> + <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> + <xs:element name="GenericContentContainer"> + <xs:annotation> + <xs:documentation>Der GenericContentContainer nimmt den zu transportierenden oder abzuliefernden Inhalt auf, z.B. eine XÖV-Nachricht mit ihren Anlagen. Diese Inhalte können unverschlüsselt (Element ContentContainer) oder auch verschlüsselt (Element xenc:EncryptedData) hinterlegt werden. Die Verschlüsselung an dieser Stelle eignet sich für Ende-zu-Ende-Verschlüsselung durch den Autor, wenn dieses Objekt durch den Autor erstellt wird.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:choice> + <xs:element ref="xenc:EncryptedData"> + <xs:annotation> + <xs:documentation>Dieses Objekt ist dafür vorgesehen, den Container-Inhalt verschlüsselt zu hinterlegen. Im entschlüsselten Zustand müssen die Daten dem Schwester-Element ContentContainer entsprechen.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ContentContainer"> + <xs:annotation> + <xs:documentation>Der ContentContainer enthält genau eine Nachricht (Element Message) und null bis beliebig viele Anlagen, die alle in technisch neutraler Darstellung (base64-kodiert) eingefügt werden (Element Attachment). Die Gesamtgröße des Containers darf 40 MB nicht überschreiten.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Message" type="xta:ContentType"> + <xs:annotation> + <xs:documentation>Enthält den base64-kodierten Inhalt, der zwischen WebService-Client und XTA-Server transportiert wird. Die Attribute sind der MIME-Spezifikation (RFC 2183) entnommen. +Die zu übermittelnde Nachricht als primärer Inhalt dieses Containers ist optional durch Anhänge (Element Attachment) zu ergänzen. +In die Attribute wird je nach Kontext Metainformation zur Nachricht eingetragen.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Attachment" type="xta:ContentType" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Hier können optional ergänzende Anhänge zur übermittelnden Nachricht eingefügt werden. +Die Attribute transportieren je nach Kontext Metainformation zum enthaltenen Anhang.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:choice> + </xs:complexType> + </xs:element> + <xs:element name="LookupServiceRequest"> + <xs:annotation> + <xs:documentation>Dies ist eine Liste von Dienstanfragen. +Jede Anfrage dient dazu, zu ermitteln, ob der Dienst von diesem Anbieter angeboten wird, und über welche technischen Parameter er angesprochen werden kann.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="LookupServiceRequestList" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Dies ist die Struktur für eine Liste von Dienstanfragen.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="LookupService" type="xta:LookupServiceType"> + <xs:annotation> + <xs:documentation>Dies ist eine Service-Anfrage. Sie enthält Daten zum potentiellen Diensteanbieter (Leser) und dem Dienst, der angefragt werden soll. Diese Anfrage dient dazu, zu ermitteln, ob der Dienst von diesem Anbieter angeboten wird, und über welche technischen Parameter er angesprochen werden kann.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="LookupServiceResponse"> + <xs:annotation> + <xs:documentation>Dies ist das Ergebnis zu einer Liste von Dienstanfragen, also eine Liste von Dienstanfrageergebnissen. Die Anfrage wird jeweils zitiert und das zugehörige Ergebnis ausgegeben.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="LookupServiceResultList"> + <xs:annotation> + <xs:documentation>Die Struktur einer Liste von Dienstanfrageergebnissen.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="LookupServiceResult" type="xta:LookupServiceResultType" nillable="true" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Dies ist die Struktur der Liste von Ergebnissen zur Liste von Diensteanfragen.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="TransportReport"> + <xs:annotation> + <xs:documentation>Der TransportReport ist die Struktur des durch XTA standardisierten Transportprotokolls. Neben den übermittelten Nachrichten ruft das Fachverfahren (in den Rollen Autor und Leser) über den Webservice-Client Zusatzinformationen über den Transportauftrag und die Transportereignisse vom XTA-WS ab. + + Um Autor und Leser die Möglichkeit zu geben, die Abarbeitung ihrer Transportaufträge zu überwachen, erstellen Sender und Empfänger Transportprotokolle, die in einer XML-Struktur des Typs TransportReport dargestellt und für Abruf und Auswertung bereit liegen. + +Die Datenstruktur aggregiert die Information zum erteilten Transportauftrag, zum Verlauf des sich anschließenden Transports einschließlich Zertifikatsüberprüfungen mit Ergebnissen.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element ref="oscimeta:MessageMetaData"> + <xs:annotation> + <xs:documentation>Dieser Container umfasst alle Daten des Transportauftrags, auf dessen Ausführung sich der TransportReport bezieht. Zu den Informationen gehören die Identifizierung von Absender und (einem oder mehreren) Empfängern, Metainformation zu Inhalt und Identität der zu transportierenden Fachnachricht (Payload) sowie weitere Attribute, die Auslieferung, Quittungen und Service Qualität betreffen. +Weitere Informationen zu diesem Objekt sind in zu finden.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ReportTime" type="xs:dateTime"> + <xs:annotation> + <xs:documentation>Zeitpunkt der letzten Aktualisierung des Protokolls. Ist bei Fortschreibung des Protokolls zu überschreiben.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="XTAServerIdentity" type="xs:token"> + <xs:annotation> + <xs:documentation>Hier protokolliert der den TransportReport erstellende Prozess seine Identität als Software-Instanz, indem er z.B. die Server-IP-Adresse oder die URI seines XTA-WS einträgt.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MessageStatus" type="xta:MessageStatusType"> + <xs:annotation> + <xs:documentation>Enthält Information über den Veraluf des Transports. Es werden hier Listen mit aufgetretenen Fehler-, Warnungs- und Informationsmeldungen geführt. Außerdem ist nach Schließung des Transportauftrags im Feld Status eine "Schnell-Info" verfügbar.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AdditionalReports" type="xta:AdditionalReportListType" minOccurs="0"> + <xs:annotation> + <xs:documentation>Hier sind weitere Prüfberichte abgelegt bzw. abzulegen, welche das XTA-Protokoll (TransportReport) ergänzen sollen.</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element ref="ds:Signature" minOccurs="0"> + <xs:annotation> + <xs:documentation>Falls der TransportReport signiert ist, findet sich hier die Signatur.</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> +</xs:schema> diff --git a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd new file mode 100644 index 0000000000000000000000000000000000000000..8b83f7660452fed387015191ce7afac5fce35362 --- /dev/null +++ b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-secext-1.0.xsd @@ -0,0 +1,220 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<?xml version="1.0" encoding="UTF-8"?> +<!-- +OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. +OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. +Copyright © OASIS Open 2002-2004. All Rights Reserved. +This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself does not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. +The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. +This document and the information contained herein is provided on an “AS IS” basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. +--> +<xsd:schema targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all" version="0.2"> + <xsd:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-utility-1.0.xsd"/> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> + <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> + <xsd:complexType name="AttributedString"> + <xsd:annotation> + <xsd:documentation>This type represents an element with arbitrary attributes.</xsd:documentation> + </xsd:annotation> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attribute ref="wsu:Id"/> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="PasswordString"> + <xsd:annotation> + <xsd:documentation>This type is used for password elements per Section 4.1.</xsd:documentation> + </xsd:annotation> + <xsd:simpleContent> + <xsd:extension base="wsse:AttributedString"> + <xsd:attribute name="Type" type="xsd:anyURI"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="EncodedString"> + <xsd:annotation> + <xsd:documentation>This type is used for elements containing stringified binary data.</xsd:documentation> + </xsd:annotation> + <xsd:simpleContent> + <xsd:extension base="wsse:AttributedString"> + <xsd:attribute name="EncodingType" type="xsd:anyURI"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="UsernameTokenType"> + <xsd:annotation> + <xsd:documentation>This type represents a username token per Section 4.1</xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element name="Username" type="wsse:AttributedString"/> + <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xsd:sequence> + <xsd:attribute ref="wsu:Id"/> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:complexType> + <xsd:complexType name="BinarySecurityTokenType"> + <xsd:annotation> + <xsd:documentation>A security token that is encoded in binary</xsd:documentation> + </xsd:annotation> + <xsd:simpleContent> + <xsd:extension base="wsse:EncodedString"> + <xsd:attribute name="ValueType" type="xsd:anyURI"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="KeyIdentifierType"> + <xsd:annotation> + <xsd:documentation>A security token key identifier</xsd:documentation> + </xsd:annotation> + <xsd:simpleContent> + <xsd:extension base="wsse:EncodedString"> + <xsd:attribute name="ValueType" type="xsd:anyURI"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:simpleType name="tUsage"> + <xsd:annotation> + <xsd:documentation>Typedef to allow a list of usages (as URIs).</xsd:documentation> + </xsd:annotation> + <xsd:list itemType="xsd:anyURI"/> + </xsd:simpleType> + <xsd:attribute name="Usage" type="tUsage"> + <xsd:annotation> + <xsd:documentation>This global attribute is used to indicate the usage of a referenced or indicated token within the containing context</xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:complexType name="ReferenceType"> + <xsd:annotation> + <xsd:documentation>This type represents a reference to an external security token.</xsd:documentation> + </xsd:annotation> + <xsd:attribute name="URI" type="xsd:anyURI"/> + <xsd:attribute name="ValueType" type="xsd:anyURI"/> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:complexType> + <xsd:complexType name="EmbeddedType"> + <xsd:annotation> + <xsd:documentation>This type represents a reference to an embedded security token.</xsd:documentation> + </xsd:annotation> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:any processContents="lax"/> + </xsd:choice> + <xsd:attribute name="ValueType" type="xsd:anyURI"/> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:complexType> + <xsd:complexType name="SecurityTokenReferenceType"> + <xsd:annotation> + <xsd:documentation>This type is used reference a security token.</xsd:documentation> + </xsd:annotation> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:any processContents="lax"/> + </xsd:choice> + <xsd:attribute ref="wsu:Id"/> + <xsd:attribute ref="wsse:Usage"/> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:complexType> + <xsd:complexType name="SecurityHeaderType"> + <xsd:annotation> + <xsd:documentation>This complexType defines header block to use for security-relevant data directed at a specific SOAP actor.</xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>The use of "any" is to allow extensibility and different forms of security data.</xsd:documentation> + </xsd:annotation> + </xsd:any> + </xsd:sequence> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:complexType> + <xsd:complexType name="TransformationParametersType"> + <xsd:annotation> + <xsd:documentation>This complexType defines a container for elements to be specified from any namespace as properties/parameters of a DSIG transformation.</xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"> + <xsd:annotation> + <xsd:documentation>The use of "any" is to allow extensibility from any namespace.</xsd:documentation> + </xsd:annotation> + </xsd:any> + </xsd:sequence> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:complexType> + <xsd:element name="UsernameToken" type="wsse:UsernameTokenType"> + <xsd:annotation> + <xsd:documentation>This element defines the wsse:UsernameToken element per Section 4.1.</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="BinarySecurityToken" type="wsse:BinarySecurityTokenType"> + <xsd:annotation> + <xsd:documentation>This element defines the wsse:BinarySecurityToken element per Section 4.2.</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Reference" type="wsse:ReferenceType"> + <xsd:annotation> + <xsd:documentation>This element defines a security token reference</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Embedded" type="wsse:EmbeddedType"> + <xsd:annotation> + <xsd:documentation>This element defines a security token embedded reference</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="KeyIdentifier" type="wsse:KeyIdentifierType"> + <xsd:annotation> + <xsd:documentation>This element defines a key identifier reference</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="SecurityTokenReference" type="wsse:SecurityTokenReferenceType"> + <xsd:annotation> + <xsd:documentation>This element defines the wsse:SecurityTokenReference per Section 4.3.</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Security" type="wsse:SecurityHeaderType"> + <xsd:annotation> + <xsd:documentation>This element defines the wsse:Security SOAP header element per Section 4.</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="TransformationParameters" type="wsse:TransformationParametersType"> + <xsd:annotation> + <xsd:documentation>This element contains properties for transformations from any namespace, including DSIG.</xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Password" type="wsse:PasswordString"/> + <xsd:element name="Nonce" type="wsse:EncodedString"/> + <xsd:simpleType name="FaultcodeEnum"> + <xsd:restriction base="xsd:QName"> + <xsd:enumeration value="wsse:UnsupportedSecurityToken"/> + <xsd:enumeration value="wsse:UnsupportedAlgorithm"/> + <xsd:enumeration value="wsse:InvalidSecurity"/> + <xsd:enumeration value="wsse:InvalidSecurityToken"/> + <xsd:enumeration value="wsse:FailedAuthentication"/> + <xsd:enumeration value="wsse:FailedCheck"/> + <xsd:enumeration value="wsse:SecurityTokenUnavailable"/> + </xsd:restriction> + </xsd:simpleType> +</xsd:schema> diff --git a/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd new file mode 100644 index 0000000000000000000000000000000000000000..c8890f13eb50e5b4ac1a9bcbee9192fbe13ef8fc --- /dev/null +++ b/xta-adapter/src/main/xsd/oasis-200401-wss-wssecurity-utility-1.0.xsd @@ -0,0 +1,133 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<?xml version="1.0" encoding="UTF-8"?> +<!-- +OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS's procedures with respect to rights in OASIS specifications can be found at the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification, can be obtained from the OASIS Executive Director. +OASIS invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to implement this specification. Please address the information to the OASIS Executive Director. +Copyright © OASIS Open 2002-2004. All Rights Reserved. +This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself does not be modified in any way, such as by removing the copyright notice or references to OASIS, except as needed for the purpose of developing OASIS specifications, in which case the procedures for copyrights defined in the OASIS Intellectual Property Rights document must be followed, or as required to translate it into languages other than English. +The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns. +This document and the information contained herein is provided on an “AS IS” basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. +--> +<xsd:schema targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" + + + +xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" +elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1"> + <!-- // Fault Codes /////////////////////////////////////////// --> + <xsd:simpleType name="tTimestampFault"> + <xsd:annotation> + <xsd:documentation> +This type defines the fault code value for Timestamp message expiration. + </xsd:documentation> + </xsd:annotation> + <xsd:restriction base="xsd:QName"> + <xsd:enumeration value="wsu:MessageExpired"/> + </xsd:restriction> + </xsd:simpleType> + <!-- // Global attributes //////////////////////////////////// --> + <xsd:attribute name="Id" type="xsd:ID"> + <xsd:annotation> + <xsd:documentation> +This global attribute supports annotating arbitrary elements with an ID. + </xsd:documentation> + </xsd:annotation> + </xsd:attribute> + <xsd:attributeGroup name="commonAtts"> + <xsd:annotation> + <xsd:documentation> +Convenience attribute group used to simplify this schema. + </xsd:documentation> + </xsd:annotation> + <xsd:attribute ref="wsu:Id" use="optional"/> + <xsd:anyAttribute namespace="##other" processContents="lax"/> + </xsd:attributeGroup> + <!-- // Utility types //////////////////////////////////////// --> + <xsd:complexType name="AttributedDateTime"> + <xsd:annotation> + <xsd:documentation> +This type is for elements whose [children] is a psuedo-dateTime and can have arbitrary attributes. + </xsd:documentation> + </xsd:annotation> + <xsd:simpleContent> + <xsd:extension base="xsd:string"> + <xsd:attributeGroup ref="wsu:commonAtts"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <xsd:complexType name="AttributedURI"> + <xsd:annotation> + <xsd:documentation> +This type is for elements whose [children] is an anyURI and can have arbitrary attributes. + </xsd:documentation> + </xsd:annotation> + <xsd:simpleContent> + <xsd:extension base="xsd:anyURI"> + <xsd:attributeGroup ref="wsu:commonAtts"/> + </xsd:extension> + </xsd:simpleContent> + </xsd:complexType> + <!-- // Timestamp header components /////////////////////////// --> + <xsd:complexType name="TimestampType"> + <xsd:annotation> + <xsd:documentation> +This complex type ties together the timestamp related elements into a composite type. + </xsd:documentation> + </xsd:annotation> + <xsd:sequence> + <xsd:element ref="wsu:Created" minOccurs="0"/> + <xsd:element ref="wsu:Expires" minOccurs="0"/> + <xsd:choice minOccurs="0" maxOccurs="unbounded"> + <xsd:any namespace="##other" processContents="lax"/> + </xsd:choice> + </xsd:sequence> + <xsd:attributeGroup ref="wsu:commonAtts"/> + </xsd:complexType> + <xsd:element name="Timestamp" type="wsu:TimestampType"> + <xsd:annotation> + <xsd:documentation> +This element allows Timestamps to be applied anywhere element wildcards are present, +including as a SOAP header. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <!-- global element decls to allow individual elements to appear anywhere --> + <xsd:element name="Expires" type="wsu:AttributedDateTime"> + <xsd:annotation> + <xsd:documentation> +This element allows an expiration time to be applied anywhere element wildcards are present. + </xsd:documentation> + </xsd:annotation> + </xsd:element> + <xsd:element name="Created" type="wsu:AttributedDateTime"> + <xsd:annotation> + <xsd:documentation> +This element allows a creation time to be applied anywhere element wildcards are present. + </xsd:documentation> + </xsd:annotation> + </xsd:element> +</xsd:schema> diff --git a/xta-adapter/src/main/xsd/soap-envelope.xsd b/xta-adapter/src/main/xsd/soap-envelope.xsd new file mode 100644 index 0000000000000000000000000000000000000000..771a11eacfc10f1d9a50f4f3b9f9d06e14dad806 --- /dev/null +++ b/xta-adapter/src/main/xsd/soap-envelope.xsd @@ -0,0 +1,136 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2003/05/soap-envelope" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://www.w3.org/2003/05/soap-envelope" elementFormDefault="qualified"> + <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> + <!-- Envelope, header and body --> + <xs:element name="Envelope" type="tns:Envelope"/> + <xs:complexType name="Envelope"> + <xs:sequence> + <xs:element ref="tns:Header" minOccurs="0"/> + <xs:element ref="tns:Body"/> + </xs:sequence> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + <xs:element name="Header" type="tns:Header"/> + <xs:complexType name="Header"> + <xs:annotation> + <xs:documentation> + Elements replacing the wildcard MUST be namespace qualified, but can be in the targetNamespace + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + <xs:element name="Body" type="tns:Body"/> + <xs:complexType name="Body"> + <xs:sequence> + <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + <!-- Global Attributes. The following attributes are intended to be + usable via qualified attribute names on any complex type referencing + them. --> + <xs:attribute name="mustUnderstand" type="xs:boolean" default="0"/> + <xs:attribute name="relay" type="xs:boolean" default="0"/> + <xs:attribute name="role" type="xs:anyURI"/> + <!-- 'encodingStyle' indicates any canonicalization conventions + followed in the contents of the containing element. For example, the + value 'http://www.w3.org/2003/05/soap-encoding' indicates the pattern + described in the SOAP Version 1.2 Part 2: Adjuncts Recommendation --> + <xs:attribute name="encodingStyle" type="xs:anyURI"/> + <xs:element name="Fault" type="tns:Fault"/> + <xs:complexType name="Fault" final="extension"> + <xs:annotation> + <xs:documentation> + Fault reporting structure + </xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Code" type="tns:faultcode"/> + <xs:element name="Reason" type="tns:faultreason"/> + <xs:element name="Node" type="xs:anyURI" minOccurs="0"/> + <xs:element name="Role" type="xs:anyURI" minOccurs="0"/> + <xs:element name="Detail" type="tns:detail" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="faultreason"> + <xs:sequence> + <xs:element name="Text" type="tns:reasontext" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="reasontext"> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute ref="xml:lang" use="required"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:complexType name="faultcode"> + <xs:sequence> + <xs:element name="Value" type="tns:faultcodeEnum"/> + <xs:element name="Subcode" type="tns:subcode" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="faultcodeEnum"> + <xs:restriction base="xs:QName"> + <xs:enumeration value="tns:DataEncodingUnknown"/> + <xs:enumeration value="tns:MustUnderstand"/> + <xs:enumeration value="tns:Receiver"/> + <xs:enumeration value="tns:Sender"/> + <xs:enumeration value="tns:VersionMismatch"/> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="subcode"> + <xs:sequence> + <xs:element name="Value" type="xs:QName"/> + <xs:element name="Subcode" type="tns:subcode" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="detail"> + <xs:sequence> + <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + <!-- Global element declaration and complex type definition for header entry returned due to a mustUnderstand fault --> + <xs:element name="NotUnderstood" type="tns:NotUnderstoodType"/> + <xs:complexType name="NotUnderstoodType"> + <xs:attribute name="qname" type="xs:QName" use="required"/> + </xs:complexType> + <!-- Global element and associated types for managing version transition as described in Appendix A of the SOAP Version 1.2 Part 1 Recommendation --> + <xs:complexType name="SupportedEnvType"> + <xs:attribute name="qname" type="xs:QName" use="required"/> + </xs:complexType> + <xs:element name="Upgrade" type="tns:UpgradeType"/> + <xs:complexType name="UpgradeType"> + <xs:sequence> + <xs:element name="SupportedEnvelope" type="tns:SupportedEnvType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> +</xs:schema> diff --git a/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd b/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd new file mode 100644 index 0000000000000000000000000000000000000000..10875146a5e259d6fedd142e88f025275b547d61 --- /dev/null +++ b/xta-adapter/src/main/xsd/ws-addr-wsdl.xsd @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2006/05/addressing/wsdl" targetNamespace="http://www.w3.org/2006/05/addressing/wsdl" elementFormDefault="qualified" blockDefault="#all"> + <xs:element name="ServiceName" type="tns:ServiceNameType"/> + <xs:complexType name="ServiceNameType"> + <xs:simpleContent> + <xs:extension base="xs:QName"> + <xs:attribute name="EndpointName" type="xs:NCName" use="optional"/> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:element name="InterfaceName" type="tns:AttributedQNameType"/> + <xs:complexType name="AttributedQNameType"> + <xs:simpleContent> + <xs:extension base="xs:QName"> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:attribute name="Action" type="xs:anyURI"/> + <xs:element name="UsingAddressing"> + <xs:complexType> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + </xs:element> + <xs:simpleType name="AnonymousType"> + <xs:restriction base="xs:token"> + <xs:enumeration value="optional"/> + <xs:enumeration value="required"/> + <xs:enumeration value="prohibited"/> + </xs:restriction> + </xs:simpleType> + <xs:element name="Anonymous"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="tns:AnonymousType"> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> +</xs:schema> diff --git a/xta-adapter/src/main/xsd/ws-addr.xsd b/xta-adapter/src/main/xsd/ws-addr.xsd new file mode 100644 index 0000000000000000000000000000000000000000..c94ac0eddc553ebf35fc3632c3d23b017f54ec12 --- /dev/null +++ b/xta-adapter/src/main/xsd/ws-addr.xsd @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2005/08/addressing" targetNamespace="http://www.w3.org/2005/08/addressing" elementFormDefault="qualified" attributeFormDefault="unqualified" blockDefault="#all"> + <!-- Constructs from the WS-Addressing Core --> + <xs:element name="EndpointReference" type="tns:EndpointReferenceType"/> + <xs:complexType name="EndpointReferenceType" mixed="false"> + <xs:sequence> + <xs:element name="Address" type="tns:AttributedURIType"/> + <xs:element name="ReferenceParameters" type="tns:ReferenceParametersType" minOccurs="0"/> + <xs:element ref="tns:Metadata" minOccurs="0"/> + <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + <xs:complexType name="ReferenceParametersType" mixed="false"> + <xs:sequence> + <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + <xs:element name="Metadata" type="tns:MetadataType"/> + <xs:complexType name="MetadataType" mixed="false"> + <xs:sequence> + <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + <xs:element name="MessageID" type="tns:AttributedURIType"/> + <xs:element name="RelatesTo" type="tns:RelatesToType"/> + <xs:complexType name="RelatesToType" mixed="false"> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:attribute name="RelationshipType" type="tns:RelationshipTypeOpenEnum" use="optional" default="http://www.w3.org/2005/08/addressing/reply"/> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:simpleType name="RelationshipTypeOpenEnum"> + <xs:union memberTypes="tns:RelationshipType xs:anyURI"/> + </xs:simpleType> + <xs:simpleType name="RelationshipType"> + <xs:restriction base="xs:anyURI"> + <xs:enumeration value="http://www.w3.org/2005/08/addressing/reply"/> + </xs:restriction> + </xs:simpleType> + <xs:element name="ReplyTo" type="tns:EndpointReferenceType"/> + <xs:element name="From" type="tns:EndpointReferenceType"/> + <xs:element name="FaultTo" type="tns:EndpointReferenceType"/> + <xs:element name="To" type="tns:AttributedURIType"/> + <xs:element name="Action" type="tns:AttributedURIType"/> + <xs:complexType name="AttributedURIType" mixed="false"> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <!-- Constructs from the WS-Addressing SOAP binding --> + <xs:attribute name="IsReferenceParameter" type="xs:boolean"/> + <xs:simpleType name="FaultCodesOpenEnumType"> + <xs:union memberTypes="tns:FaultCodesType xs:QName"/> + </xs:simpleType> + <xs:simpleType name="FaultCodesType"> + <xs:restriction base="xs:QName"> + <xs:enumeration value="tns:InvalidAddressingHeader"/> + <xs:enumeration value="tns:InvalidAddress"/> + <xs:enumeration value="tns:InvalidEPR"/> + <xs:enumeration value="tns:InvalidCardinality"/> + <xs:enumeration value="tns:MissingAddressInEPR"/> + <xs:enumeration value="tns:DuplicateMessageID"/> + <xs:enumeration value="tns:ActionMismatch"/> + <xs:enumeration value="tns:MessageAddressingHeaderRequired"/> + <xs:enumeration value="tns:DestinationUnreachable"/> + <xs:enumeration value="tns:ActionNotSupported"/> + <xs:enumeration value="tns:EndpointUnavailable"/> + </xs:restriction> + </xs:simpleType> + <xs:element name="RetryAfter" type="tns:AttributedUnsignedLongType"/> + <xs:complexType name="AttributedUnsignedLongType" mixed="false"> + <xs:simpleContent> + <xs:extension base="xs:unsignedLong"> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:element name="ProblemHeaderQName" type="tns:AttributedQNameType"/> + <xs:complexType name="AttributedQNameType" mixed="false"> + <xs:simpleContent> + <xs:extension base="xs:QName"> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + <xs:element name="ProblemHeader" type="tns:AttributedAnyType"/> + <xs:complexType name="AttributedAnyType" mixed="false"> + <xs:sequence> + <xs:any namespace="##any" processContents="lax"/> + </xs:sequence> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> + <xs:element name="ProblemIRI" type="tns:AttributedURIType"/> + <xs:element name="ProblemAction" type="tns:ProblemActionType"/> + <xs:complexType name="ProblemActionType" mixed="false"> + <xs:sequence> + <xs:element ref="tns:Action" minOccurs="0"/> + <xs:element name="SoapAction" type="xs:anyURI" minOccurs="0"/> + </xs:sequence> + <xs:anyAttribute namespace="##other" processContents="lax"/> + </xs:complexType> +</xs:schema> diff --git a/xta-adapter/src/main/xsd/ws-policy.xsd b/xta-adapter/src/main/xsd/ws-policy.xsd new file mode 100644 index 0000000000000000000000000000000000000000..53bb773cab391b757ff2b23354f8db026b651994 --- /dev/null +++ b/xta-adapter/src/main/xsd/ws-policy.xsd @@ -0,0 +1,166 @@ +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<?xml version='1.0' encoding='utf-8' ?> +<!-- + + W3C XML Schema defined in the Web Services Policy 1.5 + Framework specification + + http://www.w3.org/TR/ws-policy-framework + + Copyright © 2006 World Wide Web Consortium, + + (Massachusetts Institute of Technology, European Research Consortium for + Informatics and Mathematics, Keio University). All Rights Reserved. This + work is distributed under the W3C® Software License [1] in the hope that + it will be useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 + + $Id: ws-policy.xsd,v 1.2 2013/01/22 15:18:58 lindemann Exp $ +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:tns="http://www.w3.org/ns/ws-policy" + xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" + xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" + targetNamespace="http://www.w3.org/ns/ws-policy" blockDefault="#all" + elementFormDefault="qualified"> + + <xs:import + namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" + schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd" /> + + <xs:import + namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" + schemaLocation="oasis-200401-wss-wssecurity-utility-1.0.xsd" /> + + <xs:import + namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="xml.xsd" /> + + <!-- Constructs from the Web Services Policy 1.5 Framework --> + + <xs:element name="Policy" > + <xs:complexType> + + <xs:complexContent> + <xs:extension base="tns:OperatorContentType" > + <xs:attribute name="Name" type="xs:anyURI" /> + <xs:anyAttribute namespace="##any" processContents="lax" /> + </xs:extension> + </xs:complexContent> + </xs:complexType> + </xs:element> + + <xs:element name="All" type="tns:OperatorContentType" /> + <xs:element name="ExactlyOne" type="tns:OperatorContentType" /> + + <xs:complexType name="OperatorContentType" > + <xs:sequence> + <xs:choice minOccurs="0" maxOccurs="unbounded" > + <xs:element ref="tns:Policy" /> + <xs:element ref="tns:All" /> + <xs:element ref="tns:ExactlyOne" /> + + <xs:element ref="tns:PolicyReference" /> + <xs:any namespace="##other" processContents="lax" /> + </xs:choice> + </xs:sequence> + </xs:complexType> + + <xs:element name="PolicyReference" > + <xs:complexType> + <xs:sequence> + <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="URI" type="xs:anyURI" use="required" /> + + <xs:attribute name="Digest" type="xs:base64Binary" /> + <xs:attribute name="DigestAlgorithm" + type="xs:anyURI" + default="http://www.w3.org/ns/ws-policy/Sha1Exc" + /> + <xs:anyAttribute namespace="##any" processContents="lax" /> + </xs:complexType> + </xs:element> + + <xs:attribute name="Optional" type="xs:boolean" default="false" /> + <xs:attribute name="Ignorable" type="xs:boolean" default="false" /> + + <!-- Constructs from the Web Services Policy 1.5 Attachment --> + + <xs:attribute name="PolicyURIs" > + <xs:simpleType> + <xs:list itemType="xs:anyURI" /> + </xs:simpleType> + </xs:attribute> + + <xs:element name="PolicyAttachment" > + <xs:complexType> + <xs:sequence> + + <xs:element ref="tns:AppliesTo" /> + <xs:choice maxOccurs="unbounded" > + <xs:element ref="tns:Policy" /> + <xs:element ref="tns:PolicyReference" /> + </xs:choice> + <!-- omitted only because it causes the content model to be non-determistic + <xs:element ref="wsse:Security" minOccurs="0" /> +--> + <xs:any namespace="##other" + processContents="lax" + minOccurs="0" + maxOccurs="unbounded" /> + </xs:sequence> + <xs:anyAttribute namespace="##any" processContents="lax" /> + + </xs:complexType> + </xs:element> + + <xs:element name="AppliesTo" > + <xs:complexType> + <xs:sequence> + <xs:any namespace="##any" + processContents="lax" + maxOccurs="unbounded" /> + </xs:sequence> + <xs:anyAttribute namespace="##any" processContents="lax" /> + + </xs:complexType> + </xs:element> + + <xs:element name="URI"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:anyURI"> + <xs:anyAttribute namespace="##any" processContents="lax" /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + +</xs:schema> diff --git a/xta-adapter/src/main/xsd/xenc-schema.xsd b/xta-adapter/src/main/xsd/xenc-schema.xsd new file mode 100644 index 0000000000000000000000000000000000000000..b83d102ae3b1717e55b58b8630cd18844f487f07 --- /dev/null +++ b/xta-adapter/src/main/xsd/xenc-schema.xsd @@ -0,0 +1,151 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2001/04/xmlenc#" elementFormDefault="qualified" version="1.0"> + <import namespace='http://www.w3.org/2000/09/xmldsig#' schemaLocation='xmldsig-core-schema.xsd'/> + <complexType name="EncryptedType" abstract="true"> + <sequence> + <element name="EncryptionMethod" type="xenc:EncryptionMethodType" minOccurs="0"/> + <element ref="ds:KeyInfo" minOccurs="0"/> + <element ref="xenc:CipherData"/> + <element ref="xenc:EncryptionProperties" minOccurs="0"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> + <attribute name="Type" type="anyURI" use="optional"/> + <attribute name="MimeType" type="string" use="optional"/> + <attribute name="Encoding" type="anyURI" use="optional"/> + </complexType> + <complexType name="EncryptionMethodType" mixed="true"> + <sequence> + <element name="KeySize" type="xenc:KeySizeType" minOccurs="0"/> + <element name="OAEPparams" type="base64Binary" minOccurs="0"/> + <!-- note that optional xenc11:MGF element may be used here for + RSA-OAEP, when appropriate --> + <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="Algorithm" type="anyURI" use="required"/> + </complexType> + <simpleType name="KeySizeType"> + <restriction base="integer"/> + </simpleType> + <element name="CipherData" type="xenc:CipherDataType"/> + <complexType name="CipherDataType"> + <choice> + <element name="CipherValue" type="base64Binary"/> + <element ref="xenc:CipherReference"/> + </choice> + </complexType> + <element name="CipherReference" type="xenc:CipherReferenceType"/> + <complexType name="CipherReferenceType"> + <choice> + <element name="Transforms" type="xenc:TransformsType" minOccurs="0"/> + </choice> + <attribute name="URI" type="anyURI" use="required"/> + </complexType> + <complexType name="TransformsType"> + <sequence> + <element ref="ds:Transform" maxOccurs="unbounded"/> + </sequence> + </complexType> + <element name="EncryptedData" type="xenc:EncryptedDataType"/> + <complexType name="EncryptedDataType"> + <complexContent> + <extension base="xenc:EncryptedType"/> + </complexContent> + </complexType> + <!-- Children of ds:KeyInfo --> + <element name="EncryptedKey" type="xenc:EncryptedKeyType"/> + <complexType name="EncryptedKeyType"> + <complexContent> + <extension base="xenc:EncryptedType"> + <sequence> + <element ref="xenc:ReferenceList" minOccurs="0"/> + <element name="CarriedKeyName" type="string" minOccurs="0"/> + </sequence> + <attribute name="Recipient" type="string" use="optional"/> + </extension> + </complexContent> + </complexType> + <element name="AgreementMethod" type="xenc:AgreementMethodType"/> + <complexType name="AgreementMethodType" mixed="true"> + <sequence> + <element name="KA-Nonce" type="base64Binary" minOccurs="0"/> + <!-- <element ref="ds:DigestMethod" minOccurs="0"/> --> + <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + <element name="OriginatorKeyInfo" type="ds:KeyInfoType" minOccurs="0"/> + <element name="RecipientKeyInfo" type="ds:KeyInfoType" minOccurs="0"/> + </sequence> + <attribute name="Algorithm" type="anyURI" use="required"/> + </complexType> + <!-- End Children of ds:KeyInfo --> + <element name="ReferenceList"> + <complexType> + <choice maxOccurs="unbounded"> + <element name="DataReference" type="xenc:ReferenceType"/> + <element name="KeyReference" type="xenc:ReferenceType"/> + </choice> + </complexType> + </element> + <complexType name="ReferenceType"> + <sequence> + <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="URI" type="anyURI" use="required"/> + </complexType> + <element name="EncryptionProperties" type="xenc:EncryptionPropertiesType"/> + <complexType name="EncryptionPropertiesType"> + <sequence> + <element ref="xenc:EncryptionProperty" maxOccurs="unbounded"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> + </complexType> + <element name="EncryptionProperty" type="xenc:EncryptionPropertyType"/> + <complexType name="EncryptionPropertyType" mixed="true"> + <choice maxOccurs="unbounded"> + <any namespace="##other" processContents="lax"/> + </choice> + <attribute name="Target" type="anyURI" use="optional"/> + <attribute name="Id" type="ID" use="optional"/> + <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/> + </complexType> + <!-- Children of ds:KeyValue --> + <element name="DHKeyValue" type="xenc:DHKeyValueType"/> + <complexType name="DHKeyValueType"> + <sequence> + <sequence minOccurs="0"> + <element name="P" type="ds:CryptoBinary"/> + <element name="Q" type="ds:CryptoBinary"/> + <element name="Generator" type="ds:CryptoBinary"/> + </sequence> + <element name="Public" type="ds:CryptoBinary"/> + <sequence minOccurs="0"> + <element name="seed" type="ds:CryptoBinary"/> + <element name="pgenCounter" type="ds:CryptoBinary"/> + </sequence> + </sequence> + </complexType> + <!-- End Children of ds:KeyValue --> +</schema> diff --git a/xta-adapter/src/main/xsd/xml.xsd b/xta-adapter/src/main/xsd/xml.xsd new file mode 100644 index 0000000000000000000000000000000000000000..10044889a04c3e3199dfbb06239a496d2ccf5507 --- /dev/null +++ b/xta-adapter/src/main/xsd/xml.xsd @@ -0,0 +1,170 @@ +<?xml version='1.0'?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en"> + + <xs:annotation> + <xs:documentation> + See http://www.w3.org/XML/1998/namespace.html and + http://www.w3.org/TR/REC-xml for information about this namespace. + + This schema document describes the XML namespace, in a form + suitable for import by other schema documents. + + Note that local names in this namespace are intended to be defined + only by the World Wide Web Consortium or its subgroups. The + following names are currently defined in this namespace and should + not be used with conflicting semantics by any Working Group, + specification, or document instance: + + base (as an attribute name): denotes an attribute whose value + provides a URI to be used as the base for interpreting any + relative URIs in the scope of the element on which it + appears; its value is inherited. This name is reserved + by virtue of its definition in the XML Base specification. + + id (as an attribute name): denotes an attribute whose value + should be interpreted as if declared to be of type ID. + This name is reserved by virtue of its definition in the + xml:id specification. + + lang (as an attribute name): denotes an attribute whose value + is a language code for the natural language of the content of + any element; its value is inherited. This name is reserved + by virtue of its definition in the XML specification. + + space (as an attribute name): denotes an attribute whose + value is a keyword indicating what whitespace processing + discipline is intended for the content of the element; its + value is inherited. This name is reserved by virtue of its + definition in the XML specification. + + Father (in any context at all): denotes Jon Bosak, the chair of + the original XML Working Group. This name is reserved by + the following decision of the W3C XML Plenary and + XML Coordination groups: + + In appreciation for his vision, leadership and dedication + the W3C XML Plenary on this 10th day of February, 2000 + reserves for Jon Bosak in perpetuity the XML name + xml:Father + </xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>This schema defines attributes and an attribute group + suitable for use by + schemas wishing to allow xml:base, xml:lang, xml:space or xml:id + attributes on elements they define. + + To enable this, such a schema must import this schema + for the XML namespace, e.g. as follows: + <schema . . .> + . . . + <import namespace="http://www.w3.org/XML/1998/namespace" + schemaLocation="http://www.w3.org/2001/xml.xsd"/> + + Subsequently, qualified reference to any of the attributes + or the group defined below will have the desired effect, e.g. + + <type . . .> + . . . + <attributeGroup ref="xml:specialAttrs"/> + + will define a type which will schema-validate an instance + element with any of those attributes</xs:documentation> + </xs:annotation> + + <xs:annotation> + <xs:documentation>In keeping with the XML Schema WG's standard versioning + policy, this schema document will persist at + http://www.w3.org/2007/08/xml.xsd. + At the date of issue it can also be found at + http://www.w3.org/2001/xml.xsd. + The schema document at that URI may however change in the future, + in order to remain compatible with the latest version of XML Schema + itself, or with the XML namespace itself. In other words, if the XML + Schema or XML namespaces change, the version of this document at + http://www.w3.org/2001/xml.xsd will change + accordingly; the version at + http://www.w3.org/2007/08/xml.xsd will not change. + </xs:documentation> + </xs:annotation> + + <xs:attribute name="lang"> + <xs:annotation> + <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter + codes as the enumerated possible values is probably never + going to be a realistic possibility. See + RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry + at http://www.iana.org/assignments/lang-tag-apps.htm for + further information. + + The union allows for the 'un-declaration' of xml:lang with + the empty string.</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:union memberTypes="xs:language"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value=""/> + </xs:restriction> + </xs:simpleType> + </xs:union> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="space"> + <xs:simpleType> + <xs:restriction base="xs:NCName"> + <xs:enumeration value="default"/> + <xs:enumeration value="preserve"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="base" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>See http://www.w3.org/TR/xmlbase/ for + information about this attribute.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attribute name="id" type="xs:ID"> + <xs:annotation> + <xs:documentation>See http://www.w3.org/TR/xml-id/ for + information about this attribute.</xs:documentation> + </xs:annotation> + </xs:attribute> + + <xs:attributeGroup name="specialAttrs"> + <xs:attribute ref="xml:base"/> + <xs:attribute ref="xml:lang"/> + <xs:attribute ref="xml:space"/> + <xs:attribute ref="xml:id"/> + </xs:attributeGroup> + +</xs:schema> diff --git a/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd b/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd new file mode 100644 index 0000000000000000000000000000000000000000..686c32be8e8ccbbf132e0297794002d0cbb5173b --- /dev/null +++ b/xta-adapter/src/main/xsd/xmldsig-core-schema.xsd @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:ds="http://www.w3.org/2000/09/xmldsig#" + targetNamespace="http://www.w3.org/2000/09/xmldsig#" + version="0.1" elementFormDefault="qualified"> + +<!-- Basic Types Defined for Signatures --> + +<simpleType name="CryptoBinary"> + <restriction base="base64Binary"> + </restriction> +</simpleType> + +<!-- Start Signature --> + +<element name="Signature" type="ds:SignatureType"/> +<complexType name="SignatureType"> + <sequence> + <element ref="ds:SignedInfo"/> + <element ref="ds:SignatureValue"/> + <element ref="ds:KeyInfo" minOccurs="0"/> + <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + + <element name="SignatureValue" type="ds:SignatureValueType"/> + <complexType name="SignatureValueType"> + <simpleContent> + <extension base="base64Binary"> + <attribute name="Id" type="ID" use="optional"/> + </extension> + </simpleContent> + </complexType> + +<!-- Start SignedInfo --> + +<element name="SignedInfo" type="ds:SignedInfoType"/> +<complexType name="SignedInfoType"> + <sequence> + <element ref="ds:CanonicalizationMethod"/> + <element ref="ds:SignatureMethod"/> + <element ref="ds:Reference" maxOccurs="unbounded"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + + <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/> + <complexType name="CanonicalizationMethodType" mixed="true"> + <sequence> + <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> + <!-- (0,unbounded) elements from (1,1) namespace --> + </sequence> + <attribute name="Algorithm" type="anyURI" use="required"/> + </complexType> + + <element name="SignatureMethod" type="ds:SignatureMethodType"/> + <complexType name="SignatureMethodType" mixed="true"> + <sequence> + <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/> + <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> + <!-- (0,unbounded) elements from (1,1) external namespace --> + </sequence> + <attribute name="Algorithm" type="anyURI" use="required"/> + </complexType> + +<!-- Start Reference --> + +<element name="Reference" type="ds:ReferenceType"/> +<complexType name="ReferenceType"> + <sequence> + <element ref="ds:Transforms" minOccurs="0"/> + <element ref="ds:DigestMethod"/> + <element ref="ds:DigestValue"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> + <attribute name="URI" type="anyURI" use="optional"/> + <attribute name="Type" type="anyURI" use="optional"/> +</complexType> + + <element name="Transforms" type="ds:TransformsType"/> + <complexType name="TransformsType"> + <sequence> + <element ref="ds:Transform" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="Transform" type="ds:TransformType"/> + <complexType name="TransformType" mixed="true"> + <choice minOccurs="0" maxOccurs="unbounded"> + <any namespace="##other" processContents="lax"/> + <!-- (1,1) elements from (0,unbounded) namespaces --> + <element name="XPath" type="string"/> + </choice> + <attribute name="Algorithm" type="anyURI" use="required"/> + </complexType> + +<!-- End Reference --> + +<element name="DigestMethod" type="ds:DigestMethodType"/> +<complexType name="DigestMethodType" mixed="true"> + <sequence> + <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="Algorithm" type="anyURI" use="required"/> +</complexType> + +<element name="DigestValue" type="ds:DigestValueType"/> +<simpleType name="DigestValueType"> + <restriction base="base64Binary"/> +</simpleType> + +<!-- End SignedInfo --> + +<!-- Start KeyInfo --> + +<element name="KeyInfo" type="ds:KeyInfoType"/> +<complexType name="KeyInfoType" mixed="true"> + <choice maxOccurs="unbounded"> + <element ref="ds:KeyName"/> + <element ref="ds:KeyValue"/> + <element ref="ds:RetrievalMethod"/> + <element ref="ds:X509Data"/> + <element ref="ds:PGPData"/> + <element ref="ds:SPKIData"/> + <element ref="ds:MgmtData"/> + <any processContents="lax" namespace="##other"/> + <!-- (1,1) elements from (0,unbounded) namespaces --> + </choice> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + + <element name="KeyName" type="string"/> + <element name="MgmtData" type="string"/> + + <element name="KeyValue" type="ds:KeyValueType"/> + <complexType name="KeyValueType" mixed="true"> + <choice> + <element ref="ds:DSAKeyValue"/> + <element ref="ds:RSAKeyValue"/> + <any namespace="##other" processContents="lax"/> + </choice> + </complexType> + + <element name="RetrievalMethod" type="ds:RetrievalMethodType"/> + <complexType name="RetrievalMethodType"> + <sequence> + <element ref="ds:Transforms" minOccurs="0"/> + </sequence> + <attribute name="URI" type="anyURI"/> + <attribute name="Type" type="anyURI" use="optional"/> + </complexType> + +<!-- Start X509Data --> + +<element name="X509Data" type="ds:X509DataType"/> +<complexType name="X509DataType"> + <sequence maxOccurs="unbounded"> + <choice> + <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/> + <element name="X509SKI" type="base64Binary"/> + <element name="X509SubjectName" type="string"/> + <element name="X509Certificate" type="base64Binary"/> + <element name="X509CRL" type="base64Binary"/> + <any namespace="##other" processContents="lax"/> + </choice> + </sequence> +</complexType> + +<complexType name="X509IssuerSerialType"> + <sequence> + <element name="X509IssuerName" type="string"/> + <element name="X509SerialNumber" type="integer"/> + </sequence> +</complexType> + +<!-- End X509Data --> + +<!-- Begin PGPData --> + +<element name="PGPData" type="ds:PGPDataType"/> +<complexType name="PGPDataType"> + <choice> + <sequence> + <element name="PGPKeyID" type="base64Binary"/> + <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/> + <any namespace="##other" processContents="lax" minOccurs="0" + maxOccurs="unbounded"/> + </sequence> + <sequence> + <element name="PGPKeyPacket" type="base64Binary"/> + <any namespace="##other" processContents="lax" minOccurs="0" + maxOccurs="unbounded"/> + </sequence> + </choice> +</complexType> + +<!-- End PGPData --> + +<!-- Begin SPKIData --> + +<element name="SPKIData" type="ds:SPKIDataType"/> +<complexType name="SPKIDataType"> + <sequence maxOccurs="unbounded"> + <element name="SPKISexp" type="base64Binary"/> + <any namespace="##other" processContents="lax" minOccurs="0"/> + </sequence> +</complexType> + +<!-- End SPKIData --> + +<!-- End KeyInfo --> + +<!-- Start Object (Manifest, SignatureProperty) --> + +<element name="Object" type="ds:ObjectType"/> +<complexType name="ObjectType" mixed="true"> + <sequence minOccurs="0" maxOccurs="unbounded"> + <any namespace="##any" processContents="lax"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> + <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet --> + <attribute name="Encoding" type="anyURI" use="optional"/> +</complexType> + +<element name="Manifest" type="ds:ManifestType"/> +<complexType name="ManifestType"> + <sequence> + <element ref="ds:Reference" maxOccurs="unbounded"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + +<element name="SignatureProperties" type="ds:SignaturePropertiesType"/> +<complexType name="SignaturePropertiesType"> + <sequence> + <element ref="ds:SignatureProperty" maxOccurs="unbounded"/> + </sequence> + <attribute name="Id" type="ID" use="optional"/> +</complexType> + + <element name="SignatureProperty" type="ds:SignaturePropertyType"/> + <complexType name="SignaturePropertyType" mixed="true"> + <choice maxOccurs="unbounded"> + <any namespace="##other" processContents="lax"/> + <!-- (1,1) elements from (1,unbounded) namespaces --> + </choice> + <attribute name="Target" type="anyURI" use="required"/> + <attribute name="Id" type="ID" use="optional"/> + </complexType> + +<!-- End Object (Manifest, SignatureProperty) --> + +<!-- Start Algorithm Parameters --> + +<simpleType name="HMACOutputLengthType"> + <restriction base="integer"/> +</simpleType> + +<!-- Start KeyValue Element-types --> + +<element name="DSAKeyValue" type="ds:DSAKeyValueType"/> +<complexType name="DSAKeyValueType"> + <sequence> + <sequence minOccurs="0"> + <element name="P" type="ds:CryptoBinary"/> + <element name="Q" type="ds:CryptoBinary"/> + </sequence> + <element name="G" type="ds:CryptoBinary" minOccurs="0"/> + <element name="Y" type="ds:CryptoBinary"/> + <element name="J" type="ds:CryptoBinary" minOccurs="0"/> + <sequence minOccurs="0"> + <element name="Seed" type="ds:CryptoBinary"/> + <element name="PgenCounter" type="ds:CryptoBinary"/> + </sequence> + </sequence> +</complexType> + +<element name="RSAKeyValue" type="ds:RSAKeyValueType"/> +<complexType name="RSAKeyValueType"> + <sequence> + <element name="Modulus" type="ds:CryptoBinary"/> + <element name="Exponent" type="ds:CryptoBinary"/> + </sequence> +</complexType> + +<!-- End KeyValue Element-types --> + +<!-- End Signature --> + +</schema> diff --git a/xta-adapter/src/main/xsd/xmlmime.xsd b/xta-adapter/src/main/xsd/xmlmime.xsd new file mode 100644 index 0000000000000000000000000000000000000000..d436de32a3a45f59ea9194513a819995000daa75 --- /dev/null +++ b/xta-adapter/src/main/xsd/xmlmime.xsd @@ -0,0 +1,57 @@ +<?xml version="1.0" ?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" + xmlns:xmime="http://www.w3.org/2005/05/xmlmime" + targetNamespace="http://www.w3.org/2005/05/xmlmime" > + + <xs:attribute name="contentType"> + <xs:simpleType> + <xs:restriction base="xs:string" > + <xs:minLength value="3" /> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + + <xs:attribute name="expectedContentTypes" type="xs:string" /> + + <xs:complexType name="base64Binary" > + <xs:simpleContent> + <xs:extension base="xs:base64Binary" > + <xs:attribute ref="xmime:contentType" /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + + <xs:complexType name="hexBinary" > + <xs:simpleContent> + <xs:extension base="xs:hexBinary" > + <xs:attribute ref="xmime:contentType" /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + +</xs:schema> \ No newline at end of file diff --git a/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd b/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd new file mode 100644 index 0000000000000000000000000000000000000000..28104e06bfe65606e6839dec2ad30fe02a36a468 --- /dev/null +++ b/xta-adapter/src/main/xsd/xoev-basisdatentypen.xsd @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1" targetNamespace="http://xoev.de/schemata/basisdatentypen/1_1" version="1.1" elementFormDefault="qualified" attributeFormDefault="unqualified"> + <xs:complexType name="Code"> + <xs:annotation> + <xs:appinfo> + <title>Datentyp für die Übermittlung von Codes</title> + </xs:appinfo> + <xs:documentation>Datentyp für die Übermittlung von Codes (vgl. XÖV-Handbuch).</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="code" type="xs:token" form="unqualified" /> + <xs:element name="name" minOccurs="0" type="xs:normalizedString" form="unqualified" /> + </xs:sequence> + <xs:attribute name="listURI" type="xs:anyURI" use="optional" /> + <xs:attribute name="listVersionID" type="xs:normalizedString" use="optional" /> + </xs:complexType> +</xs:schema> + diff --git a/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd b/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd new file mode 100644 index 0000000000000000000000000000000000000000..f6344c168ff67e3538ad2d7799331c9bc05bf4a8 --- /dev/null +++ b/xta-adapter/src/main/xsd/xoev1_0-basisdatentypen.xsd @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + Ministerpräsidenten des Landes Schleswig-Holstein + Staatskanzlei + Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + + Lizenziert unter der EUPL, Version 1.2 oder - sobald + diese von der Europäischen Kommission genehmigt wurden - + Folgeversionen der EUPL ("Lizenz"); + Sie dürfen dieses Werk ausschließlich gemäß + dieser Lizenz nutzen. + Eine Kopie der Lizenz finden Sie hier: + + https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + + Sofern nicht durch anwendbare Rechtsvorschriften + gefordert oder in schriftlicher Form vereinbart, wird + die unter der Lizenz verbreitete Software "so wie sie + ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + ausdrücklich oder stillschweigend - verbreitet. + Die sprachspezifischen Genehmigungen und Beschränkungen + unter der Lizenz sind dem Lizenztext zu entnehmen. + +--> +<xs:schema targetNamespace="http://xoev.de/schemata/basisdatentypen/1_0" version="1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_0"> + <xs:complexType name="Code"> + <xs:annotation> + <xs:appinfo> + <title>Datentyp für die Übermittlung von Codes</title> + </xs:appinfo> + <xs:documentation>Datentyp für die Übermittlung von Codes (vgl. XÖV-Handbuch).</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="code" type="xs:token" form="unqualified"> + </xs:element> + <xs:element name="name" minOccurs="0" type="xs:normalizedString" form="unqualified"> + </xs:element> + </xs:sequence> + <xs:attribute name="listURI" type="xs:anyURI" use="optional"> + </xs:attribute> + <xs:attribute name="listVersionID" type="xs:normalizedString" use="optional"> + </xs:attribute> + </xs:complexType> + <xs:simpleType name="String.Latin"> + <xs:annotation> + <xs:appinfo> + <title>Datentyp für lateinische Zeichen in Unicode</title> + </xs:appinfo> + <xs:documentation>Einschränkung auf alle lateinischen Zeichen innerhalb Unicode (vgl. XÖV-Handbuch).</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:normalizedString"> + <xs:pattern value="[	-

 -~¡-¬®-ıĴ-ſƇ-ƈƏƠ-ơƯ-ưƷƿǍ-ǔǞ-ǟǢ-ǯǴ-ǵǷǺ-ȟȪ-ȳəʒḂ-ḃḊ-ḋḐ-ḑḞ-ḡḤ-ḧḰ-ḱṀ-ṁṄ-ṅṖ-ṗṠ-ṣṪ-ṫẀ-ẅẌ-ẓẛẞẠ-ạẪ-ẬẽỄ-ễỊ-ỏỖ-ỗỤ-ụỲ-ỳỸ-ỹ€]*"/> + </xs:restriction> + </xs:simpleType> +</xs:schema> diff --git a/xta-adapter/src/test/helm-linter-values.yaml b/xta-adapter/src/test/helm-linter-values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2bb8feaa41a1e8de7136cb984f6bdf8c95eec113 --- /dev/null +++ b/xta-adapter/src/test/helm-linter-values.yaml @@ -0,0 +1,32 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +ozgcloud: + environment: test + bezeichner: helm + bundesland: by + + +networkPolicy: + dnsServerNamespace: test-dns-server-namespace \ No newline at end of file diff --git a/xta-adapter/src/test/helm/cronjob_service_account_test.yaml b/xta-adapter/src/test/helm/cronjob_service_account_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a18edb619ceecc65873eebf830ad866187666238 --- /dev/null +++ b/xta-adapter/src/test/helm/cronjob_service_account_test.yaml @@ -0,0 +1,54 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test cronjob service account +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: test +tests: + - it: should use service account with default name + set: + serviceAccount: + create: true + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.serviceAccountName + value: xta-adapter-service-account + - it: should use service account with name + set: + serviceAccount: + create: true + name: helm-service-account + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.serviceAccountName + value: helm-service-account + - it: should use default service account + asserts: + - isNull: + path: spec.jobTemplate.spec.template.spec.serviceAccountName diff --git a/xta-adapter/src/test/helm/image_pull_secret_test.yaml b/xta-adapter/src/test/helm/image_pull_secret_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a8fc82f2e862e4f7aa32cc782ad688618236e1f0 --- /dev/null +++ b/xta-adapter/src/test/helm/image_pull_secret_test.yaml @@ -0,0 +1,59 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test image pull secret +templates: + - templates/image-pull-secret.yaml +release: + name: xta-adapter + namespace: helm-test +tests: + - it: should match basic data + set: + imageCredentials: + registry: docker.ozg-sh.de + username: test + password: test1234 + email: webmaster@ozg-sh.de + asserts: + - hasDocuments: + count: 1 + - containsDocument: + kind: Secret + apiVersion: v1 + - equal: + path: metadata.name + value: xta-adapter-image-pull-secret + - equal: + path: metadata.namespace + value: helm-test + - isNotEmpty: + path: data[".dockerconfigjson"] + + - it: should not create image pull secret + set: + imagePullSecret: "image-pull-secret" + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/xta-adapter/src/test/helm/network_policy_test.yaml b/xta-adapter/src/test/helm/network_policy_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b5364acd5f94ecfd3b5d8bb02c76b532aeeb6196 --- /dev/null +++ b/xta-adapter/src/test/helm/network_policy_test.yaml @@ -0,0 +1,125 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: network policy test +release: + namespace: by-helm-test +templates: + - templates/network_policy.yaml +set: + networkPolicy: + dnsServerNamespace: test-dns-namespace +tests: + - it: should match apiVersion + asserts: + - isAPIVersion: + of: networking.k8s.io/v1 + - it: should match kind + asserts: + - isKind: + of: NetworkPolicy + - it: validate metadata + asserts: + - equal: + path: metadata + value: + name: network-policy-xta-adapter + namespace: by-helm-test + - it: validate spec + asserts: + - equal: + path: spec + value: + podSelector: + matchLabels: + ozg-component: xta-adapter + policyTypes: + - Egress + egress: + - to: + - podSelector: + matchLabels: + component: vorgang-manager + ports: + - port: 9090 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: test-dns-namespace + ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - port: 5353 + protocol: UDP + - port: 5353 + protocol: TCP + - to: + - namespaceSelector: + matchLabels: + kubernetes.io/metadata.name: ssh-port-forward + ports: + - port: 443 + protocol: TCP + - port: 80 + protocol: TCP + - port: 9000 + protocol: TCP + + - it: add egress rules by values + set: + networkPolicy: + ssoPublicIp: 51.89.117.53/32 + dnsServerNamespace: test-dns-namespace + additionalEgressConfig: + - to: + - ipBlock: + cidr: 1.2.3.4/32 + asserts: + - contains: + path: spec.egress + content: + to: + - ipBlock: + cidr: 1.2.3.4/32 + + + - it: test network policy disabled + set: + networkPolicy: + disabled: true + asserts: + - hasDocuments: + count: 0 + + - it: test network policy unset should be disabled + set: + networkPolicy: + disabled: false + dnsServerNamespace: test-dns-namespace + asserts: + - hasDocuments: + count: 1 \ No newline at end of file diff --git a/xta-adapter/src/test/helm/service_account_test.yaml b/xta-adapter/src/test/helm/service_account_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..73d4fe93e77c9a6d866fdd18ab3e48f3343abda5 --- /dev/null +++ b/xta-adapter/src/test/helm/service_account_test.yaml @@ -0,0 +1,62 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test service account +release: + name: xta-adapter + namespace: sh-helm-test +templates: + - templates/service_account.yaml +tests: + - it: should create service account with default name + set: + serviceAccount: + create: true + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: xta-adapter-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should create service account with name + set: + serviceAccount: + create: true + name: helm-service-account + asserts: + - isKind: + of: ServiceAccount + - equal: + path: metadata.name + value: helm-service-account + - equal: + path: metadata.namespace + value: sh-helm-test + - it: should not create service account + asserts: + - hasDocuments: + count: 0 \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta-bindings-type-test.yaml b/xta-adapter/src/test/helm/xta-bindings-type-test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a6d9c33b88206a78e3036a336f6f485363662ca1 --- /dev/null +++ b/xta-adapter/src/test/helm/xta-bindings-type-test.yaml @@ -0,0 +1,48 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test xta bindings type configmap +templates: + - templates/xta_bindings_type_configmap.yaml +release: + name: xta-adapter + namespace: helm-test +tests: + - it: test xta bindings type + set: + image.name: xta-adapter + xta: + rootCa: Z2VoZWltCg== + asserts: + - isKind: + of: ConfigMap + - equal: + path: metadata.name + value: xta-adapter-bindings-type + - equal: + path: metadata.namespace + value: helm-test + - equal: + path: data.type + value: ca-certificates \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta-keystore-secret-test.yaml b/xta-adapter/src/test/helm/xta-keystore-secret-test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5e153214a805e5bcb4d02b8da85c864da5c8bf95 --- /dev/null +++ b/xta-adapter/src/test/helm/xta-keystore-secret-test.yaml @@ -0,0 +1,54 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test xta keystore secret +templates: + - templates/xta_keystore_secret.yaml +release: + name: xta-adapter + namespace: helm-test +tests: + - it: test xta keystore + set: + image.name: xta-adapter + xta: + keystore: + password: geheim + file: Z2VoZWltCg== + asserts: + - isKind: + of: Secret + - equal: + path: metadata.name + value: xta-keystore + - equal: + path: metadata.namespace + value: helm-test + - equal: + path: stringData.password + value: geheim + - equal: + path: data.file + value: Z2VoZWltCg== + diff --git a/xta-adapter/src/test/helm/xta-root-ca-secret-test.yaml b/xta-adapter/src/test/helm/xta-root-ca-secret-test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8e13390d931e1bee4d4abc08cd4b3094a4b0af94 --- /dev/null +++ b/xta-adapter/src/test/helm/xta-root-ca-secret-test.yaml @@ -0,0 +1,49 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test xta root ca secret +templates: + - templates/xta_root_ca_secret.yaml +release: + name: xta-adapter + namespace: helm-test +tests: + - it: test xta root ca + set: + image.name: xta-adapter + xta: + rootCa: Z2VoZWltCg== + asserts: + - isKind: + of: Secret + - equal: + path: metadata.name + value: xta-root-ca + - equal: + path: metadata.namespace + value: helm-test + - equal: + path: data["ca.crt"] + value: Z2VoZWltCg== + diff --git a/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml b/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..71f86eff9860f6c6db58faf0bbeaa1f218b6f7df --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_63_chars_test.yaml @@ -0,0 +1,55 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test less than 63 chars +release: + name: xta-adapter + namespace: sh-helm-test +set: + ozgcloud.environment: test +chart: + name: xta-adapter + +templates: + - templates/xta_adapter_cronjob.yaml + +tests: + - it: should fail on .Release.Namespace length longer than 63 characters + release: + namespace: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 + asserts: + - failedTemplate: + errorMessage: .Release.Namespace test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) + - it: should not fail on .Release.Namespace length less than 63 characters + asserts: + - notFailedTemplate: {} + - it: should fail on .Chart.Name-.Chart.Version length longer than 63 characters + chart: + version: 1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 + asserts: + - failedTemplate: + errorMessage: .Chart.Name-.Chart.Version xta-adapter-1.0-test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen) + - it: should not fail on .Chart.Name-.Chart.Version length less than 63 characters + asserts: + - notFailedTemplate: {} \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_bindings_test.yaml b/xta-adapter/src/test/helm/xta_adapter_bindings_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..959b0b824e88969cbc4012198b340d64836e5c61 --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_bindings_test.yaml @@ -0,0 +1,46 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: xta-adapter bindings +templates: + - templates/xta_adapter_cronjob.yaml +set: + ozgcloud.environment: test +tests: + - it: should have temp-dir volume + asserts: + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts + content: + name: temp-dir + mountPath: "/tmp" + + - it: should have temp-dir volume mount + asserts: + - contains: + path: spec.jobTemplate.spec.template.spec.volumes + content: + name: temp-dir + emptyDir: {} + diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f0c74647ccf7ba8f6a4ef3665e004bbb81a2651a --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml @@ -0,0 +1,152 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test xta adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: dev + +tests: + - it: validate basic data + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + asserts: + - containsDocument: + kind: CronJob + apiVersion: batch/v1 + - equal: + path: metadata.name + value: xta-adapter + - equal: + path: metadata.namespace + value: helm-test + - equal: + path: spec.successfulJobsHistoryLimit + value: 3 + - equal: + path: spec.failedJobsHistoryLimit + value: 3 + - equal: + path: spec.concurrencyPolicy + value: Forbid + - it: check set schedule + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + xta: + schedule: "1 1 * * * *" + identifier: gae:test@ozg-sh.de + server: + address: 1.2.3.4 + name: test + asserts: + - equal: + path: spec.schedule + value: "1 1 * * * *" + - it: check dev schedule + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + asserts: + - equal: + path: spec.schedule + value: "*/15 * * * *" + - it: check container image + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].image + value: "docker.ozg-sh.de/xta-adapter:9.9.99" + + - it: check securityContext + template: xta_adapter_cronjob.yaml + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation + value: false + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.privileged + value: false + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem + value: false + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsNonRoot + value: true + - isNull: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsUser + - isNull: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsGroup + - isNull: + path: spec.jobTemplate.spec.template.spec.securityContext.fsGroup + - isNull: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.capabilities + - it: check runAsUser + set: + securityContext.runAsUser: 1000 + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsUser + value: 1000 + - it: check runAsGroup + set: + securityContext.runAsGroup: 1000 + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsGroup + value: 1000 + - it: check pod labels + template: xta_adapter_cronjob.yaml + asserts: + - equal: + path: spec.jobTemplate.spec.template.metadata.labels + value: + ozg-component: xta-adapter + workload: xta-adapter-cronjob + - it: check fsGroup + set: + podSecurityContext.fsGroup: 1000 + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.securityContext.fsGroup + value: 1000 + - it: check capabilities + set: + securityContext: + capabilities: + drop: + - ALL + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.capabilities + value: + drop: + - ALL \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..954f51f2f592893560b0d1efe929451879da98bc --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_dummy_probes_test.yaml @@ -0,0 +1,93 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test xta adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: test +tests: + - it: check dummy livenessProbe default disabled + template: xta_adapter_cronjob.yaml + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe + - it: check dummy startupProbe default disabled + template: xta_adapter_cronjob.yaml + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe + - it: check dummy readynessProbe default disabled + template: xta_adapter_cronjob.yaml + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe + + - it: check dummy livenessProbe disabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: false + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe + - it: check dummy startupProbe disabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: false + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe + - it: check dummy readynessProbe disabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: false + asserts: + - notExists: + path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe + + + - it: check dummy livenessProbe enabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: true + asserts: + - isNotEmpty: + path: spec.jobTemplate.spec.template.spec.containers[0].livenessProbe + - it: check dummy startupProbe enabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: true + asserts: + - isNotEmpty: + path: spec.jobTemplate.spec.template.spec.containers[0].startupProbe + - it: check dummy readynessProbe enabled + template: xta_adapter_cronjob.yaml + set: + dummyProbesEnabled: true + asserts: + - isNotEmpty: + path: spec.jobTemplate.spec.template.spec.containers[0].readinessProbe diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5fa47122f755821df43961a12737a8de1a6c69fc --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_env_test.yaml @@ -0,0 +1,158 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test xta adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: test +tests: + - it: check default env + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + xta: + identifier: gae:test@ozg-sh.de + server: + name: test + address: 1.2.3.4 + protocol: https + asserts: + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: spring_profiles_active + value: "oc, test" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: SERVICE_BINDING_ROOT + value: "/bindings" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_xta_server_name + value: "test" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_xta_server_address + value: "1.2.3.4" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_xta_server_protocol + value: "https" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_xta_identifier + value: "gae:test@ozg-sh.de" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_xta_keystore_file + value: "keystore/xta-keystore.p12" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_xta_keystore_password + valueFrom: + secretKeyRef: + name: "xta-keystore" + key: password + optional: false + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_fallbackStrategy + value: "DENY" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_routingStrategy + value: "SINGLE" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_targetVorgangManagerName + value: "vorgang-manager" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_address + value: 'vorgang-manager.helm-test:9090' + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_negotiationType + value: "PLAINTEXT" + - it: check set env values + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + env.overrideSpringProfiles: local + xta: + identifier: gae:test@ozg-sh.de + server: + name: test + address: 1.2.3.4 + routing: + routingStrategy: MULTI + fallbackStrategy: FUNDSTELLE + negotiationType: TLS + asserts: + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: spring_profiles_active + value: "local" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_fallbackStrategy + value: "FUNDSTELLE" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_routingStrategy + value: "MULTI" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: ozgcloud_adapter_targetVorgangManagerName + value: "vorgang-manager" + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_address + value: 'vorgang-manager.helm-test:9090' + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].env + content: + name: grpc_client_vorgang-manager-vorgang-manager_negotiationType + value: "TLS" \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..617af94877766930fe66a4631d6d18161c5839d1 --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml @@ -0,0 +1,47 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test xta adapter imagePull secret +release: + name: xta-adapter + namespace: sh-helm-test +templates: + - templates/xta_adapter_cronjob.yaml +set: + ozgcloud.environment: dev + +tests: + - it: should use default imagePull secret + set: + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.imagePullSecrets[0].name + value: xta-adapter-image-pull-secret + - it: should set the imagePull secret + set: + imagePullSecret: image-pull-secret + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.imagePullSecrets[0].name + value: image-pull-secret \ No newline at end of file diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ae7ce6cbd700febd577d80d848db44da0904aded --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_resources_test.yaml @@ -0,0 +1,56 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test xta adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: dev +tests: + - it: check resources + template: xta_adapter_cronjob.yaml + set: + resources: + limits: + cpu: "11m" + memory: "22Mi" + requests: + cpu: "33m" + memory: "44Mi" + asserts: + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].resources.limits.cpu + value: "11m" + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].resources.limits.memory + value: "22Mi" + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].resources.requests.cpu + value: "33m" + - equal: + path: spec.jobTemplate.spec.template.spec.containers[0].resources.requests.memory + value: "44Mi" diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b067ac0c6d0fc55eca8601e2d9ae994f617784bc --- /dev/null +++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_volumes_test.yaml @@ -0,0 +1,92 @@ +# +# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +suite: test xta adapter cronjob +templates: + - templates/xta_adapter_cronjob.yaml +release: + name: xta-adapter + namespace: helm-test +set: + ozgcloud.environment: dev +tests: + - it: check volume mounts + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + xta: + identifier: gae:test@ozg-sh.de + server: + name: test + address: 1.2.3.4 + asserts: + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts + content: + name: bindings + mountPath: "/bindings/ca-certificates/type" + subPath: type + readOnly: true + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts + content: + name: xta-root-ca + mountPath: "/bindings/ca-certificates/xta-root-ca.crt" + subPath: ca.crt + readOnly: true + - contains: + path: spec.jobTemplate.spec.template.spec.containers[0].volumeMounts + content: + name: xta-keystore + mountPath: "/workspace/keystore/xta-keystore.p12" + subPath: file + readOnly: true + - it: check volumes + template: xta_adapter_cronjob.yaml + set: + image.name: xta-adapter + xta: + identifier: gae:test@ozg-sh.de + server: + name: test + address: 1.2.3.4 + asserts: + - contains: + path: spec.jobTemplate.spec.template.spec.volumes + content: + name: bindings + configMap: + name: xta-adapter-bindings-type + - contains: + path: spec.jobTemplate.spec.template.spec.volumes + content: + name: xta-root-ca + secret: + secretName: xta-root-ca + - contains: + path: spec.jobTemplate.spec.template.spec.volumes + content: + name: xta-keystore + secret: + secretName: xta-keystore diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..663b553bdd6920e40edb1d26fd3c101ed6044738 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormDataTestFactory.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import de.ozgcloud.eingang.common.formdata.FormData; + +class FormDataTestFactory { + + static FormData create() { + return createBuilder().build(); + } + + static FormData.FormDataBuilder createBuilder() { + return FormData.builder() + .header(FormHeaderTestFactory.create()) + .numberOfRepresentations(1); + } + +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..49acc96d24867bc1318adb4c2c432fb41f70e787 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/FormHeaderTestFactory.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.FormHeader.FormHeaderBuilder;; + +public class FormHeaderTestFactory { + + private static final String FORM_NAME = "dFördermittelantrag"; + + static FormHeader create() { + return createBuilder().build(); + } + + static FormHeaderBuilder createBuilder() { + return FormHeader.builder() + .sender("XTA") + .requestId(XtaMessageTestFactory.MESSAGE_ID.toString()) + .formName(FORM_NAME) + .formId(XtaMessageMetaDataTestFactory.MESSAGE_TYPE) + .createdAt(XtaMessageMetaDataTestFactory.ORIGIN); + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..d092d2744634872dde5b4cbfdb7b0ce470580325 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MessageMetaDataTestFactory.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static de.ozgcloud.eingang.xta.XtaMessageTestFactory.*; + +import org.w3._2005._08.addressing.AttributedURIType; + +import eu.osci.ws._2014._10.transport.MessageMetaData; +import eu.osci.ws._2014._10.transport.MsgIdentificationType; + +class MessageMetaDataTestFactory { + + static MessageMetaData create() { + var result = new MessageMetaData(); + var identification = new MsgIdentificationType(); + var uri = new AttributedURIType(); + uri.setValue(MESSAGE_ID.toString()); + identification.setMessageID(uri); + result.setMsgIdentification(identification); + + return result; + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..115e1f64f2245b6654716518154e38262481b73b --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeAndHeaderResponseTestFactory.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.util.stream.Stream; + +import eu.osci.ws._2014._10.transport.MessageMetaData; + +class MsgStatusListTypeAndHeaderResponseTestFactory { + + public static final MessageMetaData MESSAGE1 = MessageMetaDataTestFactory.create(); + + public static MsgStatusListTypeAndHeaderResponse create() { + return createBuilder().build(); + } + + public static MsgStatusListTypeAndHeaderResponse.MsgStatusListTypeAndHeaderResponseBuilder createBuilder() { + return MsgStatusListTypeAndHeaderResponse.builder() + .msgBoxRequestID(null) + .messages(Stream.of(MESSAGE1)); + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..9090741740829bebf5b995dccacc36f737ce6672 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/MsgStatusListTypeTestFactory.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import eu.osci.ws._2008._05.transport.MsgStatusListType; + +class MsgStatusListTypeTestFactory { + + static MsgStatusListType create() { + var result = new MsgStatusListType(); + result.getMessageMetaData().add(MessageMetaDataTestFactory.create()); + return result; + } + +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f1fd0cea6297a65fbe558461df3e4bde105c5a42 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.*; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import de.ozgcloud.eingang.Application; +import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; +import de.ozgcloud.eingang.semantik.enginebased.xta.XtaEngineBasedAdapter; + +@ActiveProfiles({ "local", "itcase" }) +@SpringBootTest(classes = Application.class) +class XtaApplicationTest { + + @Autowired + private EngineBasedSemantikAdapter engineBasedAdapter; + + @Test + void startup() { + // should start without exception; + assertTrue(true); + } + + @Test + void shouldHaveEngineBasedAdapter() { + assertThat(engineBasedAdapter).isInstanceOf(XtaEngineBasedAdapter.class); + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..149d149b7dfdb08645789d18781d77f1a7ea773b --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaFileTestFactory.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.io.File; +import java.io.InputStream; +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.FileUtils; + +import lombok.SneakyThrows; + +class XtaFileTestFactory { + + static final String NAME = "Test_File"; + static final String CONTENT = "slkafj3jifsdasx"; + + static XtaFile create() { + return createBuilder().build(); + } + + static XtaFile.XtaFileBuilder createBuilder() { + return XtaFile.builder().name(NAME).file(createFile()); + } + + @SneakyThrows + private static File createFile() { + File tFile = File.createTempFile("test", "txt"); + tFile.deleteOnExit(); + + FileUtils.write(tFile, CONTENT, StandardCharsets.UTF_8); + + return tFile; + } + + @SneakyThrows + static XtaFile withFileContent(InputStream stream, String fileName) { + File tFile = File.createTempFile(fileName, ".zip"); + tFile.deleteOnExit(); + + FileUtils.copyInputStreamToFile(stream, tFile); + return createBuilder().name(fileName).size(BigInteger.valueOf(tFile.length())).file(tFile).build(); + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..2db29e80e126a4f38c07f1c9aace53e061302bd2 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java @@ -0,0 +1,141 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.InstanceOfAssertFactories.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Bean; +import org.springframework.test.context.ActiveProfiles; + +import de.ozgcloud.common.test.TestUtils; +import de.ozgcloud.eingang.Application; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.router.VorgangRemoteService; + +@SpringBootTest(classes = { Application.class, ActivateXTARunnerConfig.class }) +@ActiveProfiles({ "local", "itcase" }) +class XtaITCase { + + @MockBean + private XtaRemoteService remoteService; + @MockBean + private VorgangRemoteService vorgangRemoteService; + + @Autowired + private XtaRunner runner; + @Captor + private ArgumentCaptor<FormData> formDataCaptor; + + @BeforeEach + void prepareXtaRemoteService() { + when(remoteService.getMessagesMetadata()).thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); + + when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn( + XtaMessageTestFactory.createBuilder() + .clearMessageFiles() + .messageFile(XtaFileTestFactory.withFileContent(TestUtils.loadFile("test_content.zip"), "test_content.zip")) + .build()); + } + + @Test + void shouldGetMessage() { + runner.onApplicationEvent(null); + + verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID); + } + + @Test + void shouldCloseMessage() { + runner.onApplicationEvent(null); + + verify(remoteService, timeout(2000)).close(XtaMessageTestFactory.MESSAGE_ID); + } + + @Test + void shouldSend4Representations() { + runner.onApplicationEvent(null); + + verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), any(), any()); + assertThat(formDataCaptor.getValue().getNumberOfRepresentations()).isEqualTo(4); + assertThat(formDataCaptor.getValue().getRepresentations()).hasSize(4); + } + + @Test + void shouldHavePostfachId() { + runner.onApplicationEvent(null); + + var formData = captorFormData(); + + assertThat(formData.getHeader().getServiceKonto()).describedAs("ServiceKonto").isNotNull() + .extracting(ServiceKonto::getPostfachAddresses).asList().hasSize(1).first() + .asInstanceOf(type(PostfachAddress.class)) + .extracting(PostfachAddress::getIdentifier).isInstanceOf(StringBasedIdentifier.class).asInstanceOf(type(StringBasedIdentifier.class)) + .extracting(StringBasedIdentifier::getPostfachId).isEqualTo("4dd01647-b9d9-4775-1b50-08da3d83800a"); + } + + @Test + void shouldHaveOrganisationsEinheitId() { + runner.onApplicationEvent(null); + + var formData = captorFormData(); + + assertThat(formData.getZustaendigeStelle().getOrganisationseinheitenId()).isEqualTo("9795669"); + } + + @Test + void shouldHaveVorgangNummer() { + runner.onApplicationEvent(null); + + var formData = captorFormData(); + + assertThat(formData.getHeader().getVorgangNummer()).hasSize(9); + } + + private FormData captorFormData() { + verify(vorgangRemoteService).createVorgang(formDataCaptor.capture(), any(), any()); + + return formDataCaptor.getValue(); + } + +} + +class ActivateXTARunnerConfig { + @Bean + XtaRunner xtaRunner() { + return new XtaRunner(); + } +} \ No newline at end of file diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..b10d9867d1e76021f78fa6248cd248d14211ba45 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMapperTest.java @@ -0,0 +1,118 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +class XtaMessageMapperTest { + + @Spy + @InjectMocks + private XtaMessageMapper mapper = Mappers.getMapper(XtaMessageMapper.class); + + @Nested + class TestToFormData { + + @Test + void shouldMapAllToForm() { + var formData = mapper.toFormData(XtaMessageTestFactory.create()); + + assertThat(formData).usingRecursiveComparison().ignoringFields("id", "representations") + .isEqualTo(FormDataTestFactory.create()); + } + + @Test + void shouldHaveMessageFileAsRepresentation() { + var formData = mapper.toFormData(XtaMessageTestFactory.create()); + + assertThat(formData.getRepresentations()).hasSize(1); + } + + @Test + void shouldCallToIncomingFile() { + XtaMessage message = XtaMessageTestFactory.create(); + + mapper.toFormData(message); + + verify(mapper).toIncomingFile(notNull()); + } + + @Nested + class ToFormHeader { + @Test + void shouldMapToFormHeader() { + var mapped = mapper.formHeaderFromMetaData(XtaMessageMetaDataTestFactory.create()); + + assertThat(mapped).usingRecursiveComparison().isEqualTo(FormHeaderTestFactory.create()); + } + } + + @Nested + class ToIncomingFile { + @Test + void shouldHaveMessageFile() { + var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); + + assertThat(inFile.getContentStream()).isNotNull(); + } + + @Test + void shouldHaveFileName() { + var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); + + assertThat(inFile.getName()).isEqualTo(XtaFileTestFactory.NAME); + } + + @Test + void shouldHaveZipContentType() { + var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); + + assertThat(inFile.getContentType()).isEqualTo("application/zip"); + } + + @Test + void shouldHaveSize() { + var inFile = mapper.toIncomingFile(XtaFileTestFactory.create()); + + assertThat(inFile.getSize()).isEqualTo(XtaFileTestFactory.CONTENT.length()); + } + + @Test + void shouldHandleMissingMessageFile() { + var fileGroup = mapper.toIncomingFile(null); + + assertThat(fileGroup).isNull(); + } + } + + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f66da9c0e40916fd80cec7b312ae35c54825d696 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataMapperTest.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static org.assertj.core.api.Assertions.*; + +import java.math.BigInteger; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; +import org.mockito.Spy; + +class XtaMessageMetaDataMapperTest { + + @Spy + private final XtaMessageMetaDataMapper mapper = Mappers.getMapper(XtaMessageMetaDataMapper.class); + + @Nested + class TestMoreMessagesAvailable { + + @Test + void shouldReturnFalseOnNoMessagesAvailable() { + + var response = mapper.moreMessagesAvailable(buildWithNoMessageAvailable()); + + assertThat(response).isFalse(); + } + + private MsgStatusListTypeAndHeaderResponse buildWithNoMessageAvailable() { + return MsgStatusListTypeAndHeaderResponseTestFactory.createBuilder().noMessageAvailable(true).build(); + } + + @Test + void shouldReturnFalseOnPendingMessagesNull() { + + var response = mapper.moreMessagesAvailable(buildPendingMessagesNull()); + + assertThat(response).isFalse(); + } + + private MsgStatusListTypeAndHeaderResponse buildPendingMessagesNull() { + return MsgStatusListTypeAndHeaderResponseTestFactory.createBuilder().messageItemsPending(null).build(); + } + + @Test + void shouldReturnFalseOnNoMessagesPending() { + + var response = mapper.moreMessagesAvailable(buildWithoutPendingMessages()); + + assertThat(response).isFalse(); + } + + private MsgStatusListTypeAndHeaderResponse buildWithoutPendingMessages() { + return MsgStatusListTypeAndHeaderResponseTestFactory.createBuilder().messageItemsPending(null).build(); + } + + @Test + void shouldReturnTrueOnMessagesPending() { + + var response = mapper.moreMessagesAvailable(buildWithPendingMessages()); + + assertThat(response).isTrue(); + } + + private MsgStatusListTypeAndHeaderResponse buildWithPendingMessages() { + return MsgStatusListTypeAndHeaderResponseTestFactory.createBuilder().messageItemsPending(BigInteger.ONE).build(); + } + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..fbafa41a6485dda19a04d4c5cc45f7a69710dd5f --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDataTestFactory.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static de.ozgcloud.eingang.xta.XtaMessageTestFactory.*; + +import java.time.ZonedDateTime; + +class XtaMessageMetaDataTestFactory { + + static final String MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; + static final ZonedDateTime ORIGIN = ZonedDateTime.parse("2022-10-29T15:45:52.4942149+02:00"); + + static XtaMessageMetaData create() { + return createBuilder().build(); + } + + static XtaMessageMetaData.XtaMessageMetaDataBuilder createBuilder() { + return XtaMessageMetaData.builder() + .messageId(MESSAGE_ID) + .messageType(MESSAGE_TYPE) + .origin(ORIGIN); + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..68a479c0892adf926408984872ffdaca4d972f43 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetaDatasAndHeaderTestFactory.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.util.UUID; +import java.util.stream.Stream; + +class XtaMessageMetaDatasAndHeaderTestFactory { + + public static final String MSG_BOX_REQUEST_ID = UUID.randomUUID().toString(); + + public static final XtaMessageMetaData MESSAGE1 = XtaMessageMetaDataTestFactory.create(); + + public static XtaMessageMetaDatasAndHeader create() { + return createBuilder().build(); + } + + public static XtaMessageMetaDatasAndHeader.XtaMessageMetaDatasAndHeaderBuilder createBuilder() { + return XtaMessageMetaDatasAndHeader.builder() + .msgBoxRequestID(MSG_BOX_REQUEST_ID) + .messages(Stream.of(MESSAGE1)); + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..456518d4ab482b631dffb3304cd2d9795369c877 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageMetadataRemoteIteratorTest.java @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.util.stream.Stream; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +class XtaMessageMetadataRemoteIteratorTest { + + private XtaMessageMetaDatasAndHeader messageMetaDatasAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.create(); + + @Mock + private XtaRemoteService remoteService; + + @BeforeEach + void setup() { + when(remoteService.getMessagesMetadata()).thenReturn(messageMetaDatasAndHeader); + } + + @Nested + class TestIteratorInitialization { + + @Test + void shouldCallGetMessagesMetadata() { + new XtaMessageMetadataRemoteIterator(remoteService); + + verify(remoteService).getMessagesMetadata(); + } + + @Test + void shouldCallRemoteMessageIterator() { + when(remoteService.getMessagesMetadata()).thenReturn(messageMetaDatasAndHeader); + + Object remoteIterator = spy(new XtaMessageMetadataRemoteIterator(remoteService)); + + assertThat(remoteIterator).extracting("remoteMessageIterator").isNotNull(); + } + } + + @Nested + class TestHasNext { + + @Test + void shouldReturnTrueAfterInitialization() { + var remoteIterator = new XtaMessageMetadataRemoteIterator(remoteService); + + assertThat(remoteIterator.hasNext()).isTrue(); + } + + @Test + void shouldReturnTrueWhenMoreMessagesAvailable() { + var messageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().moreMessagesAvailable(true).build(); + when(remoteService.getMessagesMetadata()).thenReturn(messageMetadataAndHeader); + + var remoteIterator = new XtaMessageMetadataRemoteIterator(remoteService); + + assertThat(remoteIterator.hasNext()).isTrue(); + } + + @Test + void shouldCallLoadNextMessages() { + initTest(); + var remoteIterator = spy(new XtaMessageMetadataRemoteIterator(remoteService)); + + remoteIterator.hasNext(); + + verify(remoteIterator).loadNextMessages(); + } + + private void initTest() { + var messageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder() + .messages(Stream.empty()).moreMessagesAvailable(true).build(); + when(remoteService.getMessagesMetadata()).thenReturn(messageMetadataAndHeader); + var nextMessageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().msgBoxRequestID("id").build(); + when(remoteService.getNextMessagesMetadata(any())).thenReturn(nextMessageMetadataAndHeader); + } + + @Test + void shouldReturnFalseWhenNoMoreMessagesAvailable() { + var messageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().messages(Stream.empty()).build(); + when(remoteService.getMessagesMetadata()).thenReturn(messageMetadataAndHeader); + + var remoteIterator = new XtaMessageMetadataRemoteIterator(remoteService); + + assertThat(remoteIterator.hasNext()).isFalse(); + } + } + + @Nested + class TestLoadNextMessages { + + private XtaMessageMetaDatasAndHeader nextMessageMetadataAndHeader = XtaMessageMetaDatasAndHeaderTestFactory.createBuilder().msgBoxRequestID("id").build(); + + @BeforeEach + void setup() { + when(remoteService.getNextMessagesMetadata(any())).thenReturn(nextMessageMetadataAndHeader); + } + + @Test + void shouldCallGetMessages() { + new XtaMessageMetadataRemoteIterator(remoteService).loadNextMessages(); + + verify(remoteService).getNextMessagesMetadata(messageMetaDatasAndHeader.getMsgBoxRequestID()); + } + + @Test + void shouldCallGetRemoteMessageIterator() { + var remoteIterator = spy(new XtaMessageMetadataRemoteIterator(remoteService)); + + remoteIterator.loadNextMessages(); + + verify(remoteIterator).getRemoteMessageIterator(nextMessageMetadataAndHeader); + } + } +} \ No newline at end of file diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..aff6fcead5509aa1f260619336b835fc49b6eda2 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaMessageTestFactory.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +class XtaMessageTestFactory { + + static final XtaMessageId MESSAGE_ID = XtaMessageId.from("urn:de:xta:messageid:dataport_xta_210:81e40808-91c6-4765-aaf4-1aa62fec8be9"); + + static XtaMessage create() { + return createBuilder().build(); + } + + static XtaMessage.XtaMessageBuilder createBuilder() { + return XtaMessage.builder() + .metaData(XtaMessageMetaDataTestFactory.create()) + .messageFile(XtaFileTestFactory.create()); + + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..4d4a3b7b889d130769be3ffc22728cdccfc1a114 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaPropertiesTestFactory.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.net.URI; + +import lombok.SneakyThrows; + +class XtaPropertiesTestFactory { + + private static final String SERVER_PROTOCOL = "https"; + private static final String SERVER_ADDRESS = "xta-adapter-port-forward-service.ssh-port-forward.svc.cluster.local"; + + @SneakyThrows + static XtaProperties create() { + XtaProperties properties = new XtaProperties(); + + Actions actions = new Actions(); + properties.setActions(actions); + actions.setFetchRequest(new URI("http://tempuri.local/fetch")); + actions.setStatusList(new URI("http://tempuri.lcoal/statusList")); + + Server server = new Server(); + properties.setServer(server); + server.setProtocol(SERVER_PROTOCOL); + server.setAddress(SERVER_ADDRESS); + + return properties; + + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4a3da6518b45039bc2b6191b7a842790cdb00f93 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceConfigurationTest.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Test; +import org.mockito.Spy; + +class XtaRemoteServiceConfigurationTest { + + @Spy + XtaRemoteServiceConfiguration configuration; + + @Test + void testBuildServerAddressUri() { + + String serverUrl = configuration.buildServerAddressUri(XtaPropertiesTestFactory.create().getServer()); + + assertThat(serverUrl).isEqualTo("https://xta-adapter-port-forward-service.ssh-port-forward.svc.cluster.local/MB_XTA-WS/XTA210msgBoxPort.svc"); + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..d4dbdb556390ac4d3457edc3c897f5b4b3879796 --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceITCase.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import de.ozgcloud.eingang.Application; +import jakarta.validation.Valid; + +@Disabled("real live test - do only activate for manual testing") +@ActiveProfiles({ "itcase", "local" }) +@SpringBootTest(classes = Application.class, // + properties = { "ozgcloud.xta.server.name=LI33-0005", + "ozgcloud.xta.server.address=LI33-0005:3000", + "ozgcloud.xta.server.protocol=https", + "ozgcloud.xta.keystore.file=file:./KOP_SH_KIEL_DEV.p12", + "ozgcloud.xta.keystore.password=geheim" // replace this with real password + }) +class XtaRemoteServiceITCase { + + @Autowired + private XtaRemoteService remoteService; + @Autowired + @Valid + private XtaProperties xtaProperties; + + @Nested + class TestProperties { + @Test + void shouldHaveStatusListAction() { + assertThat(xtaProperties.getActions().getStatusList()).isNotNull(); + } + } + + @Nested + class TestGetStatusList { + + @Test + void shouldSendRequest() { + + var result = remoteService.getStatusList(); + + assertThat(result).isNotNull(); + + } + } + + @Nested + class TestGetMessage { + @Test + void shouldSendRequest() { + var result = remoteService.getMessage("urn:de:xta:messageid:dataport_xta_210:81e40808-91c6-4765-aaf4-1aa62fec8be9"); + + assertThat(result).isNotNull(); + } + } + + @Nested + class TestClose { + @Test + void shouldThrowNoException() { + assertThatNoException().isThrownBy(() -> remoteService.close(XtaMessageTestFactory.MESSAGE_ID)); + } + } +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..cb5df11e8bbd40b2665a55d63435bda9271bb45e --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRemoteServiceTest.java @@ -0,0 +1,146 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.springframework.boot.webservices.client.WebServiceTemplateBuilder; + +class XtaRemoteServiceTest { + + @Spy + @InjectMocks + private XtaRemoteService service; + + @Mock + private WebServiceTemplateBuilder templateBuilder; + @Mock + private XtaMessageMetaDataMapper mapper; + @Spy + private XtaProperties properties = XtaPropertiesTestFactory.create(); + + @Nested + class TestGetMessagesMetadata { + + @BeforeEach + void init() { + doReturn(MsgStatusListTypeAndHeaderResponseTestFactory.create()).when(service).getStatusList(); + when(mapper.msgStatusListFromSoap(any(MsgStatusListTypeAndHeaderResponse.class))) + .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); + } + + @Test + void shouldCallGetStatusList() { + service.getMessagesMetadata().getMessages().toList(); + + verify(service).getStatusList(); + } + + @Test + void shouldCallMapper() { + service.getMessagesMetadata(); + + verify(mapper).msgStatusListFromSoap(notNull()); + } + + @Test + void shouldReturnMessageId() { + var metaData = service.getMessagesMetadata().getMessages().toList(); + + assertThat(metaData).hasSize(1).first().usingRecursiveComparison().isEqualTo(XtaMessageMetaDataTestFactory.create()); + } + } + + @Nested + class TestGetNextMessagesMetadata { + + @BeforeEach + void init() { + doReturn(MsgStatusListTypeAndHeaderResponseTestFactory.create()).when(service).getStatusList(); + when(mapper.msgStatusListFromSoap(any(MsgStatusListTypeAndHeaderResponse.class))) + .thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create()); + } + + @Test + void shouldCallGetNextStatusList() { + service.getMessagesMetadata().getMessages().toList(); + + verify(service).getStatusList(); + } + + @Test + void shouldCallMapper() { + service.getMessagesMetadata(); + + verify(mapper).msgStatusListFromSoap(notNull()); + } + + @Test + void shouldReturnMessageId() { + var metaData = service.getMessagesMetadata().getMessages().toList(); + + assertThat(metaData).hasSize(1).first().usingRecursiveComparison().isEqualTo(XtaMessageMetaDataTestFactory.create()); + } + } + + @Nested + class TestGetMessage { + + private XtaFile file = XtaFileTestFactory.create(); + + @BeforeEach + void init() { + doReturn(file).when(service).getMessage(anyString()); + } + + @Test + void shouldCallGetMessage() { + service.getMessage(XtaMessageTestFactory.MESSAGE_ID); + + verify(service).getMessage(XtaMessageTestFactory.MESSAGE_ID.toString()); + } + + @Test + void shouldReturnMessageWithoutMetaData() { + var message = service.getMessage(XtaMessageTestFactory.MESSAGE_ID); + + assertThat(message.getMetaData()).isNull(); + } + + @Test + void hosuldReturnMessageWithFile() { + var message = service.getMessage(XtaMessageTestFactory.MESSAGE_ID); + + assertThat(message.getMessageFiles()).hasSize(1).contains(file); + } + } +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapterTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java similarity index 54% rename from semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapterTest.java rename to xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java index e245ed38d4c4152825c0d135836e5643928f8b57..f5c6500cb292dee93954e02c3a3e9e5a8b95889d 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/AfmEngineBasedAdapterTest.java +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaRunnerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den * Ministerpräsidenten des Landes Schleswig-Holstein * Staatskanzlei * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung @@ -21,47 +21,60 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.itvsh.kop.eingangsadapter.semantik.enginebased; +package de.ozgcloud.eingang.xta; -import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import java.util.List; +import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Spy; -import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.SemantikAdapter; -class AfmEngineBasedAdapterTest { +class XtaRunnerTest { @InjectMocks - private AfmEngineBasedAdapter adapter; - @Spy - private List<EngineBasedMapper> mappers; + private XtaRunner scheduler; + + @Mock + private XtaService service; @Mock - private AfmEngineBasedMapper mapper; + private SemantikAdapter semantikAdapter; @Nested - class TestParseFromData { + class TestRunGetXtaMessages { - private FormData formData = FormData.builder().build(); + public static final FormData MESSAGE = FormDataTestFactory.create(); @BeforeEach - void mockEngineBasedMapper() { - when(mappers.size()).thenReturn(1); - when(mappers.get(anyInt())).thenReturn(mapper); + void init() { + when(service.getMessages()).thenReturn(Stream.of(MESSAGE)); + } + + @Test + void shouldCallXtaServiceGetNextMessages() { + scheduler.runGetXtaMessages(); + + verify(service).getMessages(); + } + + @Test + void shouldHandOverFormDataToSemantikAdapter() { + scheduler.runGetXtaMessages(); + + verify(semantikAdapter).processFormData(MESSAGE); } @Test - void shouldCallMappers() { - adapter.parseFormData(formData); + void shouldAcknowledgeReceive() { + scheduler.runGetXtaMessages(); - verify(mapper).parseFormData(formData); + verify(service).acknowledgeReceive(XtaMessageTestFactory.MESSAGE_ID); } } -} \ No newline at end of file +} diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6d0d104a981e31a4494a2c7ff6cdf26a03ac442d --- /dev/null +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java @@ -0,0 +1,239 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.stream.Stream; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; + +class XtaServiceTest { + + private static final String MESSAGE_TYPE_OTHER = "MESSAGE_TYPE_OTHER"; + + @Spy + @InjectMocks + private XtaService service; + + @Mock + private XtaRemoteService remoteService; + @Mock + private XtaMessageMapper mapper; + @Mock + private VorgangNummerSupplier vorgangNummerSupplier; + + @Nested + class TestGetMessagesAsFormData { + + private XtaMessageMetaDatasAndHeader metaData = XtaMessageMetaDatasAndHeaderTestFactory.create(); + private XtaMessageMetaData messageMetaData = XtaMessageMetaDataTestFactory.create(); + private XtaMessage message = XtaMessageTestFactory.create(); + + @BeforeEach + void setup() { + doReturn(Stream.of(messageMetaData)).when(service).createXtaMessageStream(); + } + + @Test + void shouldCallCreateStream() { + service.getMessages(); + + verify(service).createXtaMessageStream(); + } + + @Test + void shouldCallFilterByMessageType() { + when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create()); + when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); + + service.getMessages().toList(); + + verify(service).filterByMessageType(messageMetaData); + } + + @Test + void shouldCallGetFormData() { + when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create()); + when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); + doReturn(true).when(service).filterByMessageType(messageMetaData); + + service.getMessages().toList(); + + verify(service).getFormData(messageMetaData); + } + + @Test + void shouldNotCallGetFormData() { + doReturn(false).when(service).filterByMessageType(messageMetaData); + + service.getMessages().toList(); + + verify(service, never()).getFormData(any()); + } + } + + @Nested + class TestFilterByMessageType { + + @Test + void shouldAcceptDFoerdermittel() { + var metaDataDFoerder = XtaMessageMetaDataTestFactory.create(); + + assertThat(service.filterByMessageType(metaDataDFoerder)).isTrue(); + } + + @Test + void shouldNotAcceptOtherMessageType() { + var metaDataDFoerder = XtaMessageMetaDataTestFactory.createBuilder().messageType(MESSAGE_TYPE_OTHER).build(); + + assertThat(service.filterByMessageType(metaDataDFoerder)).isFalse(); + } + } + + @Nested + class TestGetFormData { + + private XtaMessage message = XtaMessageTestFactory.create(); + + @Captor + private ArgumentCaptor<XtaMessage> messageCaptor; + @Mock + private FormData formData; + + @BeforeEach + void init() { + when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); + } + + @Test + void shouldCallRemoteService() { + doReturn(formData).when(service).updateHeader(any()); + + service.getFormData(XtaMessageMetaDataTestFactory.create()); + + verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID); + } + + @Test + void shouldCallMapper() { + doReturn(formData).when(service).updateHeader(any()); + + service.getFormData(XtaMessageMetaDataTestFactory.create()); + + verify(mapper).toFormData(any()); + } + + @Test + void shouldHaveMetaData() { + doReturn(formData).when(service).updateHeader(any()); + XtaMessageMetaData metaData = XtaMessageMetaDataTestFactory.create(); + + service.getFormData(metaData); + + verify(mapper).toFormData(messageCaptor.capture()); + assertThat(messageCaptor.getValue().getMetaData()).isNotNull().isEqualTo(metaData); + } + + @Test + void shouldReturnMappedResult() { + var mapped = FormDataTestFactory.create(); + when(mapper.toFormData(any())).thenReturn(mapped); + doReturn(mapped).when(service).updateHeader(any()); + + var result = service.getFormData(XtaMessageMetaDataTestFactory.create()); + + assertThat(result).isSameAs(mapped); + } + } + + @Nested + class TestUpdateHeader { + + @Test + void shouldCallSetVorgangNummer() { + var formData = FormDataTestFactory.create(); + + service.updateHeader(formData); + + verify(service).setVorgangNummer(formData.getHeader()); + } + + @Test + void shouldSetUpdatedHeader() { + var updatedHeader = FormHeaderTestFactory.create(); + doReturn(updatedHeader).when(service).setVorgangNummer(any()); + + var result = service.updateHeader(FormDataTestFactory.create()); + + Assertions.assertThat(result.getHeader()).isSameAs(updatedHeader); + } + } + + @Nested + class TestSetVorgangNummer { + + @Test + void shouldCallVorgangNummerSupplier() { + service.setVorgangNummer(FormHeaderTestFactory.create()); + + verify(vorgangNummerSupplier).get(XtaService.VORGANG_NUMMER_SUFFIX_LENGTH); + } + + @Test + void shouldSetVorgangNummer() { + var vorgangNummer = "vorgang-1"; + when(vorgangNummerSupplier.get(anyInt())).thenReturn(vorgangNummer); + + var result = service.setVorgangNummer(FormHeaderTestFactory.create()); + + assertThat(result.getVorgangNummer()).isEqualTo(vorgangNummer); + } + } + + @Nested + class TestAcknowledgeReceive { + + @Test + void shouldCallRemoteService() { + service.acknowledgeReceive(XtaMessageTestFactory.MESSAGE_ID); + + verify(remoteService).close(XtaMessageTestFactory.MESSAGE_ID); + } + } + +} diff --git a/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 0000000000000000000000000000000000000000..79b126e6cdb86bec1f4f08c205de8961bde1934a --- /dev/null +++ b/xta-adapter/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1 @@ +org.mockito.junit.jupiter.MockitoExtension \ No newline at end of file diff --git a/xta-adapter/src/test/resources/application-itcase.yml b/xta-adapter/src/test/resources/application-itcase.yml new file mode 100644 index 0000000000000000000000000000000000000000..10c37fce51476732675a22abedd6ec6257d726f6 --- /dev/null +++ b/xta-adapter/src/test/resources/application-itcase.yml @@ -0,0 +1,6 @@ +ozgcloud: + xta: + keystore: + file: classpath:xtaTestStore.p12 + password: changeit + identifier: gae:jens.reese@mgm-tp.com \ No newline at end of file diff --git a/xta-adapter/src/test/resources/junit-platform.properties b/xta-adapter/src/test/resources/junit-platform.properties new file mode 100644 index 0000000000000000000000000000000000000000..1cebb76d5a58ac034b2627d12411d82d1e85821e --- /dev/null +++ b/xta-adapter/src/test/resources/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.extensions.autodetection.enabled = true \ No newline at end of file diff --git a/xta-adapter/src/test/resources/test_content.zip b/xta-adapter/src/test/resources/test_content.zip new file mode 100644 index 0000000000000000000000000000000000000000..e2c9e434c49cf52a8d0840b1a25dcc52615df04c Binary files /dev/null and b/xta-adapter/src/test/resources/test_content.zip differ diff --git a/xta-adapter/src/test/resources/xtaTestStore.p12 b/xta-adapter/src/test/resources/xtaTestStore.p12 new file mode 100644 index 0000000000000000000000000000000000000000..a0cc212c49745a428186d0d4f2f73dd6ac7f24ff Binary files /dev/null and b/xta-adapter/src/test/resources/xtaTestStore.p12 differ