Discussion:
[PATCH 3/5] testsuite: Do not provide finit_module(2) on older kernels
Michal Marek
2014-02-27 22:52:11 UTC
Permalink
If the test's uname -r is less that 3.8, return -ENOSYS from
finit_module(), so that the fallback is tested.
---
testsuite/init_module.c | 25 +++++++++++++++++++++++++
1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/testsuite/init_module.c b/testsuite/init_module.c
index 42177e7..96f4aa7 100644
--- a/testsuite/init_module.c
+++ b/testsuite/init_module.c
@@ -37,6 +37,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/syscall.h>
+#include <sys/utsname.h>
#include <unistd.h>

/* kmod_elf_get_section() is not exported, we need the private header */
@@ -280,6 +281,25 @@ long init_module(void *mem, unsigned long len, const char *args)
return err;
}

+static int check_kernel_version(int major, int minor)
+{
+ struct utsname u;
+ const char *p;
+ int maj = 0, min = 0;
+
+ if (uname(&u) < 0)
+ return false;
+ for (p = u.release; *p >= '0' && *p <= '9'; p++)
+ maj = maj * 10 + *p - '0';
+ if (*p == '.')
+ for (p++; *p >= '0' && *p <= '9'; p++)
+ min = min * 10 + *p - '0';
+ if (maj > major || (maj == major && min >= minor))
+ return true;
+ return false;
+}
+
+
TS_EXPORT int finit_module(const int fd, const char *args, const int flags);

int finit_module(const int fd, const char *args, const int flags)
@@ -289,6 +309,11 @@ int finit_module(const int fd, const char *args, const int flags)
unsigned long len;
struct stat st;

+ if (!check_kernel_version(3, 8)) {
+ stat("/old/kernel", &st);
+ errno = ENOSYS;
+ return -1;
+ }
if (fstat(fd, &st) < 0)
return -1;
--
1.7.3.1
Michal Marek
2014-02-27 22:52:09 UTC
Permalink
Add a ->modules_loaded member to struct test, which is a comma-separated
list of modules that should be present after the test finishes. Both
missing and excess modules cause an error.
---
testsuite/test-init.c | 1 +
testsuite/test-modprobe.c | 13 +++-
testsuite/testsuite.c | 158 ++++++++++++++++++++++++++++++++++++++++++++-
testsuite/testsuite.h | 2 +
4 files changed, 168 insertions(+), 6 deletions(-)

diff --git a/testsuite/test-init.c b/testsuite/test-init.c
index 63b6501..d2aa4bd 100644
--- a/testsuite/test-init.c
+++ b/testsuite/test-init.c
@@ -74,6 +74,7 @@ static DEFINE_TEST(test_insert,
[TC_ROOTFS] = TESTSUITE_ROOTFS "test-init/",
[TC_INIT_MODULE_RETCODES] = "bla:1:20",
},
+ .modules_loaded = "ext4",
.need_spawn = true);

static noreturn int test_remove(const struct test *t)
diff --git a/testsuite/test-modprobe.c b/testsuite/test-modprobe.c
index 637d363..c3ef31e 100644
--- a/testsuite/test-modprobe.c
+++ b/testsuite/test-modprobe.c
@@ -91,7 +91,9 @@ static DEFINE_TEST(modprobe_show_alias_to_none,
},
.output = {
.out = TESTSUITE_ROOTFS "test-modprobe/show-depends/correct-psmouse.txt",
- });
+ },
+ .modules_loaded = "",
+ );


static noreturn int modprobe_builtin(const struct test *t)
@@ -131,7 +133,9 @@ static DEFINE_TEST(modprobe_softdep_loop,
[TC_UNAME_R] = "4.4.4",
[TC_ROOTFS] = TESTSUITE_ROOTFS "test-modprobe/softdep-loop",
[TC_INIT_MODULE_RETCODES] = "",
- });
+ },
+ .modules_loaded = "btusb,bluetooth",
+ );

static noreturn int modprobe_install_cmd_loop(const struct test *t)
{
@@ -156,6 +160,7 @@ static DEFINE_TEST(modprobe_install_cmd_loop,
{ "MODPROBE", ABS_TOP_BUILDDIR "/tools/modprobe" },
{ }
},
+ .modules_loaded = "snd,snd-pcm",
);

static noreturn int modprobe_param_kcmdline(const struct test *t)
@@ -178,7 +183,9 @@ static DEFINE_TEST(modprobe_param_kcmdline,
},
.output = {
.out = TESTSUITE_ROOTFS "test-modprobe/module-param-kcmdline/correct.txt",
- });
+ },
+ .modules_loaded = "",
+ );


static const struct test *tests[] = {
diff --git a/testsuite/testsuite.c b/testsuite/testsuite.c
index 9877a64..f0fb393 100644
--- a/testsuite/testsuite.c
+++ b/testsuite/testsuite.c
@@ -20,6 +20,7 @@
#include <fcntl.h>
#include <getopt.h>
#include <limits.h>
+#include <dirent.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
@@ -528,12 +529,158 @@ fail:
return true;
}

+static int cmp_modnames(const void *m1, const void *m2)
+{
+ const char *s1 = *(char * const *)m1;
+ const char *s2 = *(char * const *)m2;
+ int i;
+
+ for (i = 0;; i++) {
+ char c1 = s1[i], c2 = s2[i];
+ if (c1 == ',')
+ c1 = '\0';
+ if (c1 == '-')
+ c1 = '_';
+ if (c2 == ',')
+ c2 = '\0';
+ if (c2 == '-')
+ c2 = '_';
+
+ if (c1 == '\0' && c2 == '\0')
+ return 0;
+ if (c1 != c2)
+ return c1 - c2;
+ }
+}
+
+static const char ** read_expected_modules(const struct test *t, int * count)
+{
+ const char **res;
+ int len;
+ int i;
+ const char *p;
+
+ /*
+ * Store pointers to elements of t->modules_loaded into res
+ * (comma is considered equivalent to NUL)
+ */
+ if (t->modules_loaded[0] == '\0') {
+ *count = 0;
+ return NULL;
+ }
+ len = 1;
+ for (p = t->modules_loaded; *p; p++)
+ if (*p == ',')
+ len++;
+ res = malloc(sizeof(char *) * len);
+ if (!res) {
+ perror("malloc");
+ *count = -1;
+ return NULL;
+ }
+ i = 0;
+ res[i] = t->modules_loaded;
+ for (p = t->modules_loaded; *p; p++)
+ if (*p == ',')
+ res[++i] = p + 1;
+ *count = len;
+ return res;
+}
+
+static char ** read_loaded_modules(const struct test *t, int * count)
+{
+ char *dirname;
+ DIR *dir;
+ struct dirent *dirent;
+ int i;
+ int len = 0;
+ char **res = NULL;
+
+ /* Store the entries in /sys/module to res */
+ dirname = malloc(PATH_MAX + 1);
+ if (!dirname) {
+ perror("malloc");
+ *count = -1;
+ return res;
+ }
+ snprintf(dirname, PATH_MAX, "%s/sys/module",
+ t->config[TC_ROOTFS] ? t->config[TC_ROOTFS] : "");
+ dir = opendir(dirname);
+ /* not an error, simply return empty list */
+ if (!dir)
+ goto out_dirname;
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0] == '.')
+ continue;
+ len++;
+ }
+ res = malloc(sizeof(char *) * len);
+ if (!res) {
+ perror("malloc");
+ len = -1;
+ goto out_dir;
+ }
+ rewinddir(dir);
+ i = 0;
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0] == '.')
+ continue;
+ res[i] = strdup(dirent->d_name);
+ if (!res[i]) {
+ for (i--; i >= 0; i--)
+ free(res[i]);
+ free(res);
+ res = NULL;
+ len = -1;
+ goto out_dir;
+ }
+ i++;
+ }
+out_dir:
+ closedir(dir);
+out_dirname:
+ free(dirname);
+ *count = len;
+ return res;
+}
+
+static int check_loaded_modules(const struct test *t)
+{
+ int l1, l2, i;
+ const char **a1;
+ char **a2;
+ int err = false;
+
+ a1 = read_expected_modules(t, &l1);
+ if (l1 < 0)
+ return err;
+ a2 = read_loaded_modules(t, &l2);
+ if (l2 < 0)
+ goto out_a1;
+ /* TODO: Report which modules are missing/superfluous */
+ if (l1 != l2)
+ goto out_a2;
+ qsort(a1, l1, sizeof(char *), cmp_modnames);
+ qsort(a2, l2, sizeof(char *), cmp_modnames);
+ for (i = 0; i < l1; i++)
+ if (cmp_modnames(&a1[i], &a2[i]) != 0)
+ goto out_a2;
+ err = true;
+out_a2:
+ for (i = 0; i < l2; i++)
+ free(a2[i]);
+ free(a2);
+out_a1:
+ free(a1);
+ return err;
+}
+
static inline int test_run_parent(const struct test *t, int fdout[2],
int fderr[2], int fdmonitor[2], pid_t child)
{
pid_t pid;
int err;
- bool matchout;
+ bool matchout, match_modules;

/* Close write-fds */
if (t->output.out != NULL)
@@ -578,16 +725,21 @@ static inline int test_run_parent(const struct test *t, int fdout[2],

if (matchout)
matchout = check_generated_files(t);
+ if (t->modules_loaded)
+ match_modules = check_loaded_modules(t);
+ else
+ match_modules = true;

if (t->expected_fail == false) {
if (err == 0) {
- if (matchout)
+ if (matchout && match_modules)
LOG("%sPASSED%s: %s\n",
ANSI_HIGHLIGHT_GREEN_ON, ANSI_HIGHLIGHT_OFF,
t->name);
else {
- ERR("%sFAILED%s: exit ok but outputs do not match: %s\n",
+ ERR("%sFAILED%s: exit ok but %s do not match: %s\n",
ANSI_HIGHLIGHT_RED_ON, ANSI_HIGHLIGHT_OFF,
+ matchout ? "loaded modules" : "outputs",
t->name);
err = EXIT_FAILURE;
}
diff --git a/testsuite/testsuite.h b/testsuite/testsuite.h
index 97183cd..f2a75e5 100644
--- a/testsuite/testsuite.h
+++ b/testsuite/testsuite.h
@@ -95,6 +95,8 @@ struct test {
*/
const struct keyval *files;
} output;
+ /* comma-separated list of loaded modules at the end of the test */
+ const char *modules_loaded;
testfunc func;
const char *config[_TC_LAST];
const char *path;
--
1.7.3.1
Lucas De Marchi
2014-02-28 06:32:40 UTC
Permalink
Post by Michal Marek
Add a ->modules_loaded member to struct test, which is a comma-separated
list of modules that should be present after the test finishes. Both
missing and excess modules cause an error.
---
testsuite/test-init.c | 1 +
testsuite/test-modprobe.c | 13 +++-
testsuite/testsuite.c | 158 ++++++++++++++++++++++++++++++++++++++++++++-
testsuite/testsuite.h | 2 +
4 files changed, 168 insertions(+), 6 deletions(-)
diff --git a/testsuite/test-init.c b/testsuite/test-init.c
index 63b6501..d2aa4bd 100644
--- a/testsuite/test-init.c
+++ b/testsuite/test-init.c
@@ -74,6 +74,7 @@ static DEFINE_TEST(test_insert,
[TC_ROOTFS] = TESTSUITE_ROOTFS "test-init/",
[TC_INIT_MODULE_RETCODES] = "bla:1:20",
},
+ .modules_loaded = "ext4",
.need_spawn = true);
static noreturn int test_remove(const struct test *t)
diff --git a/testsuite/test-modprobe.c b/testsuite/test-modprobe.c
index 637d363..c3ef31e 100644
--- a/testsuite/test-modprobe.c
+++ b/testsuite/test-modprobe.c
@@ -91,7 +91,9 @@ static DEFINE_TEST(modprobe_show_alias_to_none,
},
.output = {
.out = TESTSUITE_ROOTFS "test-modprobe/show-depends/correct-psmouse.txt",
- });
+ },
+ .modules_loaded = "",
+ );
static noreturn int modprobe_builtin(const struct test *t)
@@ -131,7 +133,9 @@ static DEFINE_TEST(modprobe_softdep_loop,
[TC_UNAME_R] = "4.4.4",
[TC_ROOTFS] = TESTSUITE_ROOTFS "test-modprobe/softdep-loop",
[TC_INIT_MODULE_RETCODES] = "",
- });
+ },
+ .modules_loaded = "btusb,bluetooth",
+ );
static noreturn int modprobe_install_cmd_loop(const struct test *t)
{
@@ -156,6 +160,7 @@ static DEFINE_TEST(modprobe_install_cmd_loop,
{ "MODPROBE", ABS_TOP_BUILDDIR "/tools/modprobe" },
{ }
},
+ .modules_loaded = "snd,snd-pcm",
);
static noreturn int modprobe_param_kcmdline(const struct test *t)
@@ -178,7 +183,9 @@ static DEFINE_TEST(modprobe_param_kcmdline,
},
.output = {
.out = TESTSUITE_ROOTFS "test-modprobe/module-param-kcmdline/correct.txt",
- });
+ },
+ .modules_loaded = "",
+ );
static const struct test *tests[] = {
diff --git a/testsuite/testsuite.c b/testsuite/testsuite.c
index 9877a64..f0fb393 100644
--- a/testsuite/testsuite.c
+++ b/testsuite/testsuite.c
@@ -20,6 +20,7 @@
#include <fcntl.h>
#include <getopt.h>
#include <limits.h>
+#include <dirent.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
return true;
}
+static int cmp_modnames(const void *m1, const void *m2)
+{
+ const char *s1 = *(char * const *)m1;
+ const char *s2 = *(char * const *)m2;
+ int i;
+
+ for (i = 0;; i++) {
+ char c1 = s1[i], c2 = s2[i];
+ if (c1 == ',')
+ c1 = '\0';
+ if (c1 == '-')
+ c1 = '_';
+ if (c2 == ',')
+ c2 = '\0';
+ if (c2 == '-')
+ c2 = '_';
+
+ if (c1 == '\0' && c2 == '\0')
+ return 0;
+ if (c1 != c2)
+ return c1 - c2;
+ }
+}
+
+static const char ** read_expected_modules(const struct test *t, int * count)
There's one extra space there... It'd the first time " ** " and " * "
would appear in the codebase.

The rest of the review is more about doing less allocations, but since
this is in the testsuite, I'm willing to apply as is if you prefer.
Post by Michal Marek
+{
+ const char **res;
+ int len;
+ int i;
+ const char *p;
+
+ /*
+ * Store pointers to elements of t->modules_loaded into res
+ * (comma is considered equivalent to NUL)
+ */
+ if (t->modules_loaded[0] == '\0') {
+ *count = 0;
+ return NULL;
+ }
+ len = 1;
+ for (p = t->modules_loaded; *p; p++)
+ if (*p == ',')
+ len++;
+ res = malloc(sizeof(char *) * len);
+ if (!res) {
+ perror("malloc");
+ *count = -1;
+ return NULL;
+ }
+ i = 0;
+ res[i] = t->modules_loaded;
+ for (p = t->modules_loaded; *p; p++)
+ if (*p == ',')
+ res[++i] = p + 1;
+ *count = len;
+ return res;
+}
+
+static char ** read_loaded_modules(const struct test *t, int * count)
+{
+ char *dirname;
+ DIR *dir;
+ struct dirent *dirent;
+ int i;
+ int len = 0;
+ char **res = NULL;
+
+ /* Store the entries in /sys/module to res */
+ dirname = malloc(PATH_MAX + 1);
+ if (!dirname) {
+ perror("malloc");
+ *count = -1;
+ return res;
+ }
you can do this on stack like we do everywhere else for non-recursive functions.
Post by Michal Marek
+ snprintf(dirname, PATH_MAX, "%s/sys/module",
+ t->config[TC_ROOTFS] ? t->config[TC_ROOTFS] : "");
+ dir = opendir(dirname);
+ /* not an error, simply return empty list */
+ if (!dir)
+ goto out_dirname;
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0] == '.')
+ continue;
+ len++;
+ }
+ res = malloc(sizeof(char *) * len);
+ if (!res) {
+ perror("malloc");
+ len = -1;
+ goto out_dir;
+ }
+ rewinddir(dir);
+ i = 0;
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_name[0] == '.')
+ continue;
+ res[i] = strdup(dirent->d_name);
+ if (!res[i]) {
+ for (i--; i >= 0; i--)
+ free(res[i]);
+ free(res);
+ res = NULL;
+ len = -1;
+ goto out_dir;
+ }
In the first loop you could store the total size and then allocate
only one big string. Then in the second loop you just copy d_name to
the buffer. Just make sure not to extrapolate the size allocated in
the previous loop. Then you don't need all the "free in loop code
above and below.
Post by Michal Marek
+ i++;
+ }
+ closedir(dir);
+ free(dirname);
+ *count = len;
+ return res;
+}
+
+static int check_loaded_modules(const struct test *t)
+{
+ int l1, l2, i;
+ const char **a1;
+ char **a2;
+ int err = false;
+
+ a1 = read_expected_modules(t, &l1);
+ if (l1 < 0)
+ return err;
+ a2 = read_loaded_modules(t, &l2);
+ if (l2 < 0)
+ goto out_a1;
+ /* TODO: Report which modules are missing/superfluous */
+ if (l1 != l2)
+ goto out_a2;
+ qsort(a1, l1, sizeof(char *), cmp_modnames);
+ qsort(a2, l2, sizeof(char *), cmp_modnames);
+ for (i = 0; i < l1; i++)
+ if (cmp_modnames(&a1[i], &a2[i]) != 0)
+ goto out_a2;
Isn't the order important? If we take the order into account the code
could be even simpler because we don't even have to store the char **.
Just build the second string with ',' as separator and strcmp() them.


Lucas De Marchi
Michal Marek
2014-02-28 06:40:47 UTC
Permalink
Post by Lucas De Marchi
Post by Michal Marek
+ qsort(a1, l1, sizeof(char *), cmp_modnames);
+ qsort(a2, l2, sizeof(char *), cmp_modnames);
+ for (i = 0; i < l1; i++)
+ if (cmp_modnames(&a1[i], &a2[i]) != 0)
+ goto out_a2;
Isn't the order important? If we take the order into account the code
could be even simpler because we don't even have to store the char **.
Just build the second string with ',' as separator and strcmp() them.
The readdir() order is not defined. We could change the preloaded
init_module to build another list of modules that maintains order, but
I'm not sure if it's worth it. I will simplify the allocations as you
suggest.

Michal
Michal Marek
2014-02-27 22:52:13 UTC
Permalink
Store the file and elf pointer in the kmod_module structure and have it
freed together with the module.
---
libkmod/libkmod-module.c | 27 ++++++++++-----------------
1 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
index 3d3325f..a6c8a6e 100644
--- a/libkmod/libkmod-module.c
+++ b/libkmod/libkmod-module.c
@@ -790,8 +790,7 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod,
int err;
const void *mem;
off_t size;
- struct kmod_file *file;
- struct kmod_elf *elf = NULL;
+ struct kmod_elf *elf;
const char *path;
const char *args = options ? options : "";

@@ -804,13 +803,13 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod,
return -ENOSYS;
}

- file = kmod_file_open(mod->ctx, path);
- if (file == NULL) {
+ mod->file = kmod_file_open(mod->ctx, path);
+ if (mod->file == NULL) {
err = -errno;
return err;
}

- if (kmod_file_get_direct(file)) {
+ if (kmod_file_get_direct(mod->file)) {
unsigned int kernel_flags = 0;

if (flags & KMOD_INSERT_FORCE_VERMAGIC)
@@ -818,19 +817,16 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod,
if (flags & KMOD_INSERT_FORCE_MODVERSION)
kernel_flags |= MODULE_INIT_IGNORE_MODVERSIONS;

- err = finit_module(kmod_file_get_fd(file), args, kernel_flags);
+ err = finit_module(kmod_file_get_fd(mod->file), args, kernel_flags);
if (err == 0 || errno != ENOSYS)
goto init_finished;
}

- size = kmod_file_get_size(file);
- mem = kmod_file_get_contents(file);
-
if (flags & (KMOD_INSERT_FORCE_VERMAGIC | KMOD_INSERT_FORCE_MODVERSION)) {
- elf = kmod_elf_new(mem, size);
+ elf = kmod_file_get_elf(mod->file);
if (elf == NULL) {
err = -errno;
- goto elf_failed;
+ return err;
}

if (flags & KMOD_INSERT_FORCE_MODVERSION) {
@@ -846,7 +842,10 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod,
}

mem = kmod_elf_get_memory(elf);
+ } else {
+ mem = kmod_file_get_contents(mod->file);
}
+ size = kmod_file_get_size(mod->file);

err = init_module(mem, size, args);
init_finished:
@@ -854,12 +853,6 @@ init_finished:
err = -errno;
INFO(mod->ctx, "Failed to insert module '%s': %m\n", path);
}
-
- if (elf != NULL)
- kmod_elf_unref(elf);
-elf_failed:
- kmod_file_unref(file);
-
return err;
}
--
1.7.3.1
Lucas De Marchi
2014-02-28 06:39:12 UTC
Permalink
Post by Michal Marek
Store the file and elf pointer in the kmod_module structure and have it
freed together with the module.
---
libkmod/libkmod-module.c | 27 ++++++++++-----------------
1 files changed, 10 insertions(+), 17 deletions(-)
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
index 3d3325f..a6c8a6e 100644
--- a/libkmod/libkmod-module.c
+++ b/libkmod/libkmod-module.c
@@ -790,8 +790,7 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod,
int err;
const void *mem;
off_t size;
- struct kmod_file *file;
- struct kmod_elf *elf = NULL;
+ struct kmod_elf *elf;
const char *path;
const char *args = options ? options : "";
@@ -804,13 +803,13 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod,
return -ENOSYS;
}
- file = kmod_file_open(mod->ctx, path);
- if (file == NULL) {
+ mod->file = kmod_file_open(mod->ctx, path);
+ if (mod->file == NULL) {
err = -errno;
return err;
}
- if (kmod_file_get_direct(file)) {
+ if (kmod_file_get_direct(mod->file)) {
unsigned int kernel_flags = 0;
if (flags & KMOD_INSERT_FORCE_VERMAGIC)
@@ -818,19 +817,16 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod,
if (flags & KMOD_INSERT_FORCE_MODVERSION)
kernel_flags |= MODULE_INIT_IGNORE_MODVERSIONS;
- err = finit_module(kmod_file_get_fd(file), args, kernel_flags);
+ err = finit_module(kmod_file_get_fd(mod->file), args, kernel_flags);
if (err == 0 || errno != ENOSYS)
goto init_finished;
}
- size = kmod_file_get_size(file);
- mem = kmod_file_get_contents(file);
-
if (flags & (KMOD_INSERT_FORCE_VERMAGIC | KMOD_INSERT_FORCE_MODVERSION)) {
- elf = kmod_elf_new(mem, size);
+ elf = kmod_file_get_elf(mod->file);
if (elf == NULL) {
err = -errno;
- goto elf_failed;
+ return err;
}
if (flags & KMOD_INSERT_FORCE_MODVERSION) {
@@ -846,7 +842,10 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod,
}
mem = kmod_elf_get_memory(elf);
+ } else {
+ mem = kmod_file_get_contents(mod->file);
}
+ size = kmod_file_get_size(mod->file);
err = init_module(mem, size, args);
err = -errno;
INFO(mod->ctx, "Failed to insert module '%s': %m\n", path);
}
-
- if (elf != NULL)
- kmod_elf_unref(elf);
- kmod_file_unref(file);
-
return err;
}
Ack.

Lucas De Marchi
Michal Marek
2014-02-27 22:52:10 UTC
Permalink
There is no check if the correct flags are passed to finit_module, but
at least we cover the respective code path in kmod.
---
.../4.4.4/kernel/drivers/input/mouse/psmouse.ko | Bin 0 -> 95649 bytes
.../force/lib/modules/4.4.4/modules.alias | 3 ++
.../force/lib/modules/4.4.4/modules.alias.bin | Bin 0 -> 101 bytes
.../force/lib/modules/4.4.4/modules.dep | 1 +
.../force/lib/modules/4.4.4/modules.dep.bin | Bin 0 -> 72 bytes
.../force/lib/modules/4.4.4/modules.devname | 1 +
.../force/lib/modules/4.4.4/modules.softdep | 2 +
.../force/lib/modules/4.4.4/modules.symbols | 1 +
.../force/lib/modules/4.4.4/modules.symbols.bin | Bin 0 -> 12 bytes
testsuite/test-modprobe.c | 23 ++++++++++++++++++++
10 files changed, 31 insertions(+), 0 deletions(-)
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/kernel/drivers/input/mouse/psmouse.ko
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.alias
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.alias.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.builtin.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.dep
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.dep.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.devname
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.softdep
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.symbols
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.symbols.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/force/proc/modules

diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/kernel/drivers/input/mouse/psmouse.ko b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/kernel/drivers/input/mouse/psmouse.ko
new file mode 100644
index 0000000000000000000000000000000000000000..4eac2a3da3230435e7b21074f2a2681648cafc5e
GIT binary patch
literal 95649
zcmeFa4SZC^)jxhW36P+8qoSf!S!>Wx6%$_pQL|(hH=1ZFq}o;tAz2`jw<f#1sOZw&
z)m+yIty+Eh@|53G?L%9C&yTh?V$`q+ngol8SX-?x1XSELD%6+oqLTmjoSE63-6Rld
zf1m&V`9Izd<lcMc%$YN1&YU?jbMEY&uHso~Hk+X?n{kDacvDcru)mskF5t%k!)}~r
zWZ-!`{-@*rRo9joUwpLQ*>mlcw=C+tYw`yhzxe45b)_p9UH&Os|KY&EfZKX^?nZN>
z(=f``|NY3`-PYFd_)9^+ZFRf5yNGOlBuclr?uR$7E^CWs8wQdcWe)2z#~gQy?~Nks
zi`nj$@@#kDg9&bHdzb5tbk309-?j_+02;w-TMShMDiLIK|B5$^_27NL=kc$2^Fm*_
zf5ls6zVGHoT)_{$*B6E7<YYd197JjU?&>^#`~CRD<MHuFv+cL5!9-?JcQ9uwRRb42
zD|tJ*f;sO4mf;ROJK_6|n;diJZd|Znia9aJsAcY!***@wmw8yB$q&UcE`?4|MPu9
zD!|t9+***@k&XS=P>Ngyi^b|c@?6WrYq+(8FoirCE7=coN+>Br4wyWK6fWw(7oGHvng
zW{PI3Yqu5fqH4?%v7_<RGHalXlmeWnA};3=j&7S6>if2}XYbCA_cP4aA5v*doEr?p
zn_Y^2$?o+hBlYE8E3hn4jL;Wq+8c_j0mpY7WkuA&v-4j^Ju>@pIQ`mi&bvgp*m{qd
zEuI$j&UObj+T4N9$9X-)Ejd5CHhhsp*{e`|J;m1h#n!=MOMpTVU#q(%<7cQ~=J)aN
z9FZj1J8pKAljefHz!#;2BHpd45Fh8tk8oQFd|f{75NW?-PLcH~$;W#k^FWGabwy9-
zw&`5|KHWpxyvO=)%`m)26@{HS6T-(?*-UlrMo#bh)SOsglyQrHknOhS?r~e66kDEs
zMb=*g&2W>w*xHGHGB7*W9iF?***@CFOfeF`J>3+K9*(Y*@Hggw*KaBDSM;X
zss+gxm?Y$***@b!^$|d*ouN?6f{A%mgutl-47>2%b21l#4ecpToC?***@VZ$N_MX65
z6_ZN8!@dt7n}Pcuh8`***@_g=6aCaE|0?>chokSd4m#G)LrL!N4VhGrmRs}O-7|Bk
***@Phtsn;9bOiKjF(***@Gc*ZLPOBq7(h*B{^hYv2asSRcwtEa^LjTMFD9xL-fB<++
za|C*A-t?|9hP(TRWDMxS<HO>***@of6v+b5#8~sUJpN%5S-_6WhcP#ytX2g(po4fli
zsuEpzB<ab=^@+!3`Pg+AnT~Yetw|)VO+2nkJVp|***@S#dLjij7t@&Lu^9;wja+XE#
z(}M#8=qFkoqiIOVFoW+P1<E4qmyn4g5QTl~&WQC;T9Q4HsuSEMH56Jy%1K)3uwL<^
zN%lr>KrV;b`WZCEG4PjU1te;E|***@XggQWKicVGjXTkmOjVq@z)(;dDlvrX9S(!Bf#
zEZb^#_uY&J0rmYA^})Nc%zaz&UMA_Cry<74XvpU8O7jT*2UvbdTiCO}fQ|UM&fVQf
zEyT?Oy3?k6&xIX!2Rd^D`^Ne9v>%}1r<*LP!97OWYw)Q0T}y_4uCi4d^CNv9Df=Mp
zaHcyvYeINx)***@Ie^aA~F-K-t={IZw6^$p12#ShICQ9~JLDBmwusAdwiK#MnW@
z(g(uGU?7%lh~^T__!-8Qx4K+!^>EE(4jO3*STz)|Q~*CtgHU)(ev1JZg44yATqwrj
z8Du&WZOU(E+gj>mnMHx8#fa;jPLDzdCdS9x{78x-v7Ggxx$or#tMy^KZ~cPRWRIom
zk>9U79?_4Xq$yP!vc5wChp%r2*Vha^iYh7cBubLrAtc8mx{w^Oa~V^Jto%?SBWX(c
zjb=Qd&*BmOO=(_2syPX%PS&***@MECoN%Gqw<QeZ^n;=i6KN#<=eh1tg-&;l2myS8b
zEeo?}W0ZGyZ$!;uMnA|#***@HqLW4wy5&gt$O=pTSl?Lr*mk^YD<>y4n_XcHa
zBh><uQmZtfRu_?s`n~5Bh0ApBt}IhJcikanEsDBBsvhW9+0q*jy-T-8&==J|1D8|z
zHt#v%C&;@RxSuR|_>ar*H$Dck$3$Lhem}FO`mD02Wz0B;Qh%d<Rtz~&FO!0!***@6
z3SD>***@_LksU|7EfUfo+W(!Iw9Bi?Z{GQ3$cV7=j=`!0Z&+>i2<Eb?E6vvXQectv*H
z`*ye7kn3LAO*Ln7)~n<dh~C4VK}vn8t)weJKES~JG!***@GXqc2pqAmiwJQ(<F~gPr
zjx%}8Cs1HtnlFmGJMfeNbVDM0Vfb&$cDID*07#wpev-***@_&OC5Xmp3U$<%Xdttg
zSST8TrqgU?wsZpSFw+g+e>(~#$Jsq?tJ`9j8M=h*B=IDuIRcyUItnZp-2tj7UG4;9
zvL2GWySuQI5v;&I+?9z2IhJwkZI}}pe|W$kqcexpNKONa!wWN~K14D!fA|UgZM~Z;
zcT4FP{sT7iuDvLH#%MD*0N4zS$Y;}gI=8nOyag|2Yq*!vjy8io!)suNt&JFN$N#t@
zNF3+|51E`6iKPLT8Pt-GRav*j5~+b5pq0M~>NehN?SW{iz>eOGNz_i0JMy=+qXTM%
z1$Ih&-??qXMpAPAru=RB{YpjGQ%-a^bhg!!4YM`Uu_Jxu4ne%{nYjO9w%-3Xu&tL?
z?ug(X*k51<Nu=hgH2e*1GK0t99_wRiLq8<Fw&MXsd9v1{6ZK-jkx<41Lne<&BnPM+
zVyi$-*(1)t*a>>+i42@<^#pngY>`YB8f3*pZU&LnkytwO!X+V>l7Zwiuqm^dDa57<
***@kfbp?`yKf1l^rqYW~^E{eED2m#y3%!QBi|qV-Z>=NQf$*pZ0>C%?qx
zRI?L(5&(%v3LrzPk4o0$Gb)iRSXd}nfV`=!iLxyFpt1z^G+-<HHw6A@@RL-*EDb+(
z{lOh(BTU0M=aB|G;m-)u3RXN(nj^Ka7YS?D3nRM+OAf`B502?yIkVf^***@g2}R7{
zkHLnczY7zF$HWsR3=iVT9WE?g3+P;E?OMQo0{k%B2N=2~<$-+}%J7)Mzfw-Kb*lrG
z#@***@x6HWKSh6k>***@WCnkW{K(`R=YNU}fXxgp0z?`fa+ZWai8dZUGp`orBMkP#
z9!%zHG5_*mGUtEl1LQ?}-wYcDYF?8D9<Eg1X7=~lu0;q5l}dAWchIABVwL$cojs1g
zE}PqQZiP+N>~5S`>~_#6dafWubOsyDFxfkI_yi`nvg1?Ye%ec>m9EUGFvl+RX=R|*
zI*?w5G%3=m=5LD|)Rv}s5Q8wmWGOTg+#H}P#%0Bpmn$9n3%U<+P16j9P?MGc7;D3y
zgufdO_`xqF-UE1bB$}S6OFGlT2w_^al=FM2ki)+(&Ahu9uMU6I2749!12_QhJ8*+>
zT;zX>I{P?Z#*E*3zb`6-3B&g2ANLImpqS8Q$O?3}^{rbqy%72!G%3~xl}}|qWFRYP
zUo1qaVq`)WJLKS$JSqv<tWRW@$`yN*yBPX!^7_Q*G~PR`Pu<}=vCPzcE$62p(rNvQ
z`iW#***@G2VE{q!bupK?b#~q1FT7u6#xb(yeNtf<***@_%{VmyXQrZ_H;YdhLY
zPOxb0XRyBp`k#Ik`Wc6zFYHSJ1l3FSMa=kMUtZ<a9p9c}YXz2L{swD<^_mhfSqMdn
***@BtuRYIbZ0_wdl>j4zECOhM$0TWf}Nyn`#tU&w1|@hN-B#i`HY|(%n!LzCCBH
zE59ELRNkW;{-<-6BVm;H=3;Ai^w+***@w48JRukLV3&%o?FBIU52^_~*g_n{Z#!0zaF
zpp}IB>1A(p8@*J1s?S+j<Hfj#g8Ke9_|khUR;r4y2sRBF`z+O-kOwXF!Q+><7M>p#
z^kkF9<+G7%2e)*Y<bOrcC^Og!VHdY7&gNl=dJW#;IkSck!}JQr^A@;q>qz||hfzQq
z*cx|w1&(ZVm8B%~j`x(Ja4?6~KsXb`JFt~x{08*}eVR^MBvx(3JpEAm7xO~oLOz4!
z@@(`***@4pxaA4*!R63|Hc-QoEB`~Ts<g{REl=n40ujTL1SggiSpSuz
zk}4tw#z7fKZCK_<JN&ojkkFqb(&4~bB^wrKN$5lG;-YX!lh|$&vnopICwXyV4Hi9B
zblU{V?&yjyQp7uG<dS-GM3nm;i~ECv<o;arH=jf9=RodiJq6lVAbKR(vtH_o5I^_K
z;_%XSy3_(st%Eeuytz7X=uRryy(oOgGIzJD2f3hG+!OC0p^~>$+;ZERHri}yXA2hy
zti`jfq@^AcJf+KK=(hlN1zISn7)w3(--w)Du5KHRNgn~~c$%glDH=_Q{|4{|Dwx~Y
z5%|F7dku|%`p8|***@Z_L1o9>WawvmIH{6a5pMk64u60#8vb(uhOz
zu6dBM|0&`fuE%V=#HLBP`&V=uzWdtAda6SEemmHHxGh&tbl-ktd=bQv&ibr!***@BCm
zNP91V4e2{U%y(J?1akzQwK=Et-Z8}=u<$A****@S_Sw9z!x1wdbahLASyVapI0_)H
z`=UwxQEn;GBG4R+***@I))Nb>4ON20^-Y5Z^N!;ga!;LB3{z3Db=BhA{_;NPe4sbI
z*(EF%kS96<A7Y*O%Y(j`;mTkM#o8*(inJF1G2!o9TjeGZ*RKr2Y<AlK{2Vc`V1n#B
zn8ZeQ{x<)LgTM7=`d19tPTsb6+a_x(Eh+}VSA6^~ASH(%`o5<3G>+4jiEocoZn(Wp
z+7?-{FY3Y$2Dr|51il!(<YFwDv}J*q8TtkOT3d(i0L(9CFz@~e(7IeNlE!BPVl(gl
z6(Dh=ER{~$bIuaH8dby-x=J~oz=zv<OLe*@Vo<9UFB&{?G=sN6{t&QL7GXhz%ObHw
ztY+|***@XN|2QB?~)1M48m>XF%V)75R;RyL^6hy#mwPdr-Co4P)aqDvmDJ?%+S3c
***@B~z-3)G`o|42d75GQiz!%***@Nrz%@;&***@wPZTiOMu}+o<oGjFd_etgl+*;+D&2*
zB{2cCfGu`6r=<vVL6j<H22V#1N#?&;rkpw`<pQMe&LCynhp{X<<MEUX39%?&8<hO%
zdq^HDliLO*ze34J$>g66N^V6m)bSV+gvo+f3LIY7(u`Q5+9{P<O4Lcl#QNofsNYD*
zWK>xsNRF+*AJH$V#Bp5WD1xo-yC(rZhT$J#NQ?adx}y|6HXfKM{m)KAx!b~cQ;XdX
zOfoT9!-$U^g=|{uagU;b-yOn=b1<hAQWQ<&4%{&TkC|u-YSX-T2L_75t_kF^9H(5O
zfvw=W`81#)$xcb*fGeP50Cj|2Mv3)NGf%ZK`<XS$|J3^^EWJ5EQ$#Ef;***@q
zL$~9tD12>Zam(*`f?t65;&50j#dYEZD_O<ifbdhqpyh4}%t1jV*10)F7S@*+IJ&Xj
zd91<rQ_^TML{p#z4kVr$4(w6Sr_&-|>co|Jzn><x)D}&UYBx{FsNh%?ULg`Y?9hkM
z>hQ$`Wt%|KIS#|TsHNGuFIu$=va-5jW08l(eO~_UTgB`9H2x?1=VTq>WC`D#+^$#2
zEOI9r>>o`-`^aU6{B2KVg9jSuC$wz^*X>*VYWfk1z&|q|=xml|%4{u*pn1TQHzT;s
zd#z)`r{FC<z)IyMKZ||w*`J`Ynj`A8pe;j94&?ZOeqU_uVwT-4g^MuAScQw+El+_T
z7+$<IU=B9VfSTjJ3_#%~6txuR<hI-KD(C)aUaKh+8L3T~oYFKQjusK-K-L)***@L
zE#7-qd+83V+YEg{BvGkzgh6aR6Xe7c6;(un({%***@6=AdWy79gd_+Q5jUWoX>HbQ
zr4DK|***@buhHj{JzbRa16Uw9GHR{}E_^qTIFE(f8bL1U=)-M|JJ7;2;u?e^#CDME
zw#t<3>k?_qdKh_-dpy`(b%$5<NbJ~23Hv;Rf133V7?9tw%_uM&8)!b)_oT8PBtkbK
zyv+zSAKxN8fztR;F5K55Ym4w^SL}mH!65Lr=&H9M5mLG5utrQ)Mf60+WiIsl1E{H}
z3}K+^=K-Ur<$;{lNLWvfn%gStafi!#ilzym8QcPBAZqh|S8Ar^S|^)dw7ssdVb{8%
zl~3oaMHafu(2uwo?<ZT}xU9_ZJ)+z?%zOLJm*W?toSkr3lRQ!BHFQVN(b3RD^#u~T
zs8e7?#PFU1?qOqos9Jw4gff6#U-$`B=2P%5Y3GX^_6YGv8WNudeT!5kT!>v$Ucq5i
zKV~ONwp{BE(f+Ep6kAdgi>;5S5kG-bOP2a~R1V%Z!k8zku&%n#n!!A-Wy&;6*E1;(
zG>|IOZOxWbuCQ-C6><j(rTceM3oEL8Hufa6a<ys$Y)6yg#U23=&lJECdzhY)n?)nK
z3cXGy_k0?0*Bv1f7Hc59mi06y2wckr+t=w1`(+Ojt_}-7_8TCl%zu;D2eicjVM2ow
z&=N&~XIPWW;8<!GVHhzD-~v;Z4QM(HPFXC1qi|piWy9(zn)tGTt&V5FIQe$vv=#t^
z`(AV>>aXiB?aVo?XngW7{ApRi?SeqG<Q<~2tWAtXWOTPjEeK^Q4|%@-***@L&Nd5EM
zw8rv|_c&UAP>MN<*B_9XX8PX+BQX!y<***@lC3-J2Nv(eW+K>BGiUGNdR4zH`}qV+nt
zA31?}RkM}TX!(%0PP<&Y$72>D25-!dXwD#KBy%***@i=*~Fj%***@jeJ7qEMkTF;?pF
zL^***@a-jE6tIAB}qfQ#YGDVo;l^@O(J*_-1qAB+Sej%Gl;j=+`-M>AjrW-Biplz?w&
zis;j!***@IrMBTDk(J{DX{BvCcs-j+>cYkm?&H%;qR9P4qoRDkAYN{p6Z|H*wB5q
z7mAPz1u<J29MKn`jT{f=cRLD1TB%C=J*P1_jUM&DccTxgd?arQ2Kx&MJxSmbSl|?O
zsK#X}***@VN%TRm>xV5yA(D{86qwYpYQOma2t*;m&5RmrJKLq4{-rnWO&E0Bz=y+
zQ&gYpmf*d>(d=_L`dwrFlxm|lDQ3sh$Ttw}#Sj87dOW%fllG1+4xfVzr)***@DhT
***@X{V9=`***@r*+~***@EzSe|4BDVgM##mpZC{U7_*0)-XZ;;<swcQXt3BrVu`)@6R
zQszejo%t+L3Ji_ov%D}l=MGGZie+yqeJ>859j!***@JN!*}TyJ&sQZQxKRy=Rd
z+UkCoJXE{c`m8&!?<((cr1p9rFF+hr*_*1)Q1<Alg5F<=9<LvulMX=_xrlZ~4&{jo
zIsb>^p(tFOW7ioeA_p02hUf`r4mpqpShJoF>@eLO?`OL^c4WFAUb%CC5Xhl+XFcy;
***@_8N*1xy|2d*+h4z%cRuzQ4om7H^;lu4Ap0E`F?YxY2|iE5^scbx!St{7pE
ziJB!iJdQZT1amCnZVa=z7n;P8ARsWwFd7VZM|3<WWSDoo3^6$RojIpqgX_CM0|pYt
zm?***@fs|X7Io8%*D_Yjf&Y0Hw|N6=>H%Gih9dzEqT-GoU{kY9Xmz^cA6dg(rw$a
zo_APta;8!Xb?h9KwUy=xGh!7WhVdCyY=E<JmZ||QLlEhpBu)OBlCv&iYHN%^B){yH
zI}H>G5kgwVlChHp%mEf`Hdj{E6uxMlVcylQs&KR{=Tt7o=N_&MDqsRnvZdY+=fCv*
znEQKD_t85}tPn*bUXApRCY)5sU&7NN`8^~mc}V%?CCTq1t!ik*7;R8-`***@7S
zv_{O<Z6xkoYJqcO15k^@`C+jhNF-qohpkTv1Ak`Hh<CNNwnb<X!VxY7!iS}>*Io_^
z^zCu9&pVb(=8Aoe4Spcf)XXZ`9KLpHcu8Jyc<}`6>APME^*=ce8;quFOSox9sNZS2
z4u+d9g5SZ<{f>@zPq4Zi9bZm#<!^EX-pzDbQ8p!E-)2DY=Clqtt$(OhYuugT#kq`9
z6n-FQ85A}QCk7$BSqRB1a9TB;<AD_Z{<#t-$T;Lp92G9x>~0x<y>-****@k4v1N#hZZ
z7g%~DHzynWXv=gZz<~KFhUZ+KT8YJdHGZEQAHRnfyR&&Uk>Vw2JYvd-Cx%opXG|`^
z9bSg1!N%gSJ-&ZOrh^7Oc)Reu6T5n9XD)d>74+>Xqt#Hw6j{#}hjZfui>$e&G?`8m
z!Sny5AqV=***@sAOessOW2TN7@>cMK_&GHXk7sEZKasukVcw3G)6NY$RZhxg6En3_-M
zg6_kB;wNM(Pez~z4rVN!jQASw;--9eWxv^a7a^GK4_w-dd;aTZU=X2&O#>Ui4{Rj&
z(0Y|N7`b2h52SgY_a8|2UO^?ITMaph(K88uGEq?9gY55B_UFH@%9Jb&Q?T$Kz`qC`
zf|y9WrFu0<KMVZpX}u>yIAh)`0=vFUa>1VejEs!;<Y9X<N8+gQH?Sp5_+Js}zgYi}
z!=-eC+RjH|$`{Jt23Oa7uoEpM=fdRr7CFL4=d{u4jT&jW8K3Mu5z9H30PHxYI42`1
z&4D2_vu%267G`ZY{p=O`6Lnadsi)WOVTuSkW)^Ar&4t}cki_~3g!770C;I;5e5bYJ
zP#iiZt7^;X(V&GaO}`vBIKESaFm!B#zQP|***@Wh0JA2}-b>THhAQb9D}r6jv89&`om
zPQ+amg=b}ANX#&Nb!#)t&?+!rw0BlEjc?wo^IvytfZ;Mok3htAto0hq+{-)jH*tX=
z6zXib-=M+x!43pYN>er~+g<tcBpxC=qDQ-@bvAaAp7O*e{=I}?iejr3EiG1zxB@#t
zS_Nf96xDWu!***@9^$DL{+F;;}`s3y_`qBgu=lU!-4mquKgI4Ap{y7x)j3GVgj7
z-JC2!0UQGx#!9pGkG)7IHzd<vV77Ld!AZQ@@***@Tb(O+(qh!g1JvWN2ZE)JT^U5~
z9L)RI0fy<MYdzhI!<CuwwE($^2mjdcBj_DGTOC#>LjA#TMqp>2qhnuM$APq$_Gi6>
zK{evc>TuAyrQtYZk5%$?VCNSI26_<SPFp0476Hl8&Nf5WfO)LcidOWVmVYp?^K-=5
zbnHsY`Z%yZ4TxrNVWz-Yo9R7Q2DqU)BNyD?3;KcH_Yfqt!-jacz)lp=nbp&=Gb3wj
zvnx`x*EPY&%*1pdu;***@7Gx&GV!SV%30r6xza6|***@8Aw8bz5C<IeYDaUD@!&u$***@5
z^)V#*E>b&s$G~X@>sHx1>-m*Cp<M=-k+sKiJ&skRod94N1og;HC=NW8U>+n;Z~;d&
z1>OS(cD%a-y$9Kg3@(KWYu>e-hX24m#4k4B9Zyi?eME4N)9MWLX3{h%64;r!cWa>6
zKi1WOX(dfj13L?{wpt$***@_N-2)6`>ZPEQFs8p7#WL(-?rZN+TfLe+L1W2qYC7
z1rB8Yl;R<^h`mofijWhsUWrygDp&RSl{@***@x`!***@haR4bKDF_G+L=vSmO0dcv
zM=f^db?i)I0j{UFjF%2%J#UpgO^Tv4BkN<S7>Grl(BB0iL|AEEod~50IU%^PYdvIo
z-+pLJV8uF{dEai<os!JG9m4V7i}!BVTA*Ux5Op#f+&TAlB03)Pf;@l%`%X7kjp2t0
z=6!EL?_CJ+I5%9f4iTEj9v?h~^(9j0lsul45-wTaMzfV9AhbCXL2tDn7%o}c=0Zkg
z7}%^(I_3)FknRrCdUDx1hnPQwFN?l+U|=9Q<***@RavOQov=HwJWJ^QiN8u-W-{XWM@
zVG*GVM(IYUwI|swQU5uJmde7nZV~ENvF;@Q)NGG9(p^qWgB+I2c}HdbrhZo>yG=Ji
z<^vtfaxzCS!jU92%~B;}Vu!_v?_XpQcm5)<?@Litv!w_YO^lOVZf3$L!t@=Y+_>#z
z3mG?`LzEjqxnEM%ZvTZSH1-P3BjWLn=u#_pZbs{^Jn$_3nxRpcQ<Q{ja!Lg{*1FB$
ze;`Xy%QIVnz><L50O!p+F2EltA;6gIC2YeEAmndDu!6|TxG_&sd02RKghPHHy22}N
zcZL5H#AB%6ay?=ODMTmidYY!Bt6qYx)70i(=***@Qq9EUwR^S(*=OFQ<#dHj%W
z1~0(_zE^XFuwCL=YX(<>kOLpyn86(&<8CQkgr(}$ffbJocuxqI-gH?R3VQ-92M!Ei
zR*DB1U5usM=IGUXF-r}*nn@**?O{jYAZ06<=bX034E~a`?L)SoaJINkkLO$~)=D=9
z3(aetme`1A{SKEs?1pBKgSJwdXeky@*!76Zf+#E&h0F5I6Vh{Zg_<E7gkZ6_pu4vh
zS*{ynC%_6N+7I2EkX-o#=nt`Pl5Vr#=M1lS8uBokzd(DkELL?u7J(g*TMQsq%hEKN
zSD1#_E<iEAB*}&>JYz)ZK*w=lDB1g#BMZ-Ij;wz;***@c)kw@|Y1kFoAl1+***@M!jZd
zcDo+oN2_ctR})d&***@h7YA5y%***@oe8UCKB194UzMA89&vFimKGTM61xWS}~7QaXA?
z+qDV~JfURknIk9dR_|{+705}(D7KvH#&XHu)OPit+*yhGJc&eOFbYg<?C-Ej*ndB0
zGgpy$z)CZ8)0H1d^txZ7S`rXfj4)u7`+***@p_Qj6x(}8JHjOm6n;)NJFeg-K&j08
zrm~Kqp(wbNdP8U;+MFb9BM(H%m{eT|o)p^*E(0=ji8>9fr;vC#WS(`H{k~{DR-R$j
zsfr}Id3cRo#S?Gz-m;F^4rnJed+bkm5c0xcz60pZuFlv!Q1R8=52>Sa!@I-j#8K>r
zalH$>9_Jlb(8n0!nC7Z+SP_?bE$-7w7CFpoOBSJvEJ4W%6KIN~IC_afFDY3REn?*L
zv2SBvVYQ=W=@)^6N11o$;0>***@kFjKh}UelfzuPDUzNe;0{?-n@=|<N=6JAE4j9
zvyt=;k}x#y<Qw}w=x9N_Ijjf$***@H$Kc0rrykg=aJ(S(&_)q~k1Qf&4VfQn53DAtl^
zSXdep6sXWddaMvo^?k$Uk44W=BGFp!_ehF83{};d7G?@2D*6-31)CMSj*`P=t5x>s
z?Ubn!P}l&N)mi9kacx@+gJ9k_lgt8{)3N*jZTmf`YGB1Ybi=5*>euwfLo*Z)jKh_H
zrm<Be6-4=~WB&^{POU*>A3z}--7YUkLdr_mq)AwG>>!WJhW%96qD0zGq=}WkUbtYK
zS|eLfy12**ze%Pw#L7_>SJ-zG{FOUS1E+***@0m?7#4??Sdn6l#%-G94(~sYEYw
***@m$LXs3m(N7Cw(3BkXjipCZ*`0t=J6q!%JhibiJuoIi;U}Clv-M>dP8MRdGRiZ*R
zQ}V(E<&(6iAOOjHqQes;?3#yhF?PI4^_>I5F$OJjlW~WgZa^FbdXiM^eKa#>>U&~)
z(0u`<eja-TK&-}cr*w*~#@yX3o8U^MI|9$a#D6);_m-HPU>l|&_Gc&!L_3cJ2WyOP
***@Dtb!l9JGb*gx<}vR;m2S=J;-$&^Id0u****@k>o9RM6ft}QF*D--;U
zPplTg;0>0zzar;<)?RTw0K$f8p)40)>3YZcIbgsrLodK6$OsICUYNm&V5n_1nBwpY
z$I~z<1Kd~P$Y8Mx!z!%#A0RFjXG!-za7>XIIsiEKdF{^T+b~n%74sz-U4=!6A>19E
zi!c(ZdJAO^9~IxJm~Ah%dM5c%WD)i+td}sXVg^#w5zWRTJ|h3Hj-NpvI5Za)fc6AT
zu=tBRT8+kgwv>b$@A#^>Fw>2l1NntmN!XL=FxzT!?3lyjmWu#UZ%!V2Vh;0n&K!I&
zF7Ew>V>7&&>y8s|{@dJ;%!lApWJ|;CG2Y83fOxV&`>`lKiFOvSC~***@RabBT
z#*t=uW{|%6!MBgixX}***@Nw#e?K&vGPk38i77>{cbP#QMqa&(9M^0B`#({F~BqJ12J
zXT(lbq8T%RguN)@+;<W+ffT=a_pd=kj8Aa-bFnw2IsF38;#7gHgSVm7T29{v>Bkgx
zyNqm5<#?Ugr_jz3(dlcA=T8+$I>*0ieCX;;(InWzzXFO#7_`ONMWRXmj3!n_`p<p~
zPv2N)b&6JJat272gqRCTu}<{a1*=74r{`~D#|BY3H1I!!NElk?hVQcNNowqNn!hP$
ziWIW{S<E-Lf)o~$XsTF(7D8KLMn~TZt|u2tDw|6wTV|R!***@gnAz!4Y6
zucs-COgu53C>Ey9%io4d(%6en7=LI8#L?6b0-ZK@<@1RpglQd(Z=pusoLo}h$K&cN
zo^1VvSV0M1ipJw=+tb$5Dw)IlBlQaO1G>j1P}|1siEbut1ajLv3~otLTA1mW!IP0h
z{Vdbbg?;K#ZFaCq0r=YHWl_uRIk}vW3~iZ%yv5eXiDh(=iQX4cmFb~@AFy0P`$fz0
zBj`90WD`()imUJPi|nekVjD3$B<drY^-0=c!$3rya2%1we#CRU$78uLf2<Bq(vm7K
zW=8LTIg=DfEkJ>mR27Bw*MTM3hHi0>y$5M(8kww)v9pOc)?dfd)VpHq!Gm~b6PC`r
***@M0ZSc?33DZWadA8|a50EhuyB(Z)Ba-y90`9K&I@^}+snDYqUz%fB$HY-mQ
z+Kzn_aq`ay0D}(;dh;qi`N%g>d}TjD|L|QuR3JHgLG8!Pi$@sx5dV3Qw!Pq7_0l$1
zarnw294t{n%lGBjS8?^=6?-(U2)AM4g9;4&Q{-@***@MO(X_k`!G}A8~t;y
z7{O?%nBK$N#rrSuUKGC0UJ}O8bVFuQcxkqK+H1ZOOQvo19qYcVtjC9ACES<!BHo!L
z)($wI7)iZ36H2UJeBuE1a6FP44XwY^K!$<M)e|4s;^WzRv?W~Dp`x{z&`@@f^YlG`
zm~?zTfc+x&gt2HG?***@hc)e<4^p8{p0xe)pIwB_?Wg2P;uZ7)*r<Bi`bSg)#!mh
zf_g-IiyUI1AE28CgNjJE)Cp7E5Wu?#CrmYakHX<nW4J;-Ge5%7MwpAe<!BzCldLL2
zzlZH>N{*@fW$L^vS)X1v_XmnHrfSeGN0HS}>_Ok?tNVDjAh+ftba>Qe7mGwy&<y=;
zXfRo<A+Ub~u&O(bB*65=htBsV;-TLVUKo`W1QMONWrl9$r#JD`fG12x-<nZ{xMLzB
zj{e#XF5`Wb^16|Ra^FkgGJk0BDMN$PsQ}rnhvo7u6hR-r6;Kn=%pVT<M7C#BS0l-2
zaog}EEk4qOzc<F$_hcqur~yTqyn%1uInpGn$6<{|75a|jeHeV0f|&jZX7Cx{x?5Jf
zfzUht<e<3aqUVTau_a<kp)uGk>o2iB^?uLczazu81Ye#|v+a)393IIYtVzC+A7Os{
zGdQztN!HY(`N`{%d`<AZjndo5Yoop(S~WiYiZhsclfM>5KbbMs4Bigo-S^h88c21D
zxGT5f46av*@xGr?{}Nrvj-45N);c$O^6S)##IY4CH&T;Xe~102j>Y{#1>X7G`Td-t
zddt+5_gu92XUMJw57hsJwkiOUR(>$^***@rpqk9Q5;Pma=7AoUC0Fh%S`f5Dgx
zGZX-6Ohid+^u-}W4-35;EvgP;b68!p{mkgTMVOVE&Ak1FgW__918TO;9Q{q#tJ7zW
z@=e6lmTESs2Y;}`;k^***@l{***@v&2)7#43<YvIjK0^5)xmJC7ESmQYMFa^e;9nV
z^}*beUVso5QN54!t&6v>;H2-D%HN{);fP9icp~E?jG$CJV7ZbAC>7y7zro+jiuTP8
z95fL|cjpuwH<agYaeaY(Yj?{<ABRtL2f8x)yG*y~+C!fzG09Cl8``^dqj?n1=jcPK
z*&QEc(6;dJP^&f?6VRY1wUZwM2ApT?ivAcd%7<MV86n5^9p!7EV)2=Gm@<uV<HO)^
z=~OOGk(=yzhQfCEW2{}E`Z6{K%qT4bpsdsJ0agZP!e98d^9NX&@ei=LKT++O&Y<tF
z5<>+a&$dTMSdJ9Yn*{X}i&|D>3-f|L%Uq#hjvEwJw;I;s4Oojed5vV+M&Fy*dGfqP
zM^g#^I3ch0OqR{((d8_d0q+@B7wx3s%d#ytSMVLvxd&#dKl)***@FJ3Qep%KnJ~
zo6eV$-*5jV`Y1A4ojj(5w)u|6!X>^1+aA3ZV00#gdD2O9arx`Ju^8sZ6o(h(B1>5Y
zq8{*Z6ZmXA8?g^!odq8UVKM=E;-hf2SwkU~qJG#HqTc2r4Q{CvBI|N(AB+C>y4KaN
zAKd$|91J=axwfn0fTYlUCk?_ggZGUBM|xzIT+!Ct?%353GuFqu3-VAOFt-pNdUY2}
zrNKYi1$Tl*qJ^lLY?tlP9k9y0Rq$;<*ZR#Mg=tB5WP9{Nh?25gghX(}c15mc6ZkX%
zCIg9Tce!2{$7E5b0Ja3nDw)B95LXiax_2y0#F>)C+cK2h|2>ZyW{4I(+5zRBey(CV
z0BE3RG+Nzk-4iW?BTsDA5-***@7WUKY2zv`1T);YamPEgS(8oyhmjGmWIG8jc
z6X^rIYGsDbAza$lBt?5v;qp$GV(vwWN>jvk3Ns|sTNNsakc~e<ACagu617)K)aw-L
z20(d`jVFDIB&y(}gg;;6(<&TuOop7lZHp&8%lN+KZ9k+8qAPBX{+EDO%F$IRY|Mt%
z6#m;F{h=`|dKWec(6r~oo8eKgkCJ`!hHX{QmZh*3P=69i`+amPag-&+d$GQWglNM)
zu4C|5;4*d_{$P9#^rXplpz}h&!+mY{QjJujy}@$y{YXfwND8J)N_Q#xgh-huQy!Bk
zb1CHnqI9QB`LRqXq!hr6_HWCSWin-QoZ2Fpa<fb^<0-WAK<(?***@Wb`%C}_7
z>qtrISjrTTF+rE=5psbaS_OYpjC!O4^FV=6;^=`c5eq|!***@Y5*R6h)zr4sei#VFS}
zBq(y!nTfp2<vRsjehPUgZNWw!vIJ?nDXH~`ut}}J5qdS)D1`bHGvw7O;>650Bmkeh
z`UKclJQy@>FzBrIEM%h=NMmjCoe<aAe+UZ`yqC(=jp<-xMEe!Q2`$wK^F-***@v0S{$
z^)!@BJtM)N8TvjdI|SHCa-!Bst>!sH<J0*oLy-B|&|n&s24VYt0Fd5f=r=b5v?qyU
z-!(j#c_(lUWgq+iYtK~kFCabSNH+Vv%c&cq{***@IQ2c4xtH;fnJi(hrnqDj_~({
zo5Ttz#QzF5E+`lfe!%u<F43Y0FU*P8qvs9u{Uh!_N`Ju)f1y{LN6W_~S$oNAc33aS
zusL`5t~Kb7Y<;kVXfyET#uxdULfa5o#=&gDXvIIfNrbZjJ56G{5PR^Th`qoERYVWm
***@QD4W=0&dKaPn|LOv}_mXP`ZDQ_oe{!eHVd5{!K_A(rPU%lB{Xyaqc5TuD?%hC^V
zWLaSvBOYtE9+iCl7_?ScIGBC0?gEI$mGHy3UE$u****@MSlbX
zrglK$>y<43l^?8OO%***@LEyghzdCJ#o;FMzh-63fcy1R$gMFK$G-)8Fpdtr(vpw|
zoq`*TxUrRCm94=6G>E2%!8rn(8{***@UAj}0^nRDM5Bxf;=Ny6e8nDTQ
z#2rXPT=g;pS|c1T&C&5*x>fQ3RnC$13ew-9^sK*u$?uGD<-d+K$NtW2?|5v9+?&%&
zY1T$Z;BENhJF@#b?cNJHff$epXl=6<p#nP)w)!CUms=x_GkUy73sMfTl@&N}ry2S=
zoD~X#3*L_h$I37Lq(un8;Dtv=OUQu9aay5e&~m3)63yR+*#T<~>g5bGeD7<Hl>@XK
zdPnAy&`rZRc|TD|w6M(2*}^3caHxlG4dF-%(Jl<O9RHBe%vd9um(H(SMS}G2ztRl$
zqJ5m<*#$V~r57-F`1s;*eWojfug1zA_MQZ>5xBpz00)a<eC{qRz$-S|R?`i0$8Hx5
z-2ki=w+HCv=pPOIQ79~YTR~{Rca)=lRt6v!CMb}qq~p)Ev?X;%TC?jOg4p<j6AEMu
zymu!88PSFrf!;eESuYamDD;c0PCVggygRLuHDZ^***@x|W>Rp&eUPpz^p5Yu
zux||*bXqIchD(AWgwy`=S?EJx#hNS4Rn=&j<gg4eb45mu#ATlj=W~QHrOn^OQpVgO
zOzQ{&(Z3>Wn4$To5LQysL<GnAsJi)pYpq-j5QxZz0G&j(wTAaw;gWk3fxIdyT(X)2
zjZ<>F?x7eI99MxD6fL4{x8+*PY;kHDrN$#y6h%%-4PFskaZ(25qV;t)nJO2B&Sh&r
z6(>v4Vr$b9MicnT{&7-9!b)mM;gU6>P2RK70$A9GPk_-?a6mybC`B!u2q3Waus+4B
z*y<K<{***@R!M~KePfg;?To?sQa{xBHXn60={0DFSx<fOpc1qq&$lc+=%Z|q8xB>e*z
zA~FXsME{3u3GV+%{m30I&un(BL257FT-HZ0LTO~YcHq?!c;`+!uMSOkWwUFov}Mh%
zhwoS}lqMb-M57=wz}&gkkopT1g!WJ;Kq4Z2Lv)r+U`HN>a_&c<Z-z4qk-qucWWJJz
zS)yS^<Lt<WuF`?n;9fIJjB0(***@l}bG(gaC8ACt5%%7}CsNc2G)O0XYR9s}L}*
zEOB%iLMerI!dSOt3P}}kev9pb_a*#DDHLoCl4yG&1CpK;HQRiv)9MK9%!Xib>}95A
z?mON^Y{GkE$j*1XHzvu>$Bu_D#^arA83b3aEx@!9<;u|l#XLbni~qo#zOfGf!8^_1
zuh65ZtUD368`yy_<kHc4kRamFy4ZeaJ?}ExsXv?T+gh$31Mi~f`TT7i`_s8rSc2m=
zaI{=2PO}7}!z|i@^!SOGg;&GmJ(9!qvv#<wUC<E>SWuB&X*jeoI1Xc9La3_0VCxji
zd+=o9Le*37K|@DEmlG*^&xv{AW6}DF)rk>9D$~w1ci4xp!4?{g5LSauvj&5S(|T|b
z4NulD8gPr=+7DCCY6UCh3^TGb%qTc!-Wg^rGQPb24NkW~VK9&*DhQt|nfRRVsBqy7
znqkoAQ(+fE+76s<70xhMZG}z13*vy6;E77dU?@$6<SK<1w3o!w3<wKf@*x?MYzmSu
zC6qc&RaA}0sc2!sP3S8PNMquaWo-Js;SLPPYxB&|S#-ysb{~|SGHSk7Y%HcF3I8Ug
zqpQ}5ts+fCdmy$t*p0zbhLkzla=}***@SF9uz*l#cLdtI+8%pO}@gz$$dd9z~-_
z{oX+K2v#AmgT~Zg4p|<Uhd>9;>`(rj0Q-FMU;&J)fn9gttp~_P$F9td-n6Ve$o_Z^
z^$EnMo2?J9mfHFQI~!K+B6ox$?mxCDxY=QCb09cBcoiH7YS=4rhfBo@*Wy~&cXp!w
zp?=>OhlSqT0Ua;MuwjS&B?LFo{=Rk4>JGeT^SuF_Y)5wih+q-_Em7~{7T5Z|Z3|XI
zTOqT=h{=sjZAP2ONrOtP9x4v|M(xpt82~(yAlD{?n^oC(fk0`!ppe~W1LiOY)Jrqk
z=-l365Qu`kjdpU95Mr^!yi#a~EA%>b(s&rP)I+Jc+@&***@j!4Fx|E!ZurkK(1yQUA
zQtdKPu5c*Hf29`VmM3;>n<5DP-jNyT9Wz-Nea;>49$Z#zD$!#75&R_rP~$x$$p(Nh
zJVgOg7Jxei_4eR{w7zq>Sl=OfDLQ{BlDajKJjOo3s0-$TR46?DkF%b4X6-bC=Kvh&
zv8}Z=7hY`!Ps3Ym8(Vq5z}t#3q@(u)Oe(J_ZYe{g2~***@1;~dx{a|C9x{@Ehl
z$)tNL-$O>f?@gc_>*$^-)Ni{S??Ix6^v^Y|$7OAHnI*mKh~4)iQmnv!nCjR0X&)?L
z2?92bfkKDN)*&Vlaf$1l;ki#c!=4@|zVCG6%#Rjl>A;5jbBcaky=N;1nX6igzdhip
z-n0w`@v0VQA)***@y$B)_Uc3M4-j{OsDA9oy_h;BUj<MxG^LRw`H?EMJemUJ9QcTUEa
z8*BIOE^N7d!9eu@(ZCmFPFp8F0HPe$zK(&3&***@7?<***@F(LFkk!R4P0m;a)&i(~
z{&_1awI%-b1uL)***@2hNR1$soYf^+hhn?g2y*+$Nd(U-cpiaokL3KqX%_F0laAO$
z7?J#***@i5maMTd|***@ZsZ+NF)8yMaVSaiP>E4tytzvtfk9A=&p4GQd(rf`bfX)HeC!
z>OCYsNY~l}dGFm#^7<I!?el{Q+EX<mrh(Lsj*h;G4%<***@OP{-1GLCmneia=X!N#xQ
zD<mq?iEogc*4(FKN5g)*tSutTM-xHFW!nOZj+YLSYFyQlbE0eVKQO2xGrlrHPEr~R
z3S;>;$0&GF>A$xA5f%F-*ek5vC+B83lz~nf?|~vCUOzXmKhs<1Up5Bc&XWwkSxWo9
zQ%***@Kqv&H_Fa}h)(>TMn<fN%vmmZI$h(***@DWuAJvOwV_EyuPRG;Gc*FNN
zyg0|>Y0;gC>***@YZ{|3sQF4G=%xA2_t_cma-TbAM=likrQAjWP(!_jz$`6p%***@5eC!
zHxaD$2{N<T7{iX98KMtV{QE}<a^_twe#Mtr4*~~UT4K!<JkwfYFtRKk-#EBi_{4SC
z&z7dl=+8eQnw;LnHOmO}?rjcG8L_=+6;$*cJVP#HIosI#-^HuhOslu}@G1A3Ge=LI
zIm!(E8Sh+CTXcUaNn3NEm+1W`a5jv`lk5hx{LEZpCsJ%Y#)3eh6`-W`6!{$?whgsY
zi@`K4&P`>ey%TtCE&lDZSR51b<KX78T%)lZaJ~%Tn%kqZ!KJ9N(bt(=p5q356M^{E
z_G}bDo0s^so%Uc+NI96eoY<x#!%l8ngQt{***@VDFK)0x%Jh>?bQ-=smGt`R*>fuG!
z=%SW8N{***@H4v#1Yr!(kfOV!4>!KWyxy82`@6k8jgk0qTPiv6B$eNW)@Ekt42H)QR
zX0|ourkQPj<aGvlN2q8aeiY)G8||>uxR*ldu&LLBBa{kh?dd9Bd-^YEsQE)$&8PLJ
z&u|yfWe7XGld49BOHD#3(-?fwc!E1{O>TyJWtfXY7LkyL&r3?NKDqLF!<dImvr7dW
zvxrxL<PJP<5|GZ)$S!KR8No-LRQYzhC<3ucfe!frzcp8-I{L2~gR{****@g*lT;fzZ
z7Y?PPw^K9ub~>n=P8=2CLZ?O?6GBCEv1CEPt;AwFKe`|Q{Js;P(^q7L=#***@D(g-
zTJ9xdOi^IXxYI??yh<gX*J|)J^4a0PGb7yrM85=>4`ARjMmw6tFUDbsc0$t6kdZzr
z`SRrM$pJ9OJP7cUbWSK7dZMSq9;3q{6Z*Nwe~mqpeHn$IDB}G|8Wh_vMsA%bS!@s`
z2T<h!mG9c=PXYb$D-wb!A~Hn&B&J?rlj{***@0cB&l5V1)_|k<6aVzT1$RRih
z<@@VlrUt|w82y}EYJca0TPb)3KRxz2`dxPPuYc!***@iRgW~tz@#f>y_^m_`mpuHw
ze<tY)YZdh2`EVJs^TCJK{d))tOZU96%cb}2;czmF?^Ea3V2q$***@9ys9bGfX
z9*G~1v;Ioq5LA8}RR>!P;=~{k+_8&OhKPq~yMTD1C2c-Lf+{I~8ZkS%24qC7w{s{}
zm+J#*Dp?c)$aHnAK>%m7=K}#$HP-FvNPiE`cQO6+n>a}f-&8Hd**@E&SAfH?>jRv3
zZuOcE@>za*xB=+{KBG&HKM(<eY`Y;@ZO5L^ZBpa)%7d#}_VFl(r6-6w#Hp!y&cbZo
z8KZSV?7Qz4YYBLkP|lU|3UTcw5XGm7bi_w=^KTp4(F2KN_4|48cti2|x)`q0=!{SE
zt{2gAa(#q83dT7;I97(2(#_x-NaJv`aaef8uQyJj8P%bFMg<@7k?K&d;_eLom^F-R
zy?|L_8-`5*);kiZVM?XS#J}a&KIE6bIzq|urH{nn19HYG3rhS-ix?-FaPmG0f2AYj
z-rtEe`fs55BkyNm&1Xj*j>yP*DX{+-Gx!=93hXzrUcnFJ%+Qs<Gut29iFZ{uv$eD1
zz(iUtI*6$jO}IKU<%A1N6DBb|%ukl6<nfReOC%E0f3l<(xntyjV82|hkEvqOPQ966
***@lTg8vU*cYgO@~0|XeDwgA<&a492E#5MzM6#|Dv=6XJAvU@@***@eON~!b
zwWAcY<oGmK`$SnwJ}FUa?bm%+OJZb)lkJm=Cl!Y<@WK7X>ZiKsL!4&c26TtbU9Qcd
zD`1n8oI_NLWpU_NwTCMxydWr;t#dbHb#TQCEg5fuk`d{H54kMx_L$6#W-yHYMb1y~
zhj{RRj(K1s9`NgU<K=u>***@2dzSf+6YKSPbl-hi|+?Cr9Vo8oHg>;(1_tQXN2EW5s
zc>qFbn}#%a%w4W6h|Huqy+DpCS8Wcax^1tEbV`dB(%iSzwV7Dk=f*cuAmCrI!4T_k
zX6x%1Rp2qGF~wp1f(8xmb$}_SKz>V;j_6KXy7yuVv_$H|AVimprUpbg3%ao*C*wNQ
zz~LWATQZJ5bmtCCzu3mLdkhq4xhjo**=%iw_n7t67wDHI84ADanDwM&2}m{|q#6l`
z-8-H?;~>bo6BBTocbxi_TR{w85MP9xaL{JiXbZBM$lNsrf5{EJhVB_^9X~`TNuyG)
zawUN`(N9kf{}=dR3S(-n_Gu6LANAsw^62#N&Bw|%$w2!***@uH>***@u=Yv
zvydoGQDU;kL&#Ef(afBQ#Ci$3s(;1i(PrpeetN+$L*L}5E#u*gKN~xN`*M&g02O$F
zKB=c)<yv{56MxOnXXMPZmTied)AC{***@rC8vfbd3?m{>(;(af2qnX9EBN5?jR=nUIx
zZvpg%Jqn!e50ECQ{7CGLWJs(l<-IlKo#***@TVIw+1)qmL)P6_TsMr<YhtP)k
zIEk5xeGe4Lj^%HQQSg%hx&RdJ&uTf|b;Cy#7hDr~WQq9~d%*y9F@{YBm?qMP`n};*
zP?@DiYri)<>af2zOkUA&zc;MT2jmu4&eoaYYeJiwj>Y7_a}4r0cO-)SCAk-tI2BW?
z54m^Azki3Y0;Wu{{WxoQhM0gUgE;6=Dl)f&=-DZDTCO*sooLB{<1FhlDQW{BVcTKQ
zdr`;!j!Yc+f**(CStOM2Z2-kDMWwT-F~3SWKvVWNI`gdoVx{w#f)BxvVCNkqcObWS
z^vW1{8}RV~k6ZG79wF>z&_Wu#ik(P%Qg|gpc^***@TBEChXhB<5$***@yjV
zHJ_b|<O&FV7F8T=-***@l%6xuObtxn_U7P<chgm;*0_-$B-co)w|?C2dG
z*m-5v*2x{B9vDw(6yP>gyk;a;Xpy9NRSuBAg(#U_GjtIBAr_*(hy8wDP#DO04pfZ=
ztK;qDCZ9%pY!B~;7#1g7fqa77UgUYw$Y5?s-jgEuLwf~VW7krC@=w^=+51{-sVtAH
zl^?PG3I}CZp7<HOj$LWfwwR%h*)VY<=i?Y3B4!53hQwZ_6gmf4%1|!T<ZoRY!7P*<
zm{!K1bkeX%`|#&-CLod@;^YFA-|A#mX|r@^+O$qdqmhyP$SQspH&y|FXwUq}${j=#
zn6YaZEl6narH48HnMED56M>=nkCe04jS_L%_*FOWWo~gqFV5Ka9xE4u#Bu>9UZ<nW
z(Wzf2CQS+hYRDS2m^Zlp=1FTpAK6f(6n}j~zbS`9#!h~R)_tOlSV4EJe8<3|Fxw!<
z%4g||R2qSPjfyAc&|+s8r?lseC4qDYR+C_G#eYPryYNO*64qFi54n=&{ciDVq=wfc
zS;NSp91%P!uLF<D-N54-balE;jwoLxe_NpU%Rpqb{5}|y-62jogC5CcEetc_OF*%{
zl?z%a>s!xaNbO?I#mCv=cWdx73ns6&6yZx~{t#2n#EZfu*}TSsg#c}***@N$Neqn
zE~I6h?m}AC=`K7qi~eFw2R;%`{ww6A94W+fup@+swJcuB!RHuaDMwmuD8slC%VWf7
zkC4Vawc?@7xtv&U#|j)i+eG*|SA`oiMn9jW=A$B9?lW=%`1b_cs5^_GIts#%3hm^~
zD02qf=9P>f=m9i2`A|***@R3#$eK2eS~UmSgW<gnAD8mPGU?@%u45VAwHmVIcej
zJby%Mkqf$A_%)#f_bA|a|B8=nzH#_GBJ{d<G(4T%&FQq>f-fa#uI&ed@$Y@;8y}o{
z%+;dN3Vn=Le|Qi}B6>1-eg!8WgKhs75oRk_HCUIDK4*g-N%<9k6n-&{j-EzI_^7Sy
z#Ukrd6ohC*#30gFlb1oV_)y^zUXYN2^xAp-;MJjiLQTj6wR(|;{KDppOX0IotP{Ta
zjgm)$vkUq<c|9kLrN(#N;S>FLjD>+4f2?;DhR+9Ziea~Yup^f#7kCo>jP$sKv}yH8
zEIY64?uGO?3!M{$XJ{***@B<3Lb@~=@kT3o$SYi1mi&>N{#ODU$86iZg0_2??1
zDRtzl>rrxhsDoO$S!$zbmd&y~O5pbl(ICDX=yX)M3WVdq&-dRp77j<?W1CgBxx{u5
z;vYS2tM>#)Grpj~*`Q|Y>@2et`wH~)^JoxQn;{z$>qLETQ~xY$KacCnA)d4l)>5{c
z{4+RZB!m)-7yYi?h+_H`OdBPt1>@)iNb;}PjlGB-m2{>Q-AVCWbnXLq9G}yEwM_d4
zykJ1)<fOHiNKmE%+1lqx&}***@q2`jz*1_|1!KpE{fN)UbTz*wW&zbipcE70inn<Pla
zU(LxG)BZgP`ia8IY`<B80t%GXK39So0OBg2D*;!6QR>!Q=2%3NK=j86CrF{(j;eDW
zA=d5DqmU<m8)TS?T+W=M;C<q7_v6H#xI&`yq&b(8Ae~CWx$qr7aviO5!44Vi3Mrd%
zVU3X&xv2-B{|jyu-H%XsY!*}jPJ`&bB3)6~Lg_aprTeJ_JN{7f)08E4hMq3I4^}%u
z(Kj)xS2F^1`t8xjz>~C3)G^ugrTQE3rC0p0gIHhwiAH8j{x(eMe8*7D_!~1`rzD%x
zehsk&9gI?3KMnl+y+wRO2*0le1pc|9q(RedVOC9(cg;PaX2h#<QShk7Zak_H9g%2s
z^3STfsa!hxV|!***@Sfk7EcNN$wx(d?Ab`@j{bQO#m-&HU=v#VeXo-@ztD#*IKs~~N3
zSHV$6SHaOn^xq&v%`L+mvKRD}$@vbfC^+c`2+J~NtM4Q0C9z<JlTd`6qb640^kG{m
zv2qbx2&Y!~gD{40h73NFhx)bE6{jhPBpXd`v)I3(W!vCS4aDdNnUgbMY1fFY0XROU
zh%G{<CJyn62xSsp7FR$***@lY}I$X{(}(fsieL<wM8J;rL~{v!A$Kq=?***@wsc*
zh41LfBo&Maq5zQx3h*Eo!@#-m*FpG)NRq_~3LB{nQZ8tXK_NGXyQpK1<Vqh25^yp`
zh(`h#34gR9Hxj%tBP^GcZ6sIbNRWV&H9|a6wvk*%j|2%gI4hmz<cGb+&&VCm{|#GO
zT6#}aDc;8#jh?3Eb(Q7b>RJyyd%P73yq-p*skWlg+f><DUsGc=R(LtBzQ*URuCFs1
z8tc9FMg+^WhM)fQ82A^Nhkt+pl6s9DpF5+p3Rpv57o?3hZ2R_&zAz1vY2Ihd#vSjt
zGu)V$-ox*e5?(3cm1(&Iw^ydkFl?(<***@8n)fLvn$i81ir{Oy2)UAX-zVJlgMwk
zryWChqrWNOxTCy*fzk8n{^E;wH4(iRUo5!Z#&En>{VZ+OD$uF=g}***@Ynn#>nj
zZo1wRH{%m17_~LsDP)1}x$-_k-b>}ZO5RCGAIrw16)C#tP9VBdAEi6>!Cm-I*QerU
z{J&K`@pd$N`#***@21^3}Z6>e+&Q5!GBtpyAb~`vW+q>MhBjX`{iku8#***@B
z$S|$}ycqwl%di=xNdGpTXXAev{(lGmZ@~W>@qZrZRHUaHm3XcKjrz1vMg#7RX{RCO
zpS-9$O!AF2uJY7X`<jfBdS8==UObJ}l}2HGqqh-CUpo8z3+!_mD=HVyuRx!e)P#Ry
zjT;tuJT-Qa!?moTroPeBC||Gf)HPMtE%YMqoJG}ji}5V*W>r+zc&hB)dOP<wdo7h`
zudlNc!Rn?aA25+***@sr2IM2R=`***@YS9pPBKhIv(SiJ-ViN5Qpnljd~&#$Pm
zH&irMdzTxAoqBV<&ub8{s=`}gU(***@zYrke@q5Zr`O;k*R2Txta{2EU(6DWiKp~&;A
z>l%FCJY#V~6Z2VR$Oje(3TX7;>4J04F>2};R(m~_i$rZnT!xqG-Oxm`<oAU_z(uwE
zR$YsvqFUE7e)BBD+wA265hkgk!CPI)kn24)j1dQ(****@InHHqo$#W(<<;_6wl=6
zn(76f`StaSjX9<K?xjX+sIRW`s>Wn+B^nl)DtxeI6?Mx+1B<p0;uUtTvVO1u)a;~a
z0%1NURgR?^2+q+MO-<){7d6)V7A`Upyf=8yZ-Qdg=Os{$IrYBEMWq#0MpbnawMO|u
zG`J6v6^zJ6IG>q2pQ<{g(s24JYD%e6_Sq2BV!?h1tFCIbd<`jH#8oxbRUXc0IEqVW
z8<VQW8pW#VbagJdQ7W>^YQNB6{V%DglYK-VB*1xI-X(dWau*u2e7974n|wyGYz#Y7
znO)***@zllDDqnETNe!qzb;6>VC88L?V-xivv^D8<Q-jA-WmKbIdaEmpMo$Hlt*WtN
z;iBbDMs0N+JwoNsB8v=PgM7G^2ew;0b&H$Oo}Q+ra&LWklcxqf%V=6$-7p`zVR)8#
z%d0#~r1=<1=u+v=n_to7f$;f?_s5$0Ca)bWTuJ?N{&KI!PC`X3Wq*yQLmBF-Z-wgC
z*PUx8)mTbheNq)?0`}61<><<ZzFCDTqV5=ell!MAU&9k>lY%5v)4qVs&AIkNSQbG~
zAPT#5-cV*ipcx6gDyV5={c?NdqUxHeMo*o+0e!0JTsu1m=r~BIs9Wf<SIh^T%@mQC
zap4tGoYN(9R3<co>KV5)_NDcWi(&bE9_25^`_Oc|qiRV-T_udD>?o*tmB(IPSM8M)
zA;v_Xn{G$rR#$rLl{FRBwM|soqKYLRJDS~7R|P7S6%7^ht81WV9&kV3=d~A|U2Cta
z_kwfSMz++jq~1lIS`gOw7%AQ5_Pk|zm4_f*?In)Iby)hf70c|E_4SQa)pZbAlO0lO
zTz+`***@Uz_Z8{->K514FNGeUS9!***@A3xO7pP`h`3V(jT3YR`Tx4HJLtI>MgeWw8
zAC06K?rJKQp}8dWB^5Ab+?fX9UsqgOXut6~v^z#5Xx_Qpn5@%8Xm-L#lPe2NP0^P!
zF({(pS+-JtWD{w8CGbf1s=?5$***@C_YdMiuE`dTyHKB)$*Em+DAQ~0I23NL5YEIXH!
zvPnFjPXPYI71hco74_872xG7H)YdmHw=bw~Od5H(OAe9`k3b;a#L2=;38Ykhn-*2i
zuOP&PC~K-~QCDgY>adW}MR^Svl7`AZEAHyZ?wvBgp=57kH9DNfo;#^(GHFSYo-C?p
ztXc{e!(P$Q;HhZjt~(zRu3oUf1AF70Zm+J&h1|}=|H<bHscP>eLcA_R@-if&zsKLe
zE)Ar*1p+<zRF(C$wH0+$OiNTr;CX3`#vrActYI<;{6y8IDUH{~i^@QJad{1cUopRl
zCR}9ttJnq(g9j7rsi=)(!9V7DvDec?u7TZkDY_1sX34uOS>U-E8=*27W?@Yh+G{Ho
zR#)0xmjD3GhlvI5;BrY$gV-AakF6*BpQ3zGYjPADnl5N)m~MB<{%Kc+LwO>o4mrhC
z^%^mn8th=od<pv@^-A+ZFcLQ{***@8r`s2z`zT*hSrxMWb>x~0
z7gP3T$ir**H86o07hREXDW_EGDzp$-@lgeo;QX`yE%IGBY(7<sWX>@b>8#JV<O(=P
zVh$oazXjEewbVVPV|baAcL9usD3k0))%jFk%m`{P*L>9J?)s(nntHT!WksD7a+9}W
zIr<R>y7?ZM4-eUpO77phG+@ugu+T))kt#5hXTRKD=fUJ-@)RacCO)YE%wD|lV&!VW
z^y_J1L5Y$V80<~;P`0||a^6D2MUy>uIO>W{g1FY;)8k4rJF#eCC%+zA2dCm(dp?*J
zy|BujTjg0$;j8h&9#Co0AXRC#(Me+-Q6p;uV~2WhHzLCahpJ9?D_Bu<2q7Yk4q;7C
zaEw-v3n(NG`N&***@kA{%dsNfi)e9Ht<D}5FCb*MihJgdym`hVKkj3PREFS%Z
zm?uxMmo<47_-c57xaK=0b}{gJnzWKdA^f+zV*dO_c*Heuo9dc8mtR#{Y{1*AY^=t#
ztiJAYnn6kRk&`9Jdr^Jk<=?5lg(iXa(uyTD)r;*jmWcO)CUoa1mA77DG&NR2dx+=D
zXI<=?RXFRSsTaF0apYZ+f5D}$i=3BCy#$7&x}xcFF-Ccp=Uv>;_^s-yZ+Vt|D>WrQ
***@GhJs#>=>hDa=ko6wD21)r<rhx5a7x~Jjg=Qvd7vNgRnM`{E-8h$Jf7MHFWH!K
zUtLW-OgkPWZ%uYK6-j>{k?S%^K<(x5>4#onJ$!zxupu4~mtSScm~-81chO9TdjG2T
zQL~}wHSnH2UzO5-@BIIAxmLkV<%Nv@-g5b>-2cnvT6*2}b6i)s>?IfG<$YD={u}52
z*UJ?yCcAv4h5rh%jQ)-oC+zuC{wFunze1E>)A(8fBbLCZS;f~~?>Mj8W54*~+UgN!
z`x@~u5*QU<3!iD9jV%CA(_u1vojf85uv}+i!^i%$Tt_6Z5h9H$E}G?<***@a`z
zN^E3kW54Grb$|Ezks*JLHDU>9cHn~i3-iyPiN6=p-;2L?A4e?2ArMD>t*=8!<*S26
z70x;@f9hAK^EHKJ31pO1Ao2hkSKf-`gn#ml+UbI?+sXL9B3JtU`hWOE`gJJ<$$fqO
zOC_NB1Nj$yE#H5sY`-S<uam$m3g$h;^~xW9%Im4vo$?_zu%==;g?5ho+OX=fGYDG*
zE0s4QP-Kaxd;x+`***@C~)d226WF0Mu3Ykg&TCF1UmWbI=A4<Ff2`D>eMJe~%6I<o7b
ztv}gBIS>lKah8oomfgtx#s`xq3j!r-5PW#V*V(Swf22&1A0h`4DcHD#Vj4zF=i*Br
z<@PHt7xIe-wv{jTAXxXX*Dd9H{z6E+A&RZaM$f|PCWK&***@by9eLG8VKCI
zpd9gd*yt~(pvMtk-)xA`CkC9K;zTIIam1N{c=o`f_o)1`eC&lc)MH<HL}X5~Z(K=;
z9En_B>xBl>E<7|Cv4xH0mGwSE930}>^7+)iCi06mK=ev=-Gcf<<Vqw(EAD-Q-VjSs
zQCnW$&{WP*0SSb|JpFR#I+IW+L`*2~2pe9~J$u%S2tC#!7-$)9RUb*~8OHpK?jKNo
zp+DFkM^FjkV+k~(>#~OTClVs*4`OVqkF*ONH~R-aqWnz_jVOEpJs#0DuK6z3R*vgY
z=4&D1sz+!`7IhxGf(pC^QDgtiqU%}z`$75+bCCWuQ1mqv&{ON9SRusu4}E=a(knYD
z1@@=1c7#0Zl%}2e_=of^^q(vcw6~nKaYQS~C)8v-kjRhNokMpQy=Z=(w)BMG)59S9
z!(qSW)E5Wk(E;b5^zke79=G4+h+wSLF%JDaao+!0&G~Dq%Q5m)E=GRXzuH6RN~AX1
zqQ9ZHa#(K!-a~_q%zpm*f$z~rx5i>LAff<|cqVw<<7b{l`Dy$>*Q3WHx?XzrrspVw
z=>Hgj7njF7aW&$***@azM&5pAPhr8bq*nLH}{I5&7|BL=7Le<KTp#K?<K1x5;VIV^F
zpVI%#>7@@-{***@6(rR7Zsos>4Pyt<L?***@fTD)0GSh|<w~b^i<l&p6LmDD&4;HjHG%
zPUgnCKJP?=AX2Zcys4&sX+wo~QF)yYUlEPy>KgaOyM&l%{}E-2BOSdh{a$*J(fZ|a
z|09lZ=!cqV7c~<G1xnG^6i2GT8((piQ~vn)%>y9>;***@6rGF%mA2jv&Nw-R4d99HEC
zJ$`*U>uoo^i2U`***@K}=%Lzn;!HwZP=iIKBbJ_F?***@ARTXvw4``_RAMiKkZ
zWIqt_jfgy=HuCGqpPkG0hdyzE<rtyYlc4`;?X}O-8;$=mIy#X!f~Wr9zjPU))gnTY
zKfgJ`fp}8!J^xPmh5jV0H-FPX35U6+KX%|Bgp#ly!iJ8_dKiZ1GvBk6UzEQ9VS^;e
zkvGF1vVOz%i{wYDPqdEYvL9Pc$A)75<*5~uFFBE*DC807LQCnd4^VzJ`pFLq2{fWB
zuy{H5-$CQ&VMl&JzU}B+d4{`~L^q-mlaao0e*Gf^k>fAMzU1`7y}h5-(M33-{q*_M
z$XfB}OZfL~6ZT8aKgfcWBY667v!Oe)9uo5h>***@ZR7t;X}***@MaFO4B1
z&8P6nk8Uib=cc-U&H?Ya``|{(pP2t}P&0u>bbb5I1#<|I_(y>J5zn8$QT;3(pknaH
zVCZ^S0P$***@9VY1EuX}cO1_(>EKhOWrW+U&zcm8n~&p)f+e-i(~`y9C?#W&>***@2
zI2Qlu8*gfT8~%@ycig_d{x3^lr18;;4Qe0#8ZN&#6;WnN1rL{hSt{ZY=D+<b=J$Wa
z{JM<vXGNCueI(a#@)<6#qCZ^v|JUGOwSHgcKe850)sL^`_upH7S4;L)yUvsE>Z_U(
z`OeNJp4n-@***@3)>H4m?8KdQ$7y0n4&JW^6AG~***@t}Jmg=!`YG_~Sm@
z&y|cF#ZbdIPi9o-_?$^UYjy;eI%wkvvV4vD|7QtYRaiLPo_p1`Ws~g}O}S*s1@;T_
z^7)@V7az0Xi&YO!r<jc2H~SxkH>GKLEj~OkrqBW{-xsMTte1GEEUfcQneW3973Wn~
z8B^%X-***@ybV<lI!oDWy$Z2^}O3RMck>3{3-d!%V6<3)tG|CF<x3>^5tT6UN0a{
z1*Mml&-X1X=TBuMN>gn^IW0;wVUb#Wfhdz?;lwo6qXsAH)***@GCDL7lFsa$Lc8&l>t
zH5pTAZHCtNr*NgACg)*tdSqKgL-w9;07^Dd*;$2DARlrRK;D(TRp1NpK$cJ0Sp`>H
zA&)mJh`47bzZz5Uo=THY?7j3CzY6LWciQA69+kbGAi%~IxDQo+jwKNOEb-JW)k;r8
z!cgV+<O<***@KVda7O<hp-!03heEOAIei0IfD*x4Q3CwviGtnU#r<Q*+V1$|4
zes<oK#W^)<Km-n5cK)0AL*wL7<xf3Fl<${`R6doRTK)pS2=fB`*Du#***@ir=jxS%TX
z5QY!`hss}izsSE?6)0Zg<tsWtnLoAur~X`IxJ)?=GQY|vUyUCRlmEtF3XF(Cl=l>N
zj26ICs>qn@&***@FlLeCe#^***@FSA(T}9?P~zU_3+8!uKwE9gS`I~_o2#PM86)4
***@YEm|J3qn^KYo~*FPyTD*r~jCE88BKZb{)%I}fo=Sf5=pVmiG%kKnisPdnc
z<)_+<)UuvI{!|!1#=arye>~u+<-Y*fQ04c^@<nt6Q52V5J;?i;xKsWVH8a*o!;`HF
zl=yaeSGQO3FckkcUO-gQ{-iXxNPe`@q{u1#i2^oM`H`2AfGamevFr>@{COLXLzTbh
zN>RSvepF^^`Q-KzEVceo-W3*SA|^^p<X5mU$WJAyaui(UpCH&!V8*2v1*Tu4P|tBB
zdiYz?Tl^&zmvl0fcSe@^?I{^jUb*ZP5p#BXfxvu~8V=V){HL}`m0uQMLzTbpW|99l
***@b_d8L+LD&aIQ(Z^slKO)}pkO^n}^3^Qy2|iYXKQs*d*Tca7Gz`3J82A~IamA<7
zx${!slulQzgs1ZPa}A${wv(jrHw=S6R;CkO!ar8NPn37M>2jz_!B_UDM#G<pvXngU
zPQh30yJ{Hx|Ipy4Xmp-Pp#!$~+***@lt6hS?6b=2LAwQiqAF;{-p*#UN!{L(cw+Q
z!0V+yLGq+Leku1`HTV~Rt1G0z3BOe0uh!***@IQi+wGQ2(T>I|Z)vq&EewhRaV=
z;AaRj#;I}vK<PuSgcoRV`N%0Q`9i#tEmHC<*6?Lj7{78Dc#8%n)|9<_Sfj7^(=93Z
z<Y&|M+A#PNrQ#8vx;|et47_L<`1gi^_ei*EmrI!&!+13XuG-5a!-gxBpPXUf(}sax
zJq)~V7<gb9_`}1%C&&dJRWHRq|***@TuK1se-sFBs{ggONN0zGz|RT
zQ|K#u_4{G)-_`I*udZiq3}a6Ue6EC_P8GsMd>(`UQk{%q4X*3YkA{IiGYou-gwu`q
zS&aX5^=kN^;a&BkCh1@*{9iG)Vca9(#OFAz-~C3zC*E@<{+~5`o&H`8pZIB(_-WFw
zBKq{hc8Z_NG`L=_Q-jl>ukgDx_+$<K?lACl5;`s_SI56_82I(Wz~>DEe|;GEfnnh1
z(4+uYDnC`jz#ke0{>Cuy&xe7ZA_vyga^1tgmkk5|l?JCr<ySnW!TSJL?***@ADA87E~
zWXDg{hjtCVSHpi%!j;}`MjBmzPk~1mY8X3G;4escGzI=w2~RstJP<#+J|CsQb$-s#
z;JQBFDB;8>^%u7wYb?<4kJ9w^KQ*{c=Z_kEKWHd<KBvKFXms{!aGg$&CSka!URP-N
zKiA+o{)-x1?{}|ja2?+q&*Ygt%`Ft4XJ~L8{~8Vc4Gn*p2G{N3-4d?k=@-Qr|EA&V
z?e%L7{yuOOKd)+Vo&I|oeX>`(CH?&xzD|Gi2?BxSsnfqe!ii7n`gZ)M>)RSW`Q(b9
z+cmh}FFqZH&***@IbR`ubUN1z1HWFvQ~CU!***@s`$K9gX{IZPlN07{KGKt
zj$z>MNq8zhA87b`eaD={Vr4&p`qx_VYMd<Lsr@%kgX{8HJ`CKi(PtA5S<tmw!>6St
zC7*{<@a>Fk7(dtWb$R|qgX{8KHw>LWY52Mvp4Q;H9q!QK8lOGG(***@V0*ZCYT7d%q+
z{8SB2zlf{kaFzylXz=qj_~(#~!oO65AJpKpBs^6guF>#yIn-%zU7kxcxX!0vgX?@+
z8eHe|M;ct`bFBu~^=g-dr}E#Y;p=k#d>DK~POM1&dVRmA!7tb3e7^?Q`{Sb;+^ONW
zN;vUJ{b(Ql)77Kle};F}UfVRdF6TE>==3lZ!|2oS_3`c#4X%$bSDhj<rs~^`8eEt2
zat*HY^V~4-0S&IpC!aQCa8bEB{H|f(uSz({?NZ27U00ndo>J*tr@=o3ijrr8gcBXg
z<EOy~*Q#Og|5JmTT03q^p_4aO(1~hr`ssOf9dnv^O6Bt#5>EVltdMbcX!sxDUGcwA
zgS#|-?$O|<Y4EigykDc!A>m36s_55K;C7ktSqglfgpZf&ene-KR^JOXxLbo?ufa(c
z(oHpfpuy>vw$=5Jgr~~wml|Ae-*p-t%F~-ED7}~h-$R`b*Fjpa#6|p*D$rbrF4N98
z){#%}sN~<G!D*b5<c)0-PIL$^UyTpt1M#BUpRs2EfQ#U>P^OdLu#cs|Y0X)cdx-{*
z0awB2Xz<Y*{!JSEpoZTd;i-K3G<@Cet<m7=wnVwz8Xc-bMB3BM8b1BDy5jRq4WHzE
zBGTyEt>No({z8N6cINnRihNY2K8~EO!H)xNRqmA<oZ3a{TZslIn8Kg0!3qCp{HLof
z1um;=+?E2D?yGUX2G{w2M1yB)d~TI+)h=YC>3T)OpQz!dohj1OaMQ=l(=@nV?j#Ma
zkIQ))T$iU?gX{MHMGda&;n*C(kK*4hUX9}<ocPrB>J$x5ThL1WXADE<EDc}pM;E8y
z|38JD3z%G0mG4g;K!89xJS2c%X&{7Pl1|***@12`6fBs_#>5RyTly1Ki%yVBKNm8$AI
zK(rysLqr;#t5F<p#^5I~f(;CFnK9mJ1T%h$7{>=u?sXbQ5N0mY5Uv*l!d+|c|2p;W
zo!a;AFP&5Sch*^Z?X}lld!JKP-C4BTPVzi2dP!bWKn8vuB6(hauP4rWb`YQB|C7A|
z+F$nnq6oht!gItqPCiSV_1{jM?***@UG6yiT0+?OWhF?g#j;yZ<xud`11h
***@zWRKw}OZ9b0^93xIaXk`}J%@&kH2aaX96ahMnB6V~KN~UqzhT-AtVOdq43h6z5M8
z=l#zi^***@UoOo)3vz|8MtmjSQEI(s`*Q0(uNPg_^XTKL*$Lj-R=Q5I4KiHdi
zt4N;PT}$!@iuk#zP)dd5`T74T3;lVs=SP^2%fa<>o{y^o`3&@59+7_~klzFOcOvq~
***@df0!e~s|p5pN^;sf&HPs-O9l#5t}8i1YZ~LY&8CCvn#EGvfRl
z>3QP(yl8G~!%o(-f;j70L!9-D5a)gAHsZW*`ETHsAI2~)kCXgr^***@GWuX$-L<***@d
ze$}J=D)0{y*Ll%8&C8tuu3|hdt{{2UlZT#4z<a>A1iT;oKGM(re3s<Zo^`P26_V$9
zv0$mUSJm?K_OpoVy{***@pwZvJz7U7?***@SjKczY*tl-z3iM9(j6m`*RU~U4;KM!e=jQ
zuK$b(UmM}STG?FBD-k}ut-1V35q?>OKON!ENBERg&D)(7;g>}C)e*iW!f%f7XNhy1
zA9hB=PW>p5#pkp$8(cq=ZhRK;Rm2w&=eSyXRznZ-YJ}ez;iD1$iwJ-DFB<J~zxGA=
ztPeMrUmW3WAMx_GZr+0Ya4xv!0e=4TDdH`1Zl=FH`***@IS#Gl6RBhL4sKOoNgr77o3
***@l%uU`#5RjO>y{~~!k*Ma%=Zoo&eA3EgRhJGiH{C;%6ThI4$8RELWSotWp>QFzZ
z|Fqme@|tfm(;ZHBkUZ!Aza!4;)YE~UH>P<#|4H(!=UtLtDE_x{%t!sJaJ`!guJ#{J
***@qZ@CtNmGBl%$+b^4#t<#9tISn_tC1k8SF&C3zmle<sfRpNG$L%_nN7#??i>n*4+~
z$JMLg+F#u_uF(sn{E6g`rT!kY+MhT19OP$$YnA2SNAh|ui~Y?!;s*)eGu`W5Ox&qP
zytM^<JM>%}@DZ%j****@I_FIAEU-eD8{|89^T_H9uUnb6ezL)q><expnS^h0>_1i)6
zvmO0Cc#Uh`jTgsB8*$cuHMr?{6mh<R<hj4!CC>ZOu?YWpgg+PIdn0@{@`1%k%?)Of
zoDlHq!3V&#%K2>*aec09<8mi)mcNTQKmY$0an>{I0`GtG=kNi(z7SmP;c>YvkheUO
zkI2^odCPA%MC4y0&g1oVgwMLr+pBi6{7Dhs3vT^=5&az^dG7Bn;;jFFM)>Oyekc-A
zXlHALmm+*?gnuo<AB^x{NBEz?4;6o^Yi>}3rCj_me>A=w{0eZbo=EX|TOfZo<o`>+
***@kdf3k|k-X-O7ERJp{twCX{m4NV`}3ilXMt;Ttp6_~yfeawBK$***@BF^pJ
zeu=j;wCDT8d0y`#K9BT2MVy}p{+c-N6W-t6yxoxqpLc0<`HsJA&TA2VQ-t3Y;SWUk
zW8gZz8V^~-!>>r5<Kg!tukqZ0^&)#&bNfFL;e!!=1Gw2U27B%xdA4Wv<;~kY3Ebj#
z9CofH?&4qnlTsi(oUiJ{Io`f{g}*M0x1ACGn+X3?gwI;rT>l3n{KFA`Ik@?=4gD>W
zJok4iaqjQeBmChA-xcA%iSWbM`Tm-nFJj!^3$A`<J1-;7cCL@`tr7mU2!Albe-z>W
z7U8c&_yK>_e0*0%cn;kBQ-ObKB+vfY8pv;h{8u9K_Y>zldFqu7JNdr*vIxIE!f%W4
z7b5(~Pc(1${Sp4dtD4Kd9pNWm-CTb4HO+Zvgja~aA(z^I@~gzzZ{H@)@;@NX@=r(j
zn-P9guDSh-Bm9C0?~L&4BYazgKN#V=BK(;Me<{L`>}cNKMG<~}gs+S6A4mAqeBz4c
zB_6L+BRm`7S4Ma}!f%c69TEOugx}oR-2Qtb{MiV9E5eWNYOa57g#R(Zr*}8k^Pvd8
zEW&S(@P{M()k5=***@HS5nhh)kqH0q5k4N_C-yeCvnRs;F~UDyY_4a0gnv51
z|2o2VMEFF1quq0+H1g_Ar3OEk`0d2`^U_}<el*GdkT}23^(=9IpX=O#M!Wocbsh1k
zq`#N=OLD2L3wMC)IzCl?M$z6jlIPFc+)bR<<rRYsdlpc;p9fd{2g=Wr+***@O7eT9
zZuZ<4$***@8e+c-4;Iqn3owJ=k&oCF<`Zd1Z%PkK0=*6C&8S+a!Umfu6*q3|>T+QJA
z-XGyl5$ES!FA`@xQ!BpxQ2+c0|44*)6X)?N5kHW|***@5Mm|)|w8{Ee6b@>13fd3l&
zxq!a}e#{2nFVpiT_-Wu;<@fR1iSzr>>xmyi_CFZmKZx*OMEHvlKDXK!7ycYY9bEf$
zxcp>re|Iy<^ZUr(A^x_=o1cF{ocr}$gufc$Q)>-7S<kh^d7tn%5&pdh|80c75#a~c
z8}@L!cSQID5&qK%Zy9Q?e@%q<MEGYT{O$;UJi-s#*szEF|K12cEyB-;@Jk~6Z^1PV
z^?6A5bZ^Il0q+2REZ}+YlQ#***@WV@dD=!?Q3m6EMZiZ8msb<#dC^B)^;95V2Uo`L
zLw#uTWP9deer*9)dG_;{BmChA|***@RZkgQfVrw_x$AjM*@FT##8t?<bA0n=gLOS$6
zDZ9Y6U;kTvEI;fC<n8;<FOWRncOQGLYV&J*iyY^;n!HZ|ZsU74>^U=#KML~KlDx)M
zM*ov?2g$Slzfb&iku&?BB(C<D{yz|BJ;z+9t$6!c&&kB!lJlm2A#q;6K1ZC}eStXV
zr6WJ-nsxgM=8GfzV-fy|2){SNpNa4{BmAK2o7=en-15MSnAb~5p8c?vIQO^rQ(nL7
z(a;=6d=7z!@%c64s{crTd9pL$?*)H~_-V9`KM!v4*^c;}2)KQI>9|jOg=!D?>vrM`
zNdLDY{5!-|&+)MHk$_v=J_fFKYTNCIrzb;>_<lOz3FMy(_$cI$ANB^QZr$g9&{vZ-
z;=IpaO`P}nC2;fS0Q|X?<o70xdGv)qeiP)MA$i_!***@lW!B>mo)Sraf4K(Xuo*A
zUlQS+5nhk*n<9L7gr9t)GiN`0vJt+G_}nRtejTvY>oGrn7Ji!vuKnfx?MWoB>thGx
zKTPuc{lwM8*`Hq_&i=eF!gogaQxSgZXBz%_M_yXKz5M0|*Z8z~JwTk}^E2S)pIfK-
z>%SE6+rhs<Tzxlolb63Y;2GGxk2w4DkXssd^7kE%1y_3xlAmoeyxd}v&(Qb|1oG=3
zUysOtk~ojoHv&Bw==m1ObGrw7vs`?>EU(S~+D9$wn={DHd5-$eA?ba$>e6zWKREd;
z$***@N8l`~84=%KXy-J?D_T>Na~W1-J3loU3J>KR7+F;<X-f#I-M3)Vp!iew{@6
zal7p7XFIWNbX>m!WcDCzUAu=sryf3!*Q)<ylK&F8+OP8Ve&5%@RbJbjiTd9XXFY#M
zT;&f#{qJ!!{Wk79NuKrWBCdLD-LdgeJ?uBLOYPKOL1uoib=d5;>uo=%oc)GyOhkoy
zZlj+y)S@<MF}@Pq^k`Le4QtRzY4wLxUVq1dmNtJ#`A5LB#QA%F7C$PcsxO3m2gxhH
z9K4UX+GF3N944;***@4tF14osK0@-UrvvqSh^w9w<VOQu1Ammb>ap($?k28!HbZ_-
zz;6H_C$4(NF;H(1S3NgD-gQXoT2=l9a9z8#=s`a(WTl0;e&5qdhPdjn?{~}(_zu){
zjnkqB*00||(4vP4_sajbhPdkg2h`gGZoj8&9r4#lPY3Zo60Z<f{ZF87{?@AUpMc*&
z^7{Q;E7ot5|0T|CCwbNL4C?m~w?3+_G2$x!0_r~s_-m-|Ca&YYTQ8FGB5_4;qCOGu
zeW=@gfL2w{XFn<bNtr-GFun%+>^B152JRj%$aN;)0zL!xg~lgvU(piq-QaTqJ_7EH
***@b_QH_;?aChy#;*tA*4qj`!EyOd#RnG$GnNOVcv=P_5YWtZian-XNde#tMu8pIt
z!%>myG5b1*tDdu=r;j+>vzfT+vHU+wT=kp>J+}~NJ==(@9`n(5;;QFT=(&fu%4g8G
zM+0u_%`LP22^CWnEx3OfKVmX(1#d$~Oy2m&(aq&O^}1F6qIOSg9aHvA`LVh`+mIhC
z?=P>{99Z#u1};#hKZk-_|BSbQ&xgE?uhm;4JWE{X=~PuHWsN_$cve4K>A(x~&sd8G
zeId_y0JEGPRoy<%bB-U!kMVriA5wY$SNIyg-%Hz7J8l2gqCkrEH;a0Pxa$)3?eha(
z(ap6KyUz3sL(X!***@iFjr9F4od5j~v$)o)q&vm=ln2Df(fwD#****@DY-qiPv&EUEdU)
zLi`?*R~4h^*J!|p=c<<d^ZW^DcQ?s%yL*UpyPW4$MOKwdnIL)P_Wg(i?dWOk?*~w~
z-^Z<-+nq!5+^+rpTa{Olto&$cC3$^0fpO0g*LD}8-cFp`T}PbT?IW%)v+|>*67UhU
zJ4{^LZ9{#8IJdivIJbKbaebMUA1$K+w|2*fYr8k0zMD9=yN5Wp`yz3D*}gzq6~6|2
z{1neK=(***@1RibGvQCx!pCywW$`***@6{gg1kdLy#C6^cqi#pF$K^33V*CD(@hrIc
z&-gI-wm|<F`1XL?{^Op2XLS*iG8*t<@J9na20j*WH)%xAj{=_6L6)*R;KSg10zL*l
z9&q=tK^38YHjdW+7UDdPbBOaeW{A6dh`cnPxQ_4mjoPTp-+*_3XNjxncf)SWD{3d(
zvySB1o(|$_Pdn`CBhL0z0&eyU6IXlggFPd}*`960*`Dph)t(O6a}RO0XEfku&lqvF
z=ONg$n>gFEhdA3aPF(G=^)cL^+jvcoyxM8@*gUZKvH0fwHrvDdZMG+ad63RWiyz|b
zpVokzJz3)FADdV0#Mz#8#Mzz>;_9Cfiyz`_PbJ`H&oFVd$L8}0akgh0akghWakXc=
z#Sd||XEfku&lqvF=Vul_#Mz!b#Mz#4;%blWL+tx5I*x451j#EmdlEH5ip7uRFZ&*b
za<*p<$+JBf;%d*B#Sd||r#0YaPnNj8{GH_=;%v`4;%rX`akXc+#Sd||$3DMoelvT9
zNnT(6-trG|w#Po#ta{j<?***@Ej9dH=XM08iKCx9Uk}^hIU%qbfL!9l|L!9jyC$9EP
zz#***@KMr~Ejlf2q#_9VDY<yGVz*waFs?U_TI?a2^Vd+bJkK5_O>YrxH(j2a?E
z57Y5l>***@B=Uj6_7o93kVmz(BhRx^$y9h{oxJQF~vPP0x1r>3QUHEr^VY3a9$
zLvDAeA-AW_A)hrFpf=***@g^~SFO-tX!oqTRuf}8cpSo-yzfcWaP^eM>X)6<gUCIi%_
***@K0PgcD%***@ypvboZ4m!TZ=0vmc<J+UE&5zXIc}>{&$fbR<fz5uv+`Qy^{C~2
z{*YWDN97%;KaXQKcspWnF1T*5Rel)!<KQ>Saf-yldl08Hz`p=)***@A_vj_5z
zK>qI`k81k+)ptQ&2FI0)An**h?Z-R7C%`8l|5xBTm$lt?gu3w$fZM*wo_ntXw|sv#
z^yu?@=Lh7KkAYtaz8m}***@FKY7m8-yS1g{_;***@KNv;;17XMfd3JE7x*|Ff3eiH
z{07|KKlr)F$***@yk@}v_Ws;n$hRPHRzv<kk((m(!e**v3e8LEhYra9HRR`k+XWwk
zJ!d#Q$EBIW;$$`C?K#nDHg2XL&)Y7Ae*JqK+U{7u_4~?dX9jY1ybbd9oJc>zs^u>5
zc05-qfj<B}qRf>!{*df~y!~E3dk*s}@X_PF;AYsb_r+>wD<<3>(5G?i?9X`l?~9z4
z7U60?x|NupPjI}EXN)g_yyXGo=YrewU*l`Rtv_Z?zi_q3p8Na|_UQZnYERZ#mn8Q5
z^***@uJYlq|3T9ORox>3h5DTJK}{(b02)xyQ?E2pG2d7ldc|L){xrgihkTaGu@
ziwxvvi76WA_Wa%A_Y}uxCicGTxsX2t{ClV$i{qt^AC_cLx1)YOQT5w%dCRxgLC-HC
zzZS<kz)yqY&Hisge-?5X9KQ$s_PpNg{{{4X6nYjxUhm7)Z<fF8ebZN=zXNg^9QQ%L
zJ;%5FJWF1v9(y0|B*=dN{64g6{#oVtVaYJ$GB{r3_>A=VzWJvMdLD<KJmfckpM?0c
z_}vQq+***@lNQs=l&L9I~<oh0R0y4{{;P6=***@1<82ln|i_hPIuLqxxc3+16EcENT
z>xvkl^JN%33;Z7Nv4GD9m#OE9$!EdMPUCvN;PeOb8-!19vVXW<xX$bCr%cvA0&dUa
z9`***@2f*$3%bX4V7<***@x6}OYnB^Hz5B9;cBO?*XVY#*W~eh(ENFXtY<F&fbW#~
ztmQQDECT#>***@GHRW_m5l#-Un`P=-c{x9e4)@un74P;cEX_;OF}xzZ>$F
zCw}PUXQaPRO~S*KXTa_EsTqG6JP-ZG-v#dp_-t7yHP6`ZM>F}k!qso~dsVJQyQ{!k
zmU^%i{1Wi(;J1PgfVW};(ux7Q9o&8o(Q8PtcN_nRS8$w+tCmNEPm%rbY+sevzC2<2
z&-eAKa6<onkjmToW%4gO-q`0q3jObbkD+ewqa1#4^Y}knxcX=80^jbFuxBCo$b}y0
zzCp`b!qv~is7rIMtO4H+J_f!HdRi{_;7i~e!0r1vHZQI-eu)=c0{Pp(C&07d_ky>!
zdvF%`zkpZ3ZQP$TJ>Y$ie+Rq+8z>B0@}***@4Mg|5ES?aNCD|Sh)J91M_nj`qzSw
z2fPeD_PwK(kpC3;I5yyqfqxZz^hyuz2Hy$***@d*z$BQ$oKp7oyFdh(p<DS6%lJ+BMb
zPey$i;|QF*DZE+!JU|vKjURhoVJ<FsKX`V72j;iaz=y$yAb&Qvy$=DilB>Y&`vWIH
zen7b9pA7t&1-}XM_Wgv<f!_sg-)DFj{d>***@1psUdt{1ko>doX8rv!^w|5~b|*aU
z^c<IDaJ|ioy^y!}zwvf?GE){-o!7QMuz7v5aP?<90v5xWe8|bqNI#cv`RxM8k3#-D
zw4VpJ&mUVn51Ib!yx{5Z-)&C+tRw@&H_!Ixzv1|C>7BjV`CZ}7{Ie7KGdK9_&7VI7
z9|b=jcK!i8xzPjbul`*s^+Woc4)U`kzbd!qR?EQWgWKmsSAqY9aE%k2kG9YGIOIFF
zdchIMuLrm1O<xDU5q#t`9-M;s`69S|***@Ahws38C82+t5&!gbtJXf;dKL^hS{P(6O
z;BSJD1$^e=zTE@?V*1|?o(=***@Zo@806rG*4%3hI#q`%qf52}t{Q=)$`UC!treD^1
zEm`+}l00Sl!CS!p1H3)p`p10TxCeX=cqQPAz=s2V9=Pszv{<{>fNu}@5V)-eCjSNS
zu|***@ZACbC-Cur{}y~A;CsPk>6v8bp<+***@d3vmHy?^;4;&`sVELjNt2>5Z}XMz7L
z;1`11_djJBb>%***@8_y5z?*tbi{~Gj|y#D<%wdXDHEcDzWT>kA>z8>KZ2|q&e!vt>Z
zin#KLi2TzL{s*ULdNPXZkH_(C$EPNl0T1e!-v>&*lvDeaqlK$I+b{5^WZJs2Q26XL
zt2X`)@tG!***@p9`SzdEA79r6_zX#0n2BJ#bEPfqoU&7MsW`I{sBo6xfzowjxD5yvs9
zr3t%Fd?KRfe?***@dn5AuB7C|S(9HkGMfd{YIxgb~aN8%G9g)|+6W2_C-swRS
zmi`WVw<ZIo9~+!gA+kB5=W`MMHxd4Dgg+7CyCeL!!qpG$h~uTOe{V#7Uxd$=`KEeW
zKJ68>U>?6ucr(8(hWzjvFaKS%n~lg{7~yLpyg$N+BK+nE|6+uHE5h%***@JAy2$HLWb
zt?0jO7hU-k_z3cb`SAA<J^vZu`y%{+qneM)i4i_8!WT#Q>Ih#K;l0Au4;d^O2O}SR
zIwF5pgnv82cSiW*5&pbzH!qMN+b}==9Fd<YcH0<X2;***@oA5q@rjUl!q=
z!nI!`FxKL&-}tAz^+V{ybrC&xMEG}{p6O{Gw7C9(@Y%8-wj$emSDuOJc_qT%j_^Z8
zbu<6Zjqp_wetv|vN4WkS#%As2g{z-***@Md^LlODUMEF;rC%M`COW)serBWLx57i0_
zJM*=|qOPQ`x6+^MF4PNM^`***@N>gww+)^nBGQe%Zueo#*KSsj<>YJKHRx#D0wm#@pO
zxachm7Kdt~Or=~ZCFuo)dajzU7ZUxiwrI(!RV!8|m3%cn;44c~$x5|cFL#woxy~)Q
z!TdmBzZ12T)I{k(ezUt`5=<?#=***@a%reuEDxp^G|s7g=@peqX^V8JCqGoG
zH=67&***@dmBGhZ!OwX0mMSIdJ|H8tFu`j$#Ve{VC}y(#KjyDpKg6iTI{8#Pm29LN<m
zS4!n-p=zk!R~+mw4)$***@ks;X{(g9L&d>jy_hc*uWi^MzVi*GLegw!<9uI!u)9={
zfe^p+qetDjO&d~iHLhA6s?<}`UC4LUiyJ3-G6Vxd^}^=#imp;2KR8rL>)pj#S9x$y
zBhs9xZYg%kRk_}3nM7qUw+wcrVuj81!eC8?wlQ3_O~txIZ|Y6c7`EU-(@uJ|xq6X;
zuSwhpD%A5m;(^qH+CaWquXR;9^3(9z&xr2o#`MZ+Av8(HD?MG<OqE)pS}f;^-L)i_
z8z^^cOp6<wy(>@OpJ~{***@j6H<nIWO=bsaY3M))SFG9(sn!*3sRnX}H3X&RBX28t
zXvK0UCFZm)OSRIO2Gf~LeufVu;#MqyLLE(~sWrXI4e%t(G(=PXAtx+fxgSzJ%U3k?
zH1fwJZH#qH++Z)a(Qq}VsWA?YrFzv_p7>EJS8BeV%XfBG3maiqsn{hUURb7Tw3+UL
zL|d_<`D~f>K0j3ND_55_W_~(-8uP*hrE5<zZ5m~cPMQjyG&*Nf#JCM^$SocdiOjs1
z****@7jj(#-Gnqb%hb<zO2X+a)apakLU7g@*3eNa40bosp{o7DB8$vQnGbY@
zCf0Zx8-@***@A~^+XNIcgiS~Ymzu6v-{PG^i}G)P1T}=QKJb#wR*V{63GgL
zA{p-gVcJH?+uahdJ{1oZHmPCNLP=J?TE8x)E0-lkYo)p)%Z;Qmrzho7w_cf&6-KId
z)k?BcI+G^zMi;AviY#@xTB*!^GFliY<_2PCC56`|J1;8Ms`*8eTB?@23bmT=UM|;Y
z%***@AhmUAY2>Q6p&<2P*kuwa}fbmur2+&U~)Fvr9HK{&lz5RM)_g-inGw
zHD9V|T<RfL(4{QbRUR0SMb8DO=Wd;***@3)MW#y`+ZT^&oS}7;vlK1sWzE-RE$qLom
z=OcXMQk>BBz_mg{@9Ny1>`$cS!D6Rcn#=8f-UXWsd#~3OTq}ds-Cb>Rs#?hF8iA|!
zH}do**91-V>1Iz>AZOFY(_y4}s|LQTId6=TyBv`+DHh--JEhwy-Go;1UHyf+4;NS|
zIm<<gKjj-X=***@m_O;&w(d9vuDbCxEha&J*oRw^>y?&x-|ejm%Li9e^Q$-mMp
zu>X0N{+gen5uTJ3_gA9V%d*+nj*4}f^BXh4n@}p&WJa%C*0v%k6?+Pu<#NAt!d~WN
zZzy|qw<kC~***@dh$1HVP6^lhm%1hu^t>LV;PsRp?pXnrEJ5Zm>YZLLchY9*m)7YcsP
zq)N#TDVx-}ls4vLiYmID7?fL*stjSJEZa=!aifB?OQ2Sl6zlt?3mTo#=;yljDZM=)
zxyg4lbb>lU)J1^bjS{***@mEK`N3HYv#8D>2v2E7cnlg`hSRtlQ!mU6M8y>sux-
z-L*=gpn>ae7MzL2!9rEG{ga{iq^oZ->aON{HCiTJJWw1|J{d}eE7XFk<qn_;y>`+L
z+L^PyFxVe7qGMf?ye%PI3OD_^T7R+9DKRkF1lj1z&SxY0&S_`I1TM^Z--OiM6LRmN
zkeZW1Zhi_moD$;***@su#kG6g*0?qcs})9c*2~AkzORLm`pD0&Z}J;3st>^S|XoV
***@l3WJ`***@sp~$vz9A|B-*<R6<N6SW+a!x)mo9WI?<|y!V=q6%h`c^Z?S86qH|tX
z****@y)YnhJ!QGmtqjQ|DV54yy48^Zmd$***@H&ZPmdkES_Gv?Ux|H7{3;w2ZwO`WS
zMyF2hsN8a#CK8y~SiJmQl_s*BZn1~NLfY}@S>0FVWp?QrEO*tiTXNm>OAQ{C)CMb6
zxw0p<PV-gWnIU_}LDJ|?NFvv*s_Z9a>m*aucUAUDwr!Hl6nbY9(D%~y4tL0Ah`)Gf
zP?mIA8Qdd){X8Yj+Pcy&w-)kfM?2czBcmbR@~cC7z3%5^yQ?>qjTB^d)by4^Hrjq;
zl=KhCaCJ%gDEN`eX?W=<E%iGD=RtVPFJI2%-ezsy##***@9L&jh_veb$4e&~8
z76M?PR_Jp1VSTZur&!SJA<l$3s?A4_+3OR5?)3W#rHb5}tHfYgZb1tAQVzK;ncWg#
***@4PrIF&y^!o;Nx^q8`qYb?CQdt5X4(lqFYlX&my6)@NxRz-AYXVdYWC+SzT&Q}z
z?***@zNc%t#5o9RuJe7!F>I3znokuG&rw&-!NYoL-eTs1V9I;*Evk<PmZcfod9Mo6!c
zsnt`nzT&xw25o=RXk90$e}GfeO{***@9r%uEYzwpF{DQ_eI*2B-24QVD@(q!
zx_56pkwI3j+gNyQ6uMn~#gg1CYXJHXDQwhr-@n!=@9x0dzC+!i{qpA;bH{BDWEK<#
zhIHQ2gS|=H4T~P{mTF<3ywM&f)zZl<&poU8qK$3p9C*xoUks2W;YK#sUyv0zO(wE4
zD<wKEE|${B!YFyWU3$}AQOaxdrAMCNxx0{|Nok3*m`|+Uk%(u1Z==%!5A0<2SL8m+
zPfNY4a64lX&=qyRvFP?=t9Kp}WsPWcz0}***@vsc5F)EWF9rt9QRw@+u#<w<9(Q%b*
Z*FWGjy0lT#DAQSpA#k&h)+l)E{{jSM|IGjZ

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.alias b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.alias
new file mode 100644
index 0000000..a4e7677
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.alias
@@ -0,0 +1,3 @@
+# Aliases extracted from modules themselves.
+alias serio:ty05pr*id*ex* psmouse
+alias serio:ty01pr*id*ex* psmouse
diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.alias.bin b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.alias.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0b13537105c401379bc57d7871cd3486d3e7cd1a
GIT binary patch
literal 101
zcmdnM{w17&iGfjpfg!%2NGmf%E44z40SFjDL_u+Gera(k18$krqRf1&l1c*xL(>Bc
***@L9MuW0Rw{r0F!PNmjD0&

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.builtin.bin b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.builtin.bin
new file mode 100644
index 0000000..e69de29
diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.dep b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.dep
new file mode 100644
index 0000000..7ba5711
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.dep
@@ -0,0 +1 @@
+kernel/drivers/input/mouse/psmouse.ko:
diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.dep.bin b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.dep.bin
new file mode 100644
index 0000000000000000000000000000000000000000..bdd0eb5fb37bb470d36c28807569a458e5f866d9
GIT binary patch
literal 72
zcmdnM{w17&iGfjpfx)RbH@~zvl>rDCK}2?***@0}eo9ehS!z+***@lX^B2qiGBe@
Qsa|%z6+=P60R{#h0Mj28lmGw#

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.devname b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.devname
new file mode 100644
index 0000000..58f6d6d
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.devname
@@ -0,0 +1 @@
+# Device nodes to trigger on-demand module loading.
diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.softdep b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.softdep
new file mode 100644
index 0000000..3cc0512
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.softdep
@@ -0,0 +1,2 @@
+# Soft dependencies extracted from modules themselves.
+# Copy, with a .conf extension, to /etc/modprobe.d to use it with modprobe.
diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.symbols b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.symbols
new file mode 100644
index 0000000..618c345
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.symbols
@@ -0,0 +1 @@
+# Aliases for symbols, used by symbol_request().
diff --git a/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.symbols.bin b/testsuite/rootfs-pristine/test-modprobe/force/lib/modules/4.4.4/modules.symbols.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7075435f6268c4d815aec093d61e26647666ba76
GIT binary patch
literal 12
TcmdnM{w17&iGh)***@4A6;A>Z

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/force/proc/modules b/testsuite/rootfs-pristine/test-modprobe/force/proc/modules
new file mode 100644
index 0000000..e69de29
diff --git a/testsuite/test-modprobe.c b/testsuite/test-modprobe.c
index c3ef31e..92348b0 100644
--- a/testsuite/test-modprobe.c
+++ b/testsuite/test-modprobe.c
@@ -187,6 +187,28 @@ static DEFINE_TEST(modprobe_param_kcmdline,
.modules_loaded = "",
);

+static noreturn int modprobe_force(const struct test *t)
+{
+ const char *progname = ABS_TOP_BUILDDIR "/tools/modprobe";
+ const char *const args[] = {
+ progname,
+ "--force", "psmouse",
+ NULL,
+ };
+
+ test_spawn_prog(progname, args);
+ exit(EXIT_FAILURE);
+}
+static DEFINE_TEST(modprobe_force,
+ .description = "check modprobe --force",
+ .config = {
+ [TC_UNAME_R] = "4.4.4",
+ [TC_ROOTFS] = TESTSUITE_ROOTFS "test-modprobe/force",
+ [TC_INIT_MODULE_RETCODES] = "",
+ },
+ .modules_loaded = "psmouse",
+ );
+

static const struct test *tests[] = {
&smodprobe_show_depends,
@@ -196,6 +218,7 @@ static const struct test *tests[] = {
&smodprobe_softdep_loop,
&smodprobe_install_cmd_loop,
&smodprobe_param_kcmdline,
+ &smodprobe_force,
NULL,
};
--
1.7.3.1
Michal Marek
2014-02-27 22:52:12 UTC
Permalink
---
.../3.3.3/kernel/drivers/input/mouse/psmouse.ko | Bin 0 -> 95649 bytes
.../lib/modules/3.3.3/modules.alias | 3 +
.../lib/modules/3.3.3/modules.alias.bin | Bin 0 -> 101 bytes
.../oldkernel-force/lib/modules/3.3.3/modules.dep | 1 +
.../lib/modules/3.3.3/modules.dep.bin | Bin 0 -> 72 bytes
.../lib/modules/3.3.3/modules.devname | 1 +
.../lib/modules/3.3.3/modules.softdep | 2 +
.../lib/modules/3.3.3/modules.symbols | 1 +
.../lib/modules/3.3.3/modules.symbols.bin | Bin 0 -> 12 bytes
.../3.3.3/kernel/drivers/input/mouse/psmouse.ko | Bin 0 -> 95649 bytes
.../oldkernel/lib/modules/3.3.3/modules.alias | 3 +
.../oldkernel/lib/modules/3.3.3/modules.alias.bin | Bin 0 -> 101 bytes
.../oldkernel/lib/modules/3.3.3/modules.dep | 1 +
.../oldkernel/lib/modules/3.3.3/modules.dep.bin | Bin 0 -> 72 bytes
.../oldkernel/lib/modules/3.3.3/modules.devname | 1 +
.../oldkernel/lib/modules/3.3.3/modules.softdep | 2 +
.../oldkernel/lib/modules/3.3.3/modules.symbols | 1 +
.../lib/modules/3.3.3/modules.symbols.bin | Bin 0 -> 12 bytes
testsuite/test-modprobe.c | 46 ++++++++++++++++++++
19 files changed, 62 insertions(+), 0 deletions(-)
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/kernel/drivers/input/mouse/psmouse.ko
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.alias
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.alias.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.builtin.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.dep
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.dep.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.devname
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.softdep
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.symbols
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.symbols.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel-force/proc/modules
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/kernel/drivers/input/mouse/psmouse.ko
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.alias
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.alias.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.builtin.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.dep
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.dep.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.devname
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.softdep
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.symbols
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.symbols.bin
create mode 100644 testsuite/rootfs-pristine/test-modprobe/oldkernel/proc/modules

diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/kernel/drivers/input/mouse/psmouse.ko b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/kernel/drivers/input/mouse/psmouse.ko
new file mode 100644
index 0000000000000000000000000000000000000000..4eac2a3da3230435e7b21074f2a2681648cafc5e
GIT binary patch
literal 95649
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
Z*FWGjy0lT#DAQSpA#k&h)+l)E{{jSM|IGjZ

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.alias b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.alias
new file mode 100644
index 0000000..a4e7677
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.alias
@@ -0,0 +1,3 @@
+# Aliases extracted from modules themselves.
+alias serio:ty05pr*id*ex* psmouse
+alias serio:ty01pr*id*ex* psmouse
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.alias.bin b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.alias.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0b13537105c401379bc57d7871cd3486d3e7cd1a
GIT binary patch
literal 101
zcmdnM{w17&iGfjpfg!%2NGmf%E44z40SFjDL_u+Gera(k18$krqRf1&l1c*xL(>Bc
***@L9MuW0Rw{r0F!PNmjD0&

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.builtin.bin b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.builtin.bin
new file mode 100644
index 0000000..e69de29
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.dep b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.dep
new file mode 100644
index 0000000..7ba5711
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.dep
@@ -0,0 +1 @@
+kernel/drivers/input/mouse/psmouse.ko:
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.dep.bin b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.dep.bin
new file mode 100644
index 0000000000000000000000000000000000000000..bdd0eb5fb37bb470d36c28807569a458e5f866d9
GIT binary patch
literal 72
zcmdnM{w17&iGfjpfx)RbH@~zvl>rDCK}2?***@0}eo9ehS!z+***@lX^B2qiGBe@
Qsa|%z6+=P60R{#h0Mj28lmGw#

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.devname b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.devname
new file mode 100644
index 0000000..58f6d6d
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.devname
@@ -0,0 +1 @@
+# Device nodes to trigger on-demand module loading.
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.softdep b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.softdep
new file mode 100644
index 0000000..3cc0512
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.softdep
@@ -0,0 +1,2 @@
+# Soft dependencies extracted from modules themselves.
+# Copy, with a .conf extension, to /etc/modprobe.d to use it with modprobe.
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.symbols b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.symbols
new file mode 100644
index 0000000..618c345
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.symbols
@@ -0,0 +1 @@
+# Aliases for symbols, used by symbol_request().
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.symbols.bin b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/lib/modules/3.3.3/modules.symbols.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7075435f6268c4d815aec093d61e26647666ba76
GIT binary patch
literal 12
TcmdnM{w17&iGh)***@4A6;A>Z

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/proc/modules b/testsuite/rootfs-pristine/test-modprobe/oldkernel-force/proc/modules
new file mode 100644
index 0000000..e69de29
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/kernel/drivers/input/mouse/psmouse.ko b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/kernel/drivers/input/mouse/psmouse.ko
new file mode 100644
index 0000000000000000000000000000000000000000..4eac2a3da3230435e7b21074f2a2681648cafc5e
GIT binary patch
literal 95649
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
Z*FWGjy0lT#DAQSpA#k&h)+l)E{{jSM|IGjZ

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.alias b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.alias
new file mode 100644
index 0000000..a4e7677
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.alias
@@ -0,0 +1,3 @@
+# Aliases extracted from modules themselves.
+alias serio:ty05pr*id*ex* psmouse
+alias serio:ty01pr*id*ex* psmouse
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.alias.bin b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.alias.bin
new file mode 100644
index 0000000000000000000000000000000000000000..0b13537105c401379bc57d7871cd3486d3e7cd1a
GIT binary patch
literal 101
zcmdnM{w17&iGfjpfg!%2NGmf%E44z40SFjDL_u+Gera(k18$krqRf1&l1c*xL(>Bc
***@L9MuW0Rw{r0F!PNmjD0&

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.builtin.bin b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.builtin.bin
new file mode 100644
index 0000000..e69de29
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.dep b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.dep
new file mode 100644
index 0000000..7ba5711
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.dep
@@ -0,0 +1 @@
+kernel/drivers/input/mouse/psmouse.ko:
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.dep.bin b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.dep.bin
new file mode 100644
index 0000000000000000000000000000000000000000..bdd0eb5fb37bb470d36c28807569a458e5f866d9
GIT binary patch
literal 72
zcmdnM{w17&iGfjpfx)RbH@~zvl>rDCK}2?***@0}eo9ehS!z+***@lX^B2qiGBe@
Qsa|%z6+=P60R{#h0Mj28lmGw#

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.devname b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.devname
new file mode 100644
index 0000000..58f6d6d
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.devname
@@ -0,0 +1 @@
+# Device nodes to trigger on-demand module loading.
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.softdep b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.softdep
new file mode 100644
index 0000000..3cc0512
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.softdep
@@ -0,0 +1,2 @@
+# Soft dependencies extracted from modules themselves.
+# Copy, with a .conf extension, to /etc/modprobe.d to use it with modprobe.
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.symbols b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.symbols
new file mode 100644
index 0000000..618c345
--- /dev/null
+++ b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.symbols
@@ -0,0 +1 @@
+# Aliases for symbols, used by symbol_request().
diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.symbols.bin b/testsuite/rootfs-pristine/test-modprobe/oldkernel/lib/modules/3.3.3/modules.symbols.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7075435f6268c4d815aec093d61e26647666ba76
GIT binary patch
literal 12
TcmdnM{w17&iGh)***@4A6;A>Z

literal 0
HcmV?d00001

diff --git a/testsuite/rootfs-pristine/test-modprobe/oldkernel/proc/modules b/testsuite/rootfs-pristine/test-modprobe/oldkernel/proc/modules
new file mode 100644
index 0000000..e69de29
diff --git a/testsuite/test-modprobe.c b/testsuite/test-modprobe.c
index 92348b0..b675f48 100644
--- a/testsuite/test-modprobe.c
+++ b/testsuite/test-modprobe.c
@@ -209,6 +209,50 @@ static DEFINE_TEST(modprobe_force,
.modules_loaded = "psmouse",
);

+static noreturn int modprobe_oldkernel(const struct test *t)
+{
+ const char *progname = ABS_TOP_BUILDDIR "/tools/modprobe";
+ const char *const args[] = {
+ progname,
+ "psmouse",
+ NULL,
+ };
+
+ test_spawn_prog(progname, args);
+ exit(EXIT_FAILURE);
+}
+static DEFINE_TEST(modprobe_oldkernel,
+ .description = "check modprobe --force",
+ .config = {
+ [TC_UNAME_R] = "3.3.3",
+ [TC_ROOTFS] = TESTSUITE_ROOTFS "test-modprobe/oldkernel",
+ [TC_INIT_MODULE_RETCODES] = "",
+ },
+ .modules_loaded = "psmouse",
+ );
+
+static noreturn int modprobe_oldkernel_force(const struct test *t)
+{
+ const char *progname = ABS_TOP_BUILDDIR "/tools/modprobe";
+ const char *const args[] = {
+ progname,
+ "--force", "psmouse",
+ NULL,
+ };
+
+ test_spawn_prog(progname, args);
+ exit(EXIT_FAILURE);
+}
+static DEFINE_TEST(modprobe_oldkernel_force,
+ .description = "check modprobe --force",
+ .config = {
+ [TC_UNAME_R] = "3.3.3",
+ [TC_ROOTFS] = TESTSUITE_ROOTFS "test-modprobe/oldkernel-force",
+ [TC_INIT_MODULE_RETCODES] = "",
+ },
+ .modules_loaded = "psmouse",
+ );
+

static const struct test *tests[] = {
&smodprobe_show_depends,
@@ -219,6 +263,8 @@ static const struct test *tests[] = {
&smodprobe_install_cmd_loop,
&smodprobe_param_kcmdline,
&smodprobe_force,
+ &smodprobe_oldkernel,
+ &smodprobe_oldkernel_force,
NULL,
};
--
1.7.3.1
Lucas De Marchi
2014-02-28 06:03:12 UTC
Permalink
Hi Michal,
I only wanted to send the kmod_module_insert_module() patch after passing
the testsuite, but then I noticed the testsuite is hardly testing it :).
Michal
testsuite: Check the list of loaded modules after a test
testsuite: Add test for modprobe --force
testsuite: Do not provide finit_module(2) on older kernels
Add some tests for kernels without finit_module(2)
libkmod-module: Simplify kmod_module_insert_module()
It's pretty good. Thanks.

I only have some cosmetic comments. I can make the changes when
applying if you prefer. See in the individual patches.

Lucas De Marchi
Michal Marek
2014-02-28 06:42:01 UTC
Permalink
Post by Lucas De Marchi
Hi Michal,
I only wanted to send the kmod_module_insert_module() patch after passing
the testsuite, but then I noticed the testsuite is hardly testing it :).
Michal
testsuite: Check the list of loaded modules after a test
testsuite: Add test for modprobe --force
testsuite: Do not provide finit_module(2) on older kernels
Add some tests for kernels without finit_module(2)
libkmod-module: Simplify kmod_module_insert_module()
It's pretty good. Thanks.
I only have some cosmetic comments. I can make the changes when
applying if you prefer. See in the individual patches.
I will resend an updated series. Thanks a lot for the review!

Michal

Lucas De Marchi
2014-02-28 06:37:00 UTC
Permalink
Post by Michal Marek
If the test's uname -r is less that 3.8, return -ENOSYS from
finit_module(), so that the fallback is tested.
---
testsuite/init_module.c | 25 +++++++++++++++++++++++++
1 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/testsuite/init_module.c b/testsuite/init_module.c
index 42177e7..96f4aa7 100644
--- a/testsuite/init_module.c
+++ b/testsuite/init_module.c
@@ -37,6 +37,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/syscall.h>
+#include <sys/utsname.h>
#include <unistd.h>
/* kmod_elf_get_section() is not exported, we need the private header */
@@ -280,6 +281,25 @@ long init_module(void *mem, unsigned long len, const char *args)
return err;
}
+static int check_kernel_version(int major, int minor)
+{
+ struct utsname u;
+ const char *p;
+ int maj = 0, min = 0;
+
+ if (uname(&u) < 0)
+ return false;
+ for (p = u.release; *p >= '0' && *p <= '9'; p++)
+ maj = maj * 10 + *p - '0';
+ if (*p == '.')
+ for (p++; *p >= '0' && *p <= '9'; p++)
+ min = min * 10 + *p - '0';
+ if (maj > major || (maj == major && min >= minor))
+ return true;
+ return false;
+}
+
+
TS_EXPORT int finit_module(const int fd, const char *args, const int flags);
int finit_module(const int fd, const char *args, const int flags)
@@ -289,6 +309,11 @@ int finit_module(const int fd, const char *args, const int flags)
unsigned long len;
struct stat st;
+ if (!check_kernel_version(3, 8)) {
+ stat("/old/kernel", &st);
leftover?
--
Lucas De Marchi
Michal Marek
2014-02-28 06:41:18 UTC
Permalink
Post by Lucas De Marchi
Post by Michal Marek
+ if (!check_kernel_version(3, 8)) {
+ stat("/old/kernel", &st);
leftover?
Yes, sorry.

Michal
Loading...