This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 24f5afcceb NIFI-15553 Replaced the use of JARs in 
TestExecuteStreamCommand with the use of Java files (#10860)
24f5afcceb is described below

commit 24f5afcceba578779a3a9dc0da96d20fb9da78a5
Author: dan-s1 <[email protected]>
AuthorDate: Thu Feb 5 12:24:32 2026 -0500

    NIFI-15553 Replaced the use of JARs in TestExecuteStreamCommand with the 
use of Java files (#10860)
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../nifi-standard-processors/pom.xml               |   4 -
 .../standard/TestExecuteStreamCommand.java         | 692 ++++++++-------------
 .../src/test/resources/ExecuteCommand/1mb.txt      | 101 ---
 .../ExecuteCommand/TestDynamicEnvironment.jar      | Bin 1200 -> 0 bytes
 .../ExecuteCommand/TestIngestAndUpdate.jar         | Bin 1170 -> 0 bytes
 .../resources/ExecuteCommand/TestLogStdErr.jar     | Bin 995 -> 0 bytes
 .../test/resources/ExecuteCommand/TestSuccess.jar  | Bin 827 -> 0 bytes
 .../src/test/resources/ExecuteCommand/test.txt     |   2 -
 8 files changed, 246 insertions(+), 553 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
index d32b90df57..5981a64173 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/pom.xml
@@ -584,10 +584,6 @@
                         
<exclude>src/test/resources/ExecuteCommand/1000bytes.txt</exclude>
                         
<exclude>src/test/resources/ExecuteCommand/1mb.txt</exclude>
                         
<exclude>src/test/resources/ExecuteCommand/test.txt</exclude>
-                        
<exclude>src/test/resources/ExecuteCommand/TestDynamicEnvironment.jar</exclude>
-                        
<exclude>src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar</exclude>
-                        
<exclude>src/test/resources/ExecuteCommand/TestLogStdErr.jar</exclude>
-                        
<exclude>src/test/resources/ExecuteCommand/TestSuccess.jar</exclude>
                         <exclude>src/test/resources/hello.txt</exclude>
                         <exclude>src/test/resources/randombytes-1</exclude>
                         
<exclude>src/test/resources/ScanAttribute/dictionary-with-empty-new-lines</exclude>
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteStreamCommand.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteStreamCommand.java
index 739dd97056..17d3b125dd 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteStreamCommand.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestExecuteStreamCommand.java
@@ -28,11 +28,14 @@ import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -42,12 +45,21 @@ import java.util.Set;
 import java.util.regex.Pattern;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class TestExecuteStreamCommand {
+    private static final Path JAVA_FILES_DIR = Paths.get("src/test/java");
+    private static final Path NO_SUCH_FILE = Paths.get("NoSuchFile.java");
+    private static final Path TEST_DYNAMIC_ENVIRONMENT = 
Paths.get("TestDynamicEnvironment.java");
+    private static final Path TEST_INGEST_AND_UPDATE = 
Paths.get("TestIngestAndUpdate.java");
+    private static final Path TEST_LOG_STDERR = 
Paths.get("TestLogStdErr.java");
+    private static final Path TEST_SUCCESS = Paths.get("TestSuccess.java");
+    private static final String JAVA_COMMAND = "java";
 
-    private  TestRunner runner;
+    @TempDir
+    private File tempDir;
+
+    private TestRunner runner;
 
     @BeforeEach
     void setUp() {
@@ -57,7 +69,7 @@ public class TestExecuteStreamCommand {
     @Test
     public void testDynamicPropertyArgumentsStrategyValid() {
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty("command.argument.1", "-version");
 
         runner.assertValid();
@@ -69,7 +81,7 @@ public class TestExecuteStreamCommand {
     @Test
     public void testCommandArgumentsPropertyStrategyValid() {
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.COMMAND_ARGUMENTS_PROPERTY_STRATEGY.getValue());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty("RUNTIME_VERSION", "version-1");
 
         runner.assertValid();
@@ -79,30 +91,23 @@ public class TestExecuteStreamCommand {
     }
 
     @Test
-    public void testExecuteJar() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestSuccess.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
+    public void testExecuteJavaFile() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_SUCCESS);
         runner.setProperty(ExecuteStreamCommand.MIME_TYPE.getName(), 
"text/plain");
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
javaFile.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
 
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
         MockFlowFile outputFlowFile = flowFiles.getFirst();
-        byte[] byteArray = outputFlowFile.toByteArray();
-        String result = new String(byteArray);
+        String result = outputFlowFile.getContent();
         assertTrue(Pattern.compile("Test was a 
success\r?\n").matcher(result).find());
         assertEquals("0", outputFlowFile.getAttribute("execution.status"));
-        assertEquals("java", outputFlowFile.getAttribute("execution.command"));
-        assertEquals("-jar;", 
outputFlowFile.getAttribute("execution.command.args").substring(0, 5));
-        String attribute = 
outputFlowFile.getAttribute("execution.command.args");
-        String expected = "src" + File.separator + "test" + File.separator + 
"resources" + File.separator + "ExecuteCommand" + File.separator + 
"TestSuccess.jar";
-        assertEquals(expected, attribute.substring(attribute.length() - 
expected.length()));
+        assertEquals(JAVA_COMMAND, 
outputFlowFile.getAttribute("execution.command"));
+        assertEquals(javaFile.toString(), 
outputFlowFile.getAttribute("execution.command.args"));
         outputFlowFile.assertAttributeEquals(CoreAttributes.MIME_TYPE.key(), 
"text/plain");
 
         MockFlowFile originalFlowFile = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP).getFirst();
@@ -112,41 +117,28 @@ public class TestExecuteStreamCommand {
     }
 
     @Test
-    public void testExecuteJarDynamicPropArgs() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestSuccess.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testExecuteJavaFileDynamicPropArgs() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_SUCCESS);
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, javaFile.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
 
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
         MockFlowFile outputFlowFile = flowFiles.getFirst();
-        byte[] byteArray = outputFlowFile.toByteArray();
-        String result = new String(byteArray);
+        String result = outputFlowFile.getContent();
         assertTrue(Pattern.compile("Test was a 
success\r?\n").matcher(result).find());
         assertEquals("0", outputFlowFile.getAttribute("execution.status"));
-        assertEquals("java", outputFlowFile.getAttribute("execution.command"));
-        assertEquals("-jar", 
outputFlowFile.getAttribute("execution.command.args").substring(0, 4).trim());
-        String attribute = 
outputFlowFile.getAttribute("execution.command.args");
-        String expected = "src" + File.separator + "test" + File.separator + 
"resources" + File.separator + "ExecuteCommand" + File.separator + 
"TestSuccess.jar";
-        assertEquals(expected, attribute.substring(attribute.length() - 
expected.length()));
+        assertEquals(JAVA_COMMAND, 
outputFlowFile.getAttribute("execution.command"));
+        assertEquals(javaFile.toString(), 
outputFlowFile.getAttribute("execution.command.args"));
 
         MockFlowFile originalFlowFile = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP).getFirst();
         assertEquals(outputFlowFile.getAttribute("execution.status"), 
originalFlowFile.getAttribute("execution.status"));
@@ -156,14 +148,11 @@ public class TestExecuteStreamCommand {
 
 
     @Test
-    public void testExecuteJarWithBadPath() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/noSuchFile.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+    public void testExecuteJavaFileWithBadPath() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(NO_SUCH_FILE);
+        runner.enqueue("blah");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
javaFile.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 0);
@@ -171,31 +160,22 @@ public class TestExecuteStreamCommand {
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.NONZERO_STATUS_RELATIONSHIP);
         MockFlowFile flowFile = flowFiles.getFirst();
         assertEquals(0, flowFile.getSize());
-        assertTrue(flowFile.getAttribute("execution.error").contains("Error: 
Unable to access jarfile"));
+        
assertTrue(flowFile.getAttribute("execution.error").contains("java.lang.ClassNotFoundException"));
         assertTrue(flowFile.isPenalized());
     }
 
     @Test
-    public void testExecuteJarWithBadPathDynamicProperties() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/noSuchFile.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testExecuteJavaFileWithBadPathDynamicProperties() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(NO_SUCH_FILE);
+        runner.enqueue("blah");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, javaFile.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 0);
@@ -203,86 +183,57 @@ public class TestExecuteStreamCommand {
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.NONZERO_STATUS_RELATIONSHIP);
         MockFlowFile flowFile = flowFiles.getFirst();
         assertEquals(0, flowFile.getSize());
-        assertTrue(flowFile.getAttribute("execution.error").contains("Error: 
Unable to access jarfile"));
+        
assertTrue(flowFile.getAttribute("execution.error").contains("java.lang.ClassNotFoundException"));
         assertTrue(flowFile.isPenalized());
     }
 
     @Test
-    public void testExecuteIngestAndUpdate() throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        File dummy10MBytes = new File("target/10MB.txt");
-        try (FileOutputStream fos = new FileOutputStream(dummy10MBytes)) {
-            byte[] bytes = Files.readAllBytes(dummy.toPath());
-            assertEquals(1000, bytes.length);
-            for (int i = 0; i < 10000; i++) {
-                fos.write(bytes, 0, 1000);
-            }
-        }
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy10MBytes.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+    public void testExecuteIngestAndUpdate() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_INGEST_AND_UPDATE);
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
javaFile.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
-        byte[] byteArray = flowFiles.getFirst().toByteArray();
-        String result = new String(byteArray);
+        String result = flowFiles.getFirst().getContent();
+        final String expectedOutput = 
"nifi-standard-processors:ModifiedResult\r?\n%s".formatted(content);
 
-        
assertTrue(Pattern.compile("nifi-standard-processors:ModifiedResult\r?\n").matcher(result).find());
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find());
     }
 
     @Test
-    public void testExecuteIngestAndUpdateDynamicProperties() throws 
IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        File dummy10MBytes = new File("target/10MB.txt");
-        try (FileOutputStream fos = new FileOutputStream(dummy10MBytes)) {
-            byte[] bytes = Files.readAllBytes(dummy.toPath());
-            assertEquals(1000, bytes.length);
-            for (int i = 0; i < 10000; i++) {
-                fos.write(bytes, 0, 1000);
-            }
-        }
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy10MBytes.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testExecuteIngestAndUpdateDynamicProperties() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_INGEST_AND_UPDATE);
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, javaFile.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
-        byte[] byteArray = flowFiles.getFirst().toByteArray();
-        String result = new String(byteArray);
+        String result = flowFiles.getFirst().getContent();
+        final String expectedOutput = 
"nifi-standard-processors:ModifiedResult\r?\n%s".formatted(content);
 
-        
assertTrue(Pattern.compile("nifi-standard-processors:ModifiedResult\r?\n").matcher(result).find());
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find());
     }
 
     @Test
-    public void testLoggingToStdErr() throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestLogStdErr.jar");
-        File dummy = new File("src/test/resources/ExecuteCommand/1mb.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
+    public void testLoggingToStdErr() {
+        Path javaFile = JAVA_FILES_DIR.resolve(TEST_LOG_STDERR);
         runner.setValidateExpressionUsage(false);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
javaFile.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
@@ -294,27 +245,18 @@ public class TestExecuteStreamCommand {
     }
 
     @Test
-    public void testLoggingToStdErrDynamicProperties() throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestLogStdErr.jar");
-        File dummy = new File("src/test/resources/ExecuteCommand/1mb.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
+    public void testLoggingToStdErrDynamicProperties() {
+        Path javaFile = JAVA_FILES_DIR.resolve(TEST_LOG_STDERR);
         runner.setValidateExpressionUsage(false);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, javaFile.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
@@ -326,169 +268,135 @@ public class TestExecuteStreamCommand {
     }
 
     @Test
-    public void testExecuteIngestAndUpdateWithWorkingDir() throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+    public void testExecuteIngestAndUpdateWithWorkingDir() {
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
TEST_INGEST_AND_UPDATE.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
-        byte[] byteArray = flowFiles.getFirst().toByteArray();
-        String result = new String(byteArray);
+        String result = flowFiles.getFirst().getContent();
 
         final String quotedSeparator = Pattern.quote(File.separator);
-        assertTrue(Pattern.compile(quotedSeparator + 
"nifi-standard-processors" + quotedSeparator + 
"target:ModifiedResult\r?\n").matcher(result).find());
+        final String expectedOutput = 
"%1$snifi-standard-processors%1$ssrc%1$stest%1$sjava:ModifiedResult\r?\n%2$s".formatted(quotedSeparator,
 content);
+
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find());
     }
 
     @Test
-    public void testExecuteIngestAndUpdateWithWorkingDirDynamicProperties() 
throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testExecuteIngestAndUpdateWithWorkingDirDynamicProperties() {
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, TEST_INGEST_AND_UPDATE.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
-        byte[] byteArray = flowFiles.getFirst().toByteArray();
-        String result = new String(byteArray);
+        String result = flowFiles.getFirst().getContent();
 
         final String quotedSeparator = Pattern.quote(File.separator);
-        assertTrue(Pattern.compile(quotedSeparator + 
"nifi-standard-processors" + quotedSeparator + 
"target:ModifiedResult\r?\n").matcher(result).find());
+        final String expectedOutput = 
"%1$snifi-standard-processors%1$ssrc%1$stest%1$sjava:ModifiedResult\r?\n%2$s".formatted(quotedSeparator,
 content);
+
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find());
     }
 
     @Test
-    public void testIgnoredStdin() throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+    public void testIgnoredStdin() {
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
TEST_INGEST_AND_UPDATE.toString());
         runner.setProperty(ExecuteStreamCommand.IGNORE_STDIN, "true");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
-        byte[] byteArray = flowFiles.getFirst().toByteArray();
-        String result = new String(byteArray);
-        
assertTrue(Pattern.compile("target:ModifiedResult\r?\n$").matcher(result).find(),
 "TestIngestAndUpdate.jar should not have received anything to modify");
+        String result = flowFiles.getFirst().getContent();
+
+        final String quotedSeparator = Pattern.quote(File.separator);
+        final String expectedOutput = 
"src%1$stest%1$sjava:ModifiedResult\r?\n".formatted(quotedSeparator);
+
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find());
     }
 
     @Test
-    public void testIgnoredStdinDynamicProperties() throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testIgnoredStdinDynamicProperties() {
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, TEST_INGEST_AND_UPDATE.toString());
         runner.setProperty(ExecuteStreamCommand.IGNORE_STDIN, "true");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
-        byte[] byteArray = flowFiles.getFirst().toByteArray();
-        String result = new String(byteArray);
-        
assertTrue(Pattern.compile("target:ModifiedResult\r?\n$").matcher(result).find(),
 "TestIngestAndUpdate.jar should not have received anything to modify");
+        String result = flowFiles.getFirst().getContent();
+
+        final String quotedSeparator = Pattern.quote(File.separator);
+        final String expectedOutput = 
"src%1$stest%1$sjava:ModifiedResult\r?\n".formatted(quotedSeparator);
+
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find());
     }
 
     @Test
-    public void testDynamicEnvironment() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestDynamicEnvironment.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
+    public void testDynamicEnvironment() {
         runner.setProperty("NIFI_TEST_1", "testvalue1");
         runner.setProperty("NIFI_TEST_2", "testvalue2");
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
TEST_DYNAMIC_ENVIRONMENT.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
-        byte[] byteArray = flowFiles.getFirst().toByteArray();
-        String result = new String(byteArray);
+        String result = flowFiles.getFirst().getContent();
         Set<String> dynamicEnvironmentVariables = new 
HashSet<>(Arrays.asList(result.split("\r?\n")));
-        assertFalse(dynamicEnvironmentVariables.size() < 2, "Should contain at 
least two environment variables starting with NIFI");
-        
assertTrue(dynamicEnvironmentVariables.contains("NIFI_TEST_1=testvalue1"), 
"NIFI_TEST_1 environment variable is missing");
-        
assertTrue(dynamicEnvironmentVariables.contains("NIFI_TEST_2=testvalue2"), 
"NIFI_TEST_2 environment variable is missing");
+        Set<String> expectedEnvironmentVariables = 
Set.of("NIFI_TEST_1=testvalue1", "NIFI_TEST_2=testvalue2");
+        
assertTrue(dynamicEnvironmentVariables.containsAll(expectedEnvironmentVariables));
     }
 
     @Test
-    public void testDynamicEnvironmentDynamicProperties() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestDynamicEnvironment.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
+    public void testDynamicEnvironmentDynamicProperties() {
         runner.setProperty("NIFI_TEST_1", "testvalue1");
         runner.setProperty("NIFI_TEST_2", "testvalue2");
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, TEST_DYNAMIC_ENVIRONMENT.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
-        byte[] byteArray = flowFiles.getFirst().toByteArray();
-        String result = new String(byteArray);
+        String result = flowFiles.getFirst().getContent();
         Set<String> dynamicEnvironmentVariables = new 
HashSet<>(Arrays.asList(result.split("\r?\n")));
-        assertFalse(dynamicEnvironmentVariables.size() < 2, "Should contain at 
least two environment variables starting with NIFI");
-        
assertTrue(dynamicEnvironmentVariables.contains("NIFI_TEST_1=testvalue1"), 
"NIFI_TEST_1 environment variable is missing");
-        
assertTrue(dynamicEnvironmentVariables.contains("NIFI_TEST_2=testvalue2"), 
"NIFI_TEST_2 environment variable is missing");
+        Set<String> expectedEnvironmentVariables = 
Set.of("NIFI_TEST_1=testvalue1", "NIFI_TEST_2=testvalue2");
+        
assertTrue(dynamicEnvironmentVariables.containsAll(expectedEnvironmentVariables));
     }
 
     @Test
@@ -610,7 +518,7 @@ public class TestExecuteStreamCommand {
 
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP);
         MockFlowFile outputFlowFile = flowFiles.getFirst();
-        String output = new String(outputFlowFile.toByteArray()).trim();
+        String output = outputFlowFile.getContent().trim();
         if (isWindows()) {
             output = StringUtils.unwrap(output, '"');
         }
@@ -620,14 +528,12 @@ public class TestExecuteStreamCommand {
     }
 
     @Test
-    public void testExecuteJarPutToAttribute() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestSuccess.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+    public void testExecuteJavaFilePutToAttribute() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_SUCCESS);
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
javaFile.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"executeStreamCommand.output");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
@@ -636,37 +542,26 @@ public class TestExecuteStreamCommand {
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         MockFlowFile outputFlowFile = flowFiles.getFirst();
         String result = 
outputFlowFile.getAttribute("executeStreamCommand.output");
-        outputFlowFile.assertContentEquals(dummy);
+        outputFlowFile.assertContentEquals(content);
         assertTrue(Pattern.compile("Test was a 
success\r?\n").matcher(result).find());
         assertEquals("0", outputFlowFile.getAttribute("execution.status"));
-        assertEquals("java", outputFlowFile.getAttribute("execution.command"));
-        assertEquals("-jar;", 
outputFlowFile.getAttribute("execution.command.args").substring(0, 5));
-        String attribute = 
outputFlowFile.getAttribute("execution.command.args");
-        String expected = "src" + File.separator + "test" + File.separator + 
"resources" + File.separator + "ExecuteCommand" + File.separator + 
"TestSuccess.jar";
-        assertEquals(expected, attribute.substring(attribute.length() - 
expected.length()));
+        assertEquals(JAVA_COMMAND, 
outputFlowFile.getAttribute("execution.command"));
+        assertEquals(javaFile.toString(), 
outputFlowFile.getAttribute("execution.command.args"));
     }
 
     @Test
-    public void testExecuteJarPutToAttributeDynamicProperties() throws 
Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestSuccess.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testExecuteJavaFilePutToAttributeDynamicProperties() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_SUCCESS);
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, javaFile.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"executeStreamCommand.output");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
@@ -675,24 +570,19 @@ public class TestExecuteStreamCommand {
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         MockFlowFile outputFlowFile = flowFiles.getFirst();
         String result = 
outputFlowFile.getAttribute("executeStreamCommand.output");
-        outputFlowFile.assertContentEquals(dummy);
+        outputFlowFile.assertContentEquals(content);
         assertTrue(Pattern.compile("Test was a 
success\r?\n").matcher(result).find());
         assertEquals("0", outputFlowFile.getAttribute("execution.status"));
-        assertEquals("java", outputFlowFile.getAttribute("execution.command"));
-        assertEquals("-jar", 
outputFlowFile.getAttribute("execution.command.args").substring(0, 4));
-        String attribute = 
outputFlowFile.getAttribute("execution.command.args");
-        String expected = "src" + File.separator + "test" + File.separator + 
"resources" + File.separator + "ExecuteCommand" + File.separator + 
"TestSuccess.jar";
-        assertEquals(expected, attribute.substring(attribute.length() - 
expected.length()));
+        assertEquals(JAVA_COMMAND, 
outputFlowFile.getAttribute("execution.command"));
+        assertEquals(javaFile.toString(), 
outputFlowFile.getAttribute("execution.command.args"));
     }
 
     @Test
-    public void testExecuteJarToAttributeConfiguration() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestSuccess.jar");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
+    public void testExecuteJavaFileToAttributeConfiguration() throws Exception 
{
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_SUCCESS);
         runner.enqueue("small test".getBytes());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
javaFile.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_ATTRIBUTE_MAX_LENGTH, 
"10");
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"outputDest");
         assertEquals(1, 
runner.getProcessContext().getAvailableRelationships().size());
@@ -707,33 +597,22 @@ public class TestExecuteStreamCommand {
         String result = outputFlowFile.getAttribute("outputDest");
         assertTrue(Pattern.compile("Test was a").matcher(result).find());
         assertEquals("0", outputFlowFile.getAttribute("execution.status"));
-        assertEquals("java", outputFlowFile.getAttribute("execution.command"));
-        assertEquals("-jar;", 
outputFlowFile.getAttribute("execution.command.args").substring(0, 5));
-        String attribute = 
outputFlowFile.getAttribute("execution.command.args");
-        String expected = "src" + File.separator + "test" + File.separator + 
"resources" + File.separator + "ExecuteCommand" + File.separator + 
"TestSuccess.jar";
-        assertEquals(expected, attribute.substring(attribute.length() - 
expected.length()));
+        assertEquals(JAVA_COMMAND, 
outputFlowFile.getAttribute("execution.command"));
+        assertEquals(javaFile.toString(), 
outputFlowFile.getAttribute("execution.command.args"));
     }
 
     @Test
-    public void testExecuteJarToAttributeConfigurationDyanmicProperties() 
throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestSuccess.jar");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
+    public void testExecuteJavaFileToAttributeConfigurationDynamicProperties() 
{
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_SUCCESS);
         runner.enqueue("small test".getBytes());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, javaFile.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_ATTRIBUTE_MAX_LENGTH, 
"10");
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"outputDest");
         assertEquals(1, 
runner.getProcessContext().getAvailableRelationships().size());
@@ -744,71 +623,41 @@ public class TestExecuteStreamCommand {
 
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         MockFlowFile outputFlowFile = flowFiles.getFirst();
-        outputFlowFile.assertContentEquals("small test".getBytes());
+        outputFlowFile.assertContentEquals("small test");
         String result = outputFlowFile.getAttribute("outputDest");
         assertTrue(Pattern.compile("Test was a").matcher(result).find());
         assertEquals("0", outputFlowFile.getAttribute("execution.status"));
-        assertEquals("java", outputFlowFile.getAttribute("execution.command"));
-        assertEquals("-jar", 
outputFlowFile.getAttribute("execution.command.args").substring(0, 4));
-        String attribute = 
outputFlowFile.getAttribute("execution.command.args");
-        String expected = "src" + File.separator + "test" + File.separator + 
"resources" + File.separator + "ExecuteCommand" + File.separator + 
"TestSuccess.jar";
-        assertEquals(expected, attribute.substring(attribute.length() - 
expected.length()));
+        assertEquals(JAVA_COMMAND, 
outputFlowFile.getAttribute("execution.command"));
+        assertEquals(javaFile.toString(), 
outputFlowFile.getAttribute("execution.command.args"));
     }
 
     @Test
-    public void testExecuteIngestAndUpdatePutToAttribute() throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        File dummy10MBytes = new File("target/10MB.txt");
-        byte[] bytes = Files.readAllBytes(dummy.toPath());
-        try (FileOutputStream fos = new FileOutputStream(dummy10MBytes)) {
-            for (int i = 0; i < 10000; i++) {
-                fos.write(bytes, 0, 1000);
-            }
-        }
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy10MBytes.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+    public void testExecuteIngestAndUpdatePutToAttribute() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_INGEST_AND_UPDATE);
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
javaFile.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"outputDest");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 0);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         String result = flowFiles.getFirst().getAttribute("outputDest");
-
         
assertTrue(Pattern.compile("nifi-standard-processors:ModifiedResult\r?\n").matcher(result).find());
     }
 
     @Test
-    public void testExecuteIngestAndUpdatePutToAttributeDynamicProperties() 
throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        File dummy10MBytes = new File("target/10MB.txt");
-        byte[] bytes = Files.readAllBytes(dummy.toPath());
-        try (FileOutputStream fos = new FileOutputStream(dummy10MBytes)) {
-            for (int i = 0; i < 10000; i++) {
-                fos.write(bytes, 0, 1000);
-            }
-        }
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy10MBytes.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testExecuteIngestAndUpdatePutToAttributeDynamicProperties() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(TEST_INGEST_AND_UPDATE);
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, javaFile.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"outputDest");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
@@ -822,7 +671,7 @@ public class TestExecuteStreamCommand {
     @Test
     public void testLargePutToAttribute() throws IOException {
         File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        File dummy10MBytes = new File("target/10MB.txt");
+        File dummy10MBytes = new File(tempDir, "10MB.txt");
         byte[] bytes = Files.readAllBytes(dummy.toPath());
         try (FileOutputStream fos = new FileOutputStream(dummy10MBytes)) {
             for (int i = 0; i < 10000; i++) {
@@ -856,7 +705,7 @@ public class TestExecuteStreamCommand {
     @Test
     public void testLargePutToAttributeDynamicProperties() throws IOException {
         File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        File dummy10MBytes = new File("target/10MB.txt");
+        File dummy10MBytes = new File(tempDir, "10MB.txt");
         byte[] bytes = Files.readAllBytes(dummy.toPath());
         try (FileOutputStream fos = new FileOutputStream(dummy10MBytes)) {
             for (int i = 0; i < 10000; i++) {
@@ -904,34 +753,27 @@ public class TestExecuteStreamCommand {
     }
 
     @Test
-    public void testExecuteIngestAndUpdateWithWorkingDirPutToAttribute() 
throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testExecuteIngestAndUpdateWithWorkingDirPutToAttribute() {
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"streamOutput");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
TEST_INGEST_AND_UPDATE.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         String result = flowFiles.getFirst().getAttribute("streamOutput");
 
         final String quotedSeparator = Pattern.quote(File.separator);
-        assertTrue(Pattern.compile(quotedSeparator + 
"nifi-standard-processors" + quotedSeparator + 
"target:ModifiedResult\r?\n").matcher(result).find());
+        final String expectedOutput = 
"%1$snifi-standard-processors%1$ssrc%1$stest%1$sjava:ModifiedResult\r?\n".formatted(quotedSeparator);
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find());
     }
 
     @Test
-    public void 
testExecuteIngestAndUpdateWithWorkingDirPutToAttributeDynamicProperties() 
throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void 
testExecuteIngestAndUpdateWithWorkingDirPutToAttributeDynamicProperties() {
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"streamOutput");
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
@@ -939,130 +781,102 @@ public class TestExecuteStreamCommand {
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, TEST_INGEST_AND_UPDATE.toString());
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         String result = flowFiles.getFirst().getAttribute("streamOutput");
 
         final String quotedSeparator = Pattern.quote(File.separator);
-        assertTrue(Pattern.compile(quotedSeparator + 
"nifi-standard-processors" + quotedSeparator + 
"target:ModifiedResult\r?\n").matcher(result).find());
+        final String expectedOutput = 
"%1$snifi-standard-processors%1$ssrc%1$stest%1$sjava:ModifiedResult\r?\n".formatted(quotedSeparator);
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find());
     }
 
     @Test
-    public void testIgnoredStdinPutToAttribute() throws IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+    public void testIgnoredStdinPutToAttribute() {
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
TEST_INGEST_AND_UPDATE.toString());
         runner.setProperty(ExecuteStreamCommand.IGNORE_STDIN, "true");
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"executeStreamCommand.output");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         String result = 
flowFiles.getFirst().getAttribute("executeStreamCommand.output");
-        
assertTrue(Pattern.compile("target:ModifiedResult\r?\n?").matcher(result).find(),
-                "TestIngestAndUpdate.jar should not have received anything to 
modify");
+
+        final String quotedSeparator = Pattern.quote(File.separator);
+        final String expectedOutput = 
"%1$ssrc%1$stest%1$sjava:ModifiedResult\r?\n".formatted(quotedSeparator);
+
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find(),
+                "TestIngestAndUpdate.java should not have received anything to 
modify");
     }
 
     @Test
-    public void testIgnoredStdinPutToAttributeDynamicProperties() throws 
IOException {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testIgnoredStdinPutToAttributeDynamicProperties() {
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, TEST_INGEST_AND_UPDATE.toString());
         runner.setProperty(ExecuteStreamCommand.IGNORE_STDIN, "true");
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"executeStreamCommand.output");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         String result = 
flowFiles.getFirst().getAttribute("executeStreamCommand.output");
-        
assertTrue(Pattern.compile("target:ModifiedResult\r?\n?").matcher(result).find(),
-                "TestIngestAndUpdate.jar should not have received anything to 
modify");
+        final String quotedSeparator = Pattern.quote(File.separator);
+        final String expectedOutput = 
"%1$ssrc%1$stest%1$sjava:ModifiedResult\r?\n".formatted(quotedSeparator);
+
+        assertTrue(Pattern.compile(expectedOutput).matcher(result).find(),
+                "TestIngestAndUpdate.java should not have received anything to 
modify");
     }
 
     @Test
-    public void testDynamicEnvironmentPutToAttribute() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestDynamicEnvironment.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
+    public void testDynamicEnvironmentPutToAttribute() {
         runner.setProperty("NIFI_TEST_1", "testvalue1");
         runner.setProperty("NIFI_TEST_2", "testvalue2");
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
TEST_DYNAMIC_ENVIRONMENT.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"executeStreamCommand.output");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         String result = 
flowFiles.getFirst().getAttribute("executeStreamCommand.output");
         Set<String> dynamicEnvironmentVariables = new 
HashSet<>(Arrays.asList(result.split("\r?\n")));
-        assertFalse(dynamicEnvironmentVariables.size() < 2, "Should contain at 
least two environment variables starting with NIFI");
-        
assertTrue(dynamicEnvironmentVariables.contains("NIFI_TEST_1=testvalue1"), 
"NIFI_TEST_1 environment variable is missing");
-        
assertTrue(dynamicEnvironmentVariables.contains("NIFI_TEST_2=testvalue2"), 
"NIFI_TEST_2 environment variable is missing");
+        Set<String> expectedEnvironmentVariables = 
Set.of("NIFI_TEST_1=testvalue1", "NIFI_TEST_2=testvalue2");
+        
assertTrue(dynamicEnvironmentVariables.containsAll(expectedEnvironmentVariables));
     }
 
     @Test
-    public void testDynamicEnvironmentPutToAttributeDynamicProperties() throws 
Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/TestDynamicEnvironment.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
+    public void testDynamicEnvironmentPutToAttributeDynamicProperties() {
         runner.setProperty("NIFI_TEST_1", "testvalue1");
         runner.setProperty("NIFI_TEST_2", "testvalue2");
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, "target");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+        runner.enqueue("");
+        runner.setProperty(ExecuteStreamCommand.WORKING_DIR, 
JAVA_FILES_DIR.toString());
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, TEST_DYNAMIC_ENVIRONMENT.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"executeStreamCommand.output");
         runner.run(1);
         runner.assertTransferCount(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP, 
1);
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         String result = 
flowFiles.getFirst().getAttribute("executeStreamCommand.output");
         Set<String> dynamicEnvironmentVariables = new 
HashSet<>(Arrays.asList(result.split("\r?\n")));
-        assertFalse(dynamicEnvironmentVariables.size() < 2, "Should contain at 
least two environment variables starting with NIFI");
-        
assertTrue(dynamicEnvironmentVariables.contains("NIFI_TEST_1=testvalue1"), 
"NIFI_TEST_1 environment variable is missing");
-        
assertTrue(dynamicEnvironmentVariables.contains("NIFI_TEST_2=testvalue2"), 
"NIFI_TEST_2 environment variable is missing");
+        Set<String> expectedEnvironmentVariables = 
Set.of("NIFI_TEST_1=testvalue1", "NIFI_TEST_2=testvalue2");
+        
assertTrue(dynamicEnvironmentVariables.containsAll(expectedEnvironmentVariables));
     }
 
     @Test
@@ -1084,14 +898,12 @@ public class TestExecuteStreamCommand {
     }
 
     @Test
-    public void testExecuteJarPutToAttributeBadPath() throws Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/noSuchFile.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, "-jar;" + 
jarPath);
+    public void testExecuteJavaFilePutToAttributeBadPath() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(NO_SUCH_FILE);
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_ARGUMENTS, 
javaFile.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"executeStreamCommand.output");
         runner.run(1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 0);
@@ -1101,37 +913,26 @@ public class TestExecuteStreamCommand {
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         MockFlowFile outputFlowFile = flowFiles.getFirst();
         String result = 
outputFlowFile.getAttribute("executeStreamCommand.output");
-        outputFlowFile.assertContentEquals(dummy);
-        assertTrue(result.isEmpty()); // java -jar with bad path only prints 
to standard error not standard out
+        outputFlowFile.assertContentEquals(content);
+        assertTrue(result.isEmpty()); // java with bad path only prints to 
standard error not standard out
         assertEquals("1", outputFlowFile.getAttribute("execution.status")); // 
java -jar with bad path exits with code 1
-        assertEquals("java", outputFlowFile.getAttribute("execution.command"));
-        assertEquals("-jar;", 
outputFlowFile.getAttribute("execution.command.args").substring(0, 5));
-        String attribute = 
outputFlowFile.getAttribute("execution.command.args");
-        String expected = "src" + File.separator + "test" + File.separator + 
"resources" + File.separator + "ExecuteCommand" + File.separator + 
"noSuchFile.jar";
-        assertEquals(expected, attribute.substring(attribute.length() - 
expected.length()));
+        assertEquals(JAVA_COMMAND, 
outputFlowFile.getAttribute("execution.command"));
+        assertEquals(javaFile.toString(), 
outputFlowFile.getAttribute("execution.command.args"));
     }
 
     @Test
-    public void testExecuteJarPutToAttributeBadPathDynamicProperties() throws 
Exception {
-        File exJar = new 
File("src/test/resources/ExecuteCommand/noSuchFile.jar");
-        File dummy = new 
File("src/test/resources/ExecuteCommand/1000bytes.txt");
-        String jarPath = exJar.getAbsolutePath();
-        exJar.setExecutable(true);
-        runner.enqueue(dummy.toPath());
-        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, "java");
+    public void testExecuteJavaFilePutToAttributeBadPathDynamicProperties() {
+        final Path javaFile = JAVA_FILES_DIR.resolve(NO_SUCH_FILE);
+        final String content = "Print Me";
+        runner.enqueue(content);
+        runner.setProperty(ExecuteStreamCommand.EXECUTION_COMMAND, 
JAVA_COMMAND);
         runner.setProperty(ExecuteStreamCommand.ARGUMENTS_STRATEGY, 
ExecuteStreamCommand.DYNAMIC_PROPERTY_ARGUMENTS_STRATEGY.getValue());
         PropertyDescriptor dynamicProp1 = new PropertyDescriptor.Builder()
             .dynamic(true)
             .name("command.argument.1")
             
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
             .build();
-        runner.setProperty(dynamicProp1, "-jar");
-        PropertyDescriptor dynamicProp2 = new PropertyDescriptor.Builder()
-            .dynamic(true)
-            .name("command.argument.2")
-            
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
-            .build();
-        runner.setProperty(dynamicProp2, jarPath);
+        runner.setProperty(dynamicProp1, javaFile.toString());
         runner.setProperty(ExecuteStreamCommand.PUT_OUTPUT_IN_ATTRIBUTE, 
"executeStreamCommand.output");
         runner.run(1);
         
runner.assertTransferCount(ExecuteStreamCommand.OUTPUT_STREAM_RELATIONSHIP, 0);
@@ -1141,14 +942,13 @@ public class TestExecuteStreamCommand {
         List<MockFlowFile> flowFiles = 
runner.getFlowFilesForRelationship(ExecuteStreamCommand.ORIGINAL_RELATIONSHIP);
         MockFlowFile outputFlowFile = flowFiles.getFirst();
         String result = 
outputFlowFile.getAttribute("executeStreamCommand.output");
-        outputFlowFile.assertContentEquals(dummy);
-        assertTrue(result.isEmpty()); // java -jar with bad path only prints 
to standard error not standard out
+        outputFlowFile.assertContentEquals(content);
+        assertTrue(result.isEmpty()); // java with bad path only prints to 
standard error not standard out
         assertEquals("1", outputFlowFile.getAttribute("execution.status")); // 
java -jar with bad path exits with code 1
-        assertEquals("java", outputFlowFile.getAttribute("execution.command"));
-        assertEquals("-jar", 
outputFlowFile.getAttribute("execution.command.args").substring(0, 4));
+        assertEquals(JAVA_COMMAND, 
outputFlowFile.getAttribute("execution.command"));
+        assertEquals(javaFile.toString(), 
outputFlowFile.getAttribute("execution.command.args"));
         String attribute = 
outputFlowFile.getAttribute("execution.command.args");
-        String expected = "src" + File.separator + "test" + File.separator + 
"resources" + File.separator + "ExecuteCommand" + File.separator + 
"noSuchFile.jar";
-        assertEquals(expected, attribute.substring(attribute.length() - 
expected.length()));
+        assertEquals(javaFile.toString(), attribute);
     }
 
     @Test
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/1mb.txt
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/1mb.txt
deleted file mode 100644
index 6e6483f999..0000000000
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/1mb.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 [...]
\ No newline at end of file
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestDynamicEnvironment.jar
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestDynamicEnvironment.jar
deleted file mode 100755
index 8ff95a1798..0000000000
Binary files 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestDynamicEnvironment.jar
 and /dev/null differ
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar
deleted file mode 100755
index 5788a6d93e..0000000000
Binary files 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestIngestAndUpdate.jar
 and /dev/null differ
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestLogStdErr.jar
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestLogStdErr.jar
deleted file mode 100755
index cb202b5b47..0000000000
Binary files 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestLogStdErr.jar
 and /dev/null differ
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestSuccess.jar
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestSuccess.jar
deleted file mode 100755
index b28612a4ec..0000000000
Binary files 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/TestSuccess.jar
 and /dev/null differ
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/test.txt
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/test.txt
deleted file mode 100755
index fc800bb12c..0000000000
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/resources/ExecuteCommand/test.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Test was a success
-

Reply via email to