[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b

Török Edvin edwin at clamav.net
Sun Apr 4 01:24:17 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit b63681a52b2ba8b7a90c7d42ef3858f046c9b5ba
Author: Török Edvin <edwin at clamav.net>
Date:   Mon Mar 22 17:16:07 2010 +0200

    Introduce BytecodeTimeout.

diff --git a/clamd/clamd.c b/clamd/clamd.c
index 9b87e3d..d77bf46 100644
--- a/clamd/clamd.c
+++ b/clamd/clamd.c
@@ -428,6 +428,9 @@ int main(int argc, char **argv)
 	    break;
 	}
     }
+    if((opt = optget(opts,"BytecodeSecurity"))->enabled) {
+	cl_engine_set_num(engine, CL_ENGINE_BYTECODE_TIMEOUT, opt->numarg);
+    }
 
     if(optget(opts,"PhishingScanURLs")->enabled)
 	dboptions |= CL_DB_PHISHING_URLS;
diff --git a/clamscan/manager.c b/clamscan/manager.c
index f8b4ed5..489b37f 100644
--- a/clamscan/manager.c
+++ b/clamscan/manager.c
@@ -403,6 +403,8 @@ int scanmanager(const struct optstruct *opts)
 
     if(optget(opts, "bytecode-trust-all")->enabled)
 	cl_engine_set_num(engine, CL_ENGINE_BYTECODE_SECURITY, CL_BYTECODE_TRUST_ALL);
+    if((opt = optget(opts,"bytecode-timeout"))->enabled)
+	cl_engine_set_num(engine, CL_ENGINE_BYTECODE_TIMEOUT, opt->numarg);
 
     if((opt = optget(opts, "tempdir"))->enabled) {
 	if((ret = cl_engine_set_str(engine, CL_ENGINE_TMPDIR, opt->strarg))) {
diff --git a/etc/clamd.conf b/etc/clamd.conf
index 3f00f8a..2f8a349 100644
--- a/etc/clamd.conf
+++ b/etc/clamd.conf
@@ -464,3 +464,8 @@ Example
 #
 # Default: TrustSigned
 #BytecodeSecurity TrustSigned
+
+# Set bytecode timeout in microseconds.
+# 
+# Default: 5000000
+#BytecodeTimeout 5000000
diff --git a/libclamav/bytecode.c b/libclamav/bytecode.c
index 0b33895..56cbf89 100644
--- a/libclamav/bytecode.c
+++ b/libclamav/bytecode.c
@@ -42,6 +42,7 @@ static const uint32_t nomatch[64];
 struct cli_bc_ctx *cli_bytecode_context_alloc(void)
 {
     struct cli_bc_ctx *ctx = cli_calloc(1, sizeof(*ctx));
+    ctx->bytecode_timeout = 5000000;
     return ctx;
 }
 
@@ -1825,6 +1826,7 @@ int cli_bytecode_context_setpe(struct cli_bc_ctx *ctx, const struct cli_pe_hook_
 void cli_bytecode_context_setctx(struct cli_bc_ctx *ctx, void *cctx)
 {
     ctx->ctx = cctx;
+    ctx->bytecode_timeout = ((cli_ctx*)cctx)->engine->bytecode_timeout;
 }
 
 void cli_bytecode_describe(const struct cli_bc *bc)
diff --git a/libclamav/bytecode_priv.h b/libclamav/bytecode_priv.h
index 8c129b6..c755b08 100644
--- a/libclamav/bytecode_priv.h
+++ b/libclamav/bytecode_priv.h
@@ -136,6 +136,7 @@ struct cli_bc_ctx {
     /* id and params of toplevel function called */
     const struct cli_bc *bc;
     const struct cli_bc_func *func;
+    uint32_t bytecode_timeout;
     unsigned bytes;
     uint16_t *opsizes;
     char *values;
diff --git a/libclamav/c++/bytecode2llvm.cpp b/libclamav/c++/bytecode2llvm.cpp
index 31bdfcf..238720e 100644
--- a/libclamav/c++/bytecode2llvm.cpp
+++ b/libclamav/c++/bytecode2llvm.cpp
@@ -1358,6 +1358,7 @@ int cli_vm_execute_jit(const struct cli_all_bc *bcs, struct cli_bc_ctx *ctx,
     struct timeval tv0, tv1;
     struct timespec abstimeout;
     int timedout = 0;
+    uint32_t timeoutus;
     // no locks needed here, since LLVM automatically acquires a JIT lock
     // if needed.
     void *code = bcs->engine->compiledFunctions[func];
@@ -1382,8 +1383,9 @@ int cli_vm_execute_jit(const struct cli_all_bc *bcs, struct cli_bc_ctx *ctx,
 	return CL_EBYTECODE;
     }
 
-    abstimeout.tv_sec = tv0.tv_sec + 5;
-    abstimeout.tv_nsec = tv0.tv_usec*1000;
+    timeoutus = ctx->bytecode_timeout + tv0.tv_usec;
+    abstimeout.tv_nsec = 1000*(timeoutus%1000000);
+    abstimeout.tv_sec = tv0.tv_sec + timeoutus/1000000;
     do {
 	ret = pthread_cond_timedwait(&bcthr.cond, &bcthr.mutex, &abstimeout);
     } while (!bcthr.finished && ret != ETIMEDOUT);
diff --git a/libclamav/clamav.h b/libclamav/clamav.h
index 533157e..7535b97 100644
--- a/libclamav/clamav.h
+++ b/libclamav/clamav.h
@@ -141,7 +141,8 @@ enum cl_engine_field {
     CL_ENGINE_AC_MAXDEPTH,	    /* uint32_t */
     CL_ENGINE_TMPDIR,		    /* (char *) */
     CL_ENGINE_KEEPTMP,		    /* uint32_t */
-    CL_ENGINE_BYTECODE_SECURITY     /* uint32_t */
+    CL_ENGINE_BYTECODE_SECURITY,     /* uint32_t */
+    CL_ENGINE_BYTECODE_TIMEOUT       /* uint32_t */
 };
 
 enum bytecode_security {
diff --git a/libclamav/others.c b/libclamav/others.c
index ec8fad5..b7af297 100644
--- a/libclamav/others.c
+++ b/libclamav/others.c
@@ -299,6 +299,8 @@ struct cl_engine *cl_engine_new(void)
     new->min_ssn_count = CLI_DEFAULT_MIN_SSN_COUNT;
 
     new->bytecode_security = CL_BYTECODE_TRUST_SIGNED;
+    /* 5 seconds timeout */
+    new->bytecode_timeout = 5000000;
     new->refcount = 1;
     new->ac_only = 0;
     new->ac_mindepth = CLI_DEFAULT_AC_MINDEPTH;
@@ -390,6 +392,9 @@ int cl_engine_set_num(struct cl_engine *engine, enum cl_engine_field field, long
 #endif
 	    engine->bytecode_security = num;
 	    break;
+	case CL_ENGINE_BYTECODE_TIMEOUT:
+	    engine->bytecode_timeout = num;
+	    break;
 	default:
 	    cli_errmsg("cl_engine_set_num: Incorrect field number\n");
 	    return CL_EARG;
diff --git a/libclamav/others.h b/libclamav/others.h
index bd80f21..5723dab 100644
--- a/libclamav/others.h
+++ b/libclamav/others.h
@@ -248,6 +248,7 @@ struct cl_engine {
     unsigned hooks_cnt[_BC_LAST_HOOK - _BC_START_HOOKS];
     unsigned hook_lsig_ids;
     enum bytecode_security bytecode_security;
+    uint32_t bytecode_timeout;
 };
 
 struct cl_settings {
diff --git a/shared/optparser.c b/shared/optparser.c
index 835e4bc..05594b1 100644
--- a/shared/optparser.c
+++ b/shared/optparser.c
@@ -250,6 +250,8 @@ const struct clam_option __clam_options[] = {
     { "Bytecode", "bytecode", 0, TYPE_BOOL, MATCH_BOOL, 1, NULL, 0, OPT_CLAMD | OPT_CLAMSCAN, "With this option enabled ClamAV will load bytecode from the database. It is highly recommended you keep this option on, otherwise you'll miss detections for many new viruses.", "yes" },
     { "BytecodeSecurity", NULL, 0, TYPE_STRING, "^(None|TrustSigned|Paranoid)$", -1, "TrustSigned", 0, OPT_CLAMD, 
 	"Set bytecode security level.\nPossible values:\n\tNone - no security at all, meant for debugging. DO NOT USE THIS ON PRODUCTION SYSTEMS\n\tTrustSigned - trust bytecode loaded from signed .c[lv]d files,\n\t\t insert runtime safety checks for bytecode loaded from other sources\n\tParanoid - don't trust any bytecode, insert runtime checks for all\nRecommended: TrustSigned, because bytecode in .cvd files already has these checks\n","TrustSigned"},
+    { "BytecodeTimeout", "bytecode-timeout", 0, TYPE_NUMBER, MATCH_NUMBER, 5000000, NULL, 0, OPT_CLAMD | OPT_CLAMSCAN, 
+	"Set bytecode timeout in microseconds.\n","5000000"},
     { "DetectPUA", "detect-pua", 0, TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMD | OPT_CLAMSCAN, "Detect Potentially Unwanted Applications.", "yes" },
 
     { "ExcludePUA", "exclude-pua", 0, TYPE_STRING, NULL, -1, NULL, FLAG_MULTIPLE, OPT_CLAMD | OPT_CLAMSCAN, "Exclude a specific PUA category. This directive can be used multiple times.\nSee http://www.clamav.net/support/pua for the complete list of PUA\ncategories.", "NetTool\nPWTool" },
diff --git a/unit_tests/check_bytecode.c b/unit_tests/check_bytecode.c
index 002be5e..e480502 100644
--- a/unit_tests/check_bytecode.c
+++ b/unit_tests/check_bytecode.c
@@ -34,6 +34,7 @@
 #include "../libclamav/bytecode.h"
 #include "checks.h"
 #include "../libclamav/dconf.h"
+#include "../libclamav/bytecode_priv.h"
 
 static void runtest(const char *file, uint64_t expected, int fail, int nojit)
 {
@@ -73,6 +74,8 @@ static void runtest(const char *file, uint64_t expected, int fail, int nojit)
     }
 
     ctx = cli_bytecode_context_alloc();
+    /* small timeout, these bytecodes are fast! */
+    ctx->bytecode_timeout = 100000;
     fail_unless(!!ctx, "cli_bytecode_context_alloc failed");
 
     cli_bytecode_context_setfuncid(ctx, &bc, 0);
@@ -144,6 +147,14 @@ FIXME: match_counts should be initialized in clambc mode
 }
 END_TEST
 
+START_TEST (test_inf)
+{
+    cl_init(CL_INIT_DEFAULT);
+    if (have_clamjit)
+	runtest("input/inf.cbc", 0, CL_ETIMEOUT, 0);
+}
+END_TEST
+
 Suite *test_bytecode_suite(void)
 {
     Suite *s = suite_create("bytecode");
@@ -156,5 +167,6 @@ Suite *test_bytecode_suite(void)
     tcase_add_test(tc_cli_arith, test_apicalls2);
     tcase_add_test(tc_cli_arith, test_div0);
     tcase_add_test(tc_cli_arith, test_lsig);
+    tcase_add_test(tc_cli_arith, test_inf);
     return s;
 }
diff --git a/unit_tests/input/apicalls.cbc b/unit_tests/input/apicalls.cbc
index 35dc9bd..d42ef67 100644
--- a/unit_tests/input/apicalls.cbc
+++ b/unit_tests/input/apicalls.cbc
@@ -1,4 +1,4 @@
-ClamBCafh`ibbfjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbac`cmbgfacdfdcccffecgc``agafp`clamcoincidencejb:82
+ClamBCafhflhhgjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbacbcmbgfdcfcacefafefic``agafp`clamcoincidencejb:82
 
 Tedaaa`aacb`bb`bb`b
 Eaaaaaabfd|afdgefcgdgac``
@@ -18,7 +18,7 @@ Baaabeaah`BhbaTaaabaaab
 Baaaceab`aaaDdcbabb`badoaacDm``odDmjnmdTcab`bad
 BTcab`bDmjnmdE
 Sifnfdg`befnfdgbgig`gofifnfdghbibSkgSbgefdgegbgnf`bdgefcgdgachb`chgff`c`cdfbfefeffflb`b`chgbfefefffff`c`cdfib`bmcmc`b`chgacbcccdcecfcgchc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkc
-mgSifnfdg`bffofofachbegifnfdghcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSifnfdg`bffofofbchbegifnfdgacfcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkc
-mgSifnfdg`bffofofcchbegifnfdgccbcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchcccic`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSifnfdg`bffofofdchbegifnfdgfcdcoedg`bafib
-kgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchcccicdc`cecacfcbcgccc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSifnfdg`bffofofechbegifnfdghcoedg`baflb`begifnfdgacfcoedg`bbfib
-kgSbgefdgegbgnf`bhbaf`bmcmc`b`chgbchc`bfbfb`bbf`bmcmc`b`chgacbcccdcib`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSS
\ No newline at end of file
+mgSSifnfdg`bffofofachbegifnfdghcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSSifnfdg`bffofofbchbegifnfdgacfcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkc
+mgSSifnfdg`bffofofcchbegifnfdgccbcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchcccic`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSSifnfdg`bffofofdchbegifnfdgfcdcoedg`bafib
+kgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchcccicdc`cecacfcbcgccc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSSifnfdg`bffofofechbegifnfdghcoedg`baflb`begifnfdgacfcoedg`bbfib
+kgSbgefdgegbgnf`bhbaf`bmcmc`b`chgbchc`bfbfb`bbf`bmcmc`b`chgacbcccdcib`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSSSS
\ No newline at end of file
diff --git a/unit_tests/input/apicalls2.cbc b/unit_tests/input/apicalls2.cbc
index 840f1d0..4243e4a 100644
--- a/unit_tests/input/apicalls2.cbc
+++ b/unit_tests/input/apicalls2.cbc
@@ -1,4 +1,4 @@
-ClamBCafh`ibbfjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbac`cmbgfacdfdcccffecgc``ahafp`clamcoincidencejb:66
+ClamBCafhflhhgjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbacbcmbgfdcfcacefafefic``ahafp`clamcoincidencejb:66
 
 Tedaaa`aabb`bb`baacb`bb`bb`b
 Ebcaabbcabfd|afdgefcgdgbc``aabgd|afdgefcgdgac``
@@ -21,7 +21,7 @@ Baaaceab`aaaDdcbabb`badoaacDm``odDmjnmdTcab`bad
 BTcab`bDmjnmdE
 Sifnfdg`befnfdgbgig`gofifnfdghbibSkgScfhfafbg`bjbhgkcSifff`bhbdgefcgdgachb`chgff`c`cdfbfefeffflb`b`chgbfefefffff`c`cdfib`babmc`b`chgacbcccdcecfcgchcibSbgefdgegbgnf`b`chgdfefafdfkc
 ifff`bhbdgefcgdgbchb`chgff`c`cdfib`babmc`b`chgdf`c`cffibSbgefdgegbgnf`b`chgdfefafdfkcShg`bmc`bmfaflflfofcfhbacibkcSifff`bhbabhgibSbgefdgegbgnf`b`chgdfefafdfkcSbgefdgegbgnf`b`chgff`c`cdfkc
-mgSifnfdg`bffofofachbegifnfdghcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSifnfdg`bffofofbchbegifnfdgacfcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkc
-mgSifnfdg`bffofofcchbegifnfdgccbcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchcccic`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSifnfdg`bffofofdchbegifnfdgfcdcoedg`bafib
-kgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchcccicdc`cecacfcbcgccc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSifnfdg`bffofofechbegifnfdghcoedg`baflb`begifnfdgacfcoedg`bbfib
-kgSbgefdgegbgnf`bhbaf`bmcmc`b`chgbchc`bfbfb`bbf`bmcmc`b`chgacbcccdcib`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSS
\ No newline at end of file
+mgSSifnfdg`bffofofachbegifnfdghcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSSifnfdg`bffofofbchbegifnfdgacfcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkc
+mgSSifnfdg`bffofofcchbegifnfdgccbcoedg`bafibSkgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchcccic`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSSifnfdg`bffofofdchbegifnfdgfcdcoedg`bafib
+kgSbgefdgegbgnf`baf`bmcmc`b`chgacgcbchcccicdc`cecacfcbcgccc`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSSifnfdg`bffofofechbegifnfdghcoedg`baflb`begifnfdgacfcoedg`bbfib
+kgSbgefdgegbgnf`bhbaf`bmcmc`b`chgbchc`bfbfb`bbf`bmcmc`b`chgacbcccdcib`boc`b`chgff`c`cdf`bjc`b`chgdfefafdfkcSmgSSSS
\ No newline at end of file
diff --git a/unit_tests/input/arith.cbc b/unit_tests/input/arith.cbc
index d648b46..843f5f2 100644
--- a/unit_tests/input/arith.cbc
+++ b/unit_tests/input/arith.cbc
@@ -1,4 +1,4 @@
-ClamBCafh`ibbfjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbac`cmbgfacdfdcccffecgc``afbbep`clamcoincidencejb:418
+ClamBCafhflhhgjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbacbcmbgfdcfcacefafefic``afbbep`clamcoincidencejb:418
 
 Tedaaa`
 E``
@@ -359,92 +359,92 @@ ifnfdg`bdgefcgdgoelfcghfbghbfgofifdfibkcSifnfdg`bdgefcgdgoeafcghfbghbfgofifdfibk
 ifnfdg`bdgefcgdgoecgefhgdghbfgofifdfibkcSifnfdg`bdgefcgdgoejgefhgdghbfgofifdfibkcSifnfdg`bdgefcgdgoedgbgegnfcfhbfgofifdfibkcSifnfdg`bdgefcgdgoeifcfmf`ghbfgofifdfibkc
 ifnfdg`bdgefcgdgoecgeflfefcfdghbfgofifdfibkcSifnfdg`befnfdgbgig`gofifnfdghbfgofifdfibSkgSbgefdgegbgnf`bdgefcgdgoeafdfdfhbib`bkb`bdgefcgdgoecgegbfhbib`bkb`bdgefcgdgoemfeglfhbib`bkb`bdgefcgdgoeegdfiffghbib`bkb`bdgefcgdgoecgdfiffghbibkb
 dgefcgdgoebgefmfhbib`bkb`bdgefcgdgoecghflfhbib`bkb`bdgefcgdgoelfcghfbghbibkbdgefcgdgoeafcghfbghbibkbdgefcgdgoeafnfdfhbibkbdgefcgdgoeofbghbibkbSdgefcgdgoehgofbghbibkbdgefcgdgoecgefhgdghbibkbdgefcgdgoejgefhgdghbibkbdgefcgdgoedgbgegnfcfhbibkbdgefcgdgoeifcfmf`ghbibkbdgefcgdgoecgeflfefcfdghbibkc
-mgSifnfdghcoedg`bafdfdfoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bkb`bbfkcSmgSifnfdgacfcoedg`bafdfdfoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfib
+mgSSifnfdghcoedg`bafdfdfoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bkb`bbfkcSmgSifnfdgacfcoedg`bafdfdfoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfib
 kgSbgefdgegbgnf`baf`bkb`bbfkcSmgSifnfdgccbcoedg`bafdfdfoeifccbchbifnfdgccbcoedg`baflb`bifnfdgccbcoedg`bbfibSkgSbgefdgegbgnf`baf`bkb`bbfkcSmgSifnfdgfcdcoedg`bafdfdfoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfib
-kgSbgefdgegbgnf`baf`bkb`bbfkcSmgSifnfdg`bffafiflfhbifnfdg`bhgibSkgSbgefdgegbgnf`bacobhgkcSmgSifnfdg`bdgefcgdgoeafdfdfhbfgofifdfibSkgSifff`bhbafdfdfoeifhchbaclb`bacib`babmc`bbcib
+kgSbgefdgegbgnf`baf`bkb`bbfkcSmgSSifnfdg`bffafiflfhbifnfdg`bhgibSkgSbgefdgegbgnf`bacobhgkcSmgSifnfdg`bdgefcgdgoeafdfdfhbfgofifdfibSkgSifff`bhbafdfdfoeifhchbaclb`bacib`babmc`bbcib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifhchbaclb`bmbacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifhchbmbaclb`bmbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkc
-ifff`bhbafdfdfoeifhchbbcececlb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifacfchbaclb`bacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifacfchbaclb`bmbacib`babmc`b`cib
+ifff`bhbafdfdfoeifhchbbcececlb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSSifff`bhbafdfdfoeifacfchbaclb`bacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifacfchbaclb`bmbacib`babmc`b`cib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifacfchbmbaclb`bmbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifacfchbfcececcceclb`bacib`babmc`b`cib
-bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifccbchbaclb`bacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifccbchbaclb`bmbacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkc
+bgefdgegbgnf`bffafiflfhb`cibkcSSifff`bhbafdfdfoeifccbchbaclb`bacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifccbchbaclb`bmbacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkc
 ifff`bhbafdfdfoeifccbchbmbaclb`bmbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeifccbchbng`ceglb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkc
-ifff`bhbafdfdfoeiffcdchbaclb`bacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeiffcdchbaclb`bmbacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeiffcdchbmbaclb`bmbacib`babmc`bmbbcib
-bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeiffcdchbng`ceglflflb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgackcSmgSifnfdghcoedg`bcgegbfoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfib
+Sifff`bhbafdfdfoeiffcdchbaclb`bacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeiffcdchbaclb`bmbacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeiffcdchbmbaclb`bmbacib`babmc`bmbbcib
+bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafdfdfoeiffcdchbng`ceglflflb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgackcSmgSSifnfdghcoedg`bcgegbfoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfib
 kgSbgefdgegbgnf`baf`bmb`bbfkcSmgSifnfdgacfcoedg`bcgegbfoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfibSkgSbgefdgegbgnf`baf`bmb`bbfkcSmgSifnfdgccbcoedg`bcgegbfoeifccbchbifnfdgccbcoedg`baflb`bifnfdgccbcoedg`bbfib
-kgSbgefdgegbgnf`baf`bmb`bbfkcSmgSifnfdgfcdcoedg`bcgegbfoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`bmb`bbfkcSmgSifnfdg`bdgefcgdgoecgegbfhbfgofifdfib
+kgSbgefdgegbgnf`baf`bmb`bbfkcSmgSifnfdgfcdcoedg`bcgegbfoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`bmb`bbfkcSmgSSifnfdg`bdgefcgdgoecgegbfhbfgofifdfib
 kgSifff`bhbcgegbfoeifhchbmbaclbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifhchbaclb`bmbacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifhchbaclb`bacib`babmc`b`cib
-bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifacfchbmbaclbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifacfchbaclb`bmbacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkc
-ifff`bhbcgegbfoeifacfchbaclb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifccbchbmbaclbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifccbchbaclb`bmbacib`babmc`bbcib
-bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifccbchbaclb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeiffcdchbmbaclbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkc
+bgefdgegbgnf`bffafiflfhb`cibkcSSifff`bhbcgegbfoeifacfchbmbaclbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifacfchbaclb`bmbacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkc
+ifff`bhbcgegbfoeifacfchbaclb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSSifff`bhbcgegbfoeifccbchbmbaclbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifccbchbaclb`bmbacib`babmc`bbcib
+bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeifccbchbaclb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSSifff`bhbcgegbfoeiffcdchbmbaclbacib`babmc`bmbbcibSbgefdgegbgnf`bffafiflfhb`cibkc
 ifff`bhbcgegbfoeiffcdchbaclb`bmbacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgegbfoeiffcdchbaclb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`bdckc
-mgSifnfdghcoedg`bmfeglfoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bjb`bbfkcSmgSifnfdgacfcoedg`bmfeglfoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfib
+mgSSifnfdghcoedg`bmfeglfoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bjb`bbfkcSmgSifnfdgacfcoedg`bmfeglfoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfib
 kgSbgefdgegbgnf`baf`bjb`bbfkcSmgSifnfdgccbcoedg`bmfeglfoeifccbchbifnfdgccbcoedg`baflb`bifnfdgccbcoedg`bbfibSkgSbgefdgegbgnf`baf`bjb`bbfkcSmgSifnfdgfcdcoedg`bmfeglfoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfib
-kgSbgefdgegbgnf`baf`bjb`bbfkcSmgSifnfdg`bdgefcgdgoemfeglfhbfgofifdfibSkgSifff`bhbmfeglfoeifhchbmbaclb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifhchbmbaclb`bmbacib`babmc`bacib
+kgSbgefdgegbgnf`baf`bjb`bbfkcSmgSSifnfdg`bdgefcgdgoemfeglfhbfgofifdfibSkgSifff`bhbmfeglfoeifhchbmbaclb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifhchbmbaclb`bmbacib`babmc`bacib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifhchbaclb`bacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifhchbacgclb`bccecib`babmc`bhcccibSbgefdgegbgnf`bffafiflfhb`cibkc
-ifff`bhbmfeglfoeifacfchbmbaclb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifacfchbmbaclb`bmbacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkc
+Sifff`bhbmfeglfoeifacfchbmbaclb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifacfchbmbaclb`bmbacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkc
 ifff`bhbmfeglfoeifacfchbaclb`bacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifacfchbacgciclb`bhcgcacib`babmc`bbcdchcccgcibSbgefdgegbgnf`bffafiflfhb`cibkc
-ifff`bhbmfeglfoeifccbchbmbaclb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifccbchbmbaclb`bmbacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkc
+Sifff`bhbmfeglfoeifccbchbmbaclb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifccbchbmbaclb`bmbacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkc
 ifff`bhbmfeglfoeifccbchbaclb`bacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeifccbchbacgcicecccfclb`bhcgcacicacbcib`babmc`bacicbc`cgcgc`cacgcfcib
-bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeiffcdchbmbaclb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeiffcdchbmbaclb`bmbacib`babmc`bacib
+bgefdgegbgnf`bffafiflfhb`cibkcSSifff`bhbmfeglfoeiffcdchbmbaclb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeiffcdchbmbaclb`bmbacib`babmc`bacib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeiffcdchbaclb`bacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbmfeglfoeiffcdchbacgcicecccfcbcacgchciclb`bhcgcacicacbcecacacicib`babmc`bhcicfcecicbcbcacbcgchcacicbc`cdcicfcccib
-bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`ckcSmgSegifnfdghcoedg`begdfiffgoeifhchbegifnfdghcoedg`baflb`begifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bob`bbfkcSmg
+bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`ckcSmgSSegifnfdghcoedg`begdfiffgoeifhchbegifnfdghcoedg`baflb`begifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bob`bbfkcSmg
 egifnfdgacfcoedg`begdfiffgoeifacfchbegifnfdgacfcoedg`baflb`begifnfdgacfcoedg`bbfibSkgSbgefdgegbgnf`baf`bob`bbfkcSmgSegifnfdgccbcoedg`begdfiffgoeifccbchbegifnfdgccbcoedg`baflb`begifnfdgccbcoedg`bbfib
-kgSbgefdgegbgnf`baf`bob`bbfkcSmgSegifnfdgfcdcoedg`begdfiffgoeiffcdchbegifnfdgfcdcoedg`baflb`begifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`bob`bbfkcSmgSifnfdg`bdgefcgdgoeegdfiffghbfgofifdfib
-kgSifff`bhbegdfiffgoeifacfchbmbecccdclb`bgcib`babmc`bicbchcfcibSbgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgdc`ckcSmgSifnfdghcoedg`bcgdfiffgoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfib
+kgSbgefdgegbgnf`baf`bob`bbfkcSmgSegifnfdgfcdcoedg`begdfiffgoeiffcdchbegifnfdgfcdcoedg`baflb`begifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`bob`bbfkcSmgSSifnfdg`bdgefcgdgoeegdfiffghbfgofifdfib
+kgSifff`bhbegdfiffgoeifacfchbmbecccdclb`bgcib`babmc`bicbchcfcibSbgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgdc`ckcSmgSSifnfdghcoedg`bcgdfiffgoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfib
 kgSbgefdgegbgnf`baf`bob`bbfkcSmgSifnfdgacfcoedg`bcgdfiffgoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfibSkgSbgefdgegbgnf`baf`bob`bbfkcSmgSifnfdgccbcoedg`bcgdfiffgoeifccbchbifnfdgccbcoedg`baflb`bifnfdgccbcoedg`bbfib
-kgSbgefdgegbgnf`baf`bob`bbfkcSmgSifnfdgfcdcoedg`bcgdfiffgoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`bob`bbfkcSmgSifnfdg`bdgefcgdgoecgdfiffghbfgofifdfib
+kgSbgefdgegbgnf`baf`bob`bbfkcSmgSifnfdgfcdcoedg`bcgdfiffgoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`bob`bbfkcSmgSSifnfdg`bdgefcgdgoecgdfiffghbfgofifdfib
 kgSifff`bhbcgdfiffgoeifhchbaclb`bmbacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgdfiffgoeifhchbmbaclbacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkc
-ifff`bhbcgdfiffgoeifhchbmbaclbmbacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgdfiffgoeifhchbaclbacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkcSegifnfdghcoedg`baf`bmc`bbcecdckc
+ifff`bhbcgdfiffgoeifhchbmbaclbmbacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgdfiffgoeifhchbaclbacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkcSSegifnfdghcoedg`baf`bmc`bbcecdckc
 egifnfdghcoedg`bbf`bmc`beckcSegifnfdghcoedg`bcf`bmc`bafdfdfoeifhchbaflbbfibkcSifff`bhbcgdfiffgoeifhchbfclb`bcfib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgdfiffgoeifhchbcflb`bbcib`babmc`bacib
-bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgdfiffgoeifacfchbmbecccdclb`bgcib`babmc`bmbgcfcibSbgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`ckcSmgSegifnfdghcoedg`begbgefmfoeifhchbegifnfdghcoedg`baflb`begifnfdghcoedg`bbfib
+bgefdgegbgnf`bffafiflfhb`cibkcSSifff`bhbcgdfiffgoeifacfchbmbecccdclb`bgcib`babmc`bmbgcfcibSbgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`ckcSmgSSegifnfdghcoedg`begbgefmfoeifhchbegifnfdghcoedg`baflb`begifnfdghcoedg`bbfib
 kgSbgefdgegbgnf`baf`beb`bbfkcSmgSegifnfdgacfcoedg`begbgefmfoeifacfchbegifnfdgacfcoedg`baflb`begifnfdgacfcoedg`bbfibSkgSbgefdgegbgnf`baf`beb`bbfkcSmgSegifnfdgccbcoedg`begbgefmfoeifccbchbegifnfdgccbcoedg`baflb`begifnfdgccbcoedg`bbfib
 kgSbgefdgegbgnf`baf`beb`bbfkcSmgSegifnfdgfcdcoedg`begbgefmfoeiffcdchbegifnfdgfcdcoedg`baflb`begifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`beb`bbfkcSmgSifnfdghcoedg`bcgbgefmfoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfib
 kgSbgefdgegbgnf`baf`beb`bbfkcSmgSifnfdgacfcoedg`bcgbgefmfoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfibSkgSbgefdgegbgnf`baf`beb`bbfkcSmgSifnfdgccbcoedg`bcgbgefmfoeifccbchbifnfdgccbcoedg`baflb`bifnfdgccbcoedg`bbfib
-kgSbgefdgegbgnf`baf`beb`bbfkcSmgSifnfdgfcdcoedg`bcgbgefmfoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`beb`bbfkcSmgSifnfdg`bdgefcgdgoebgefmfhbfgofifdfib
+kgSbgefdgegbgnf`baf`beb`bbfkcSmgSifnfdgfcdcoedg`bcgbgefmfoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`beb`bbfkcSmgSSifnfdg`bdgefcgdgoebgefmfhbfgofifdfib
 kgSifff`bhbcgbgefmfoeifhchbmbaclb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbegbgefmfoeifhchbmbaclb`bacib`babmc`b`cibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgbgefmfoeifhchbaclb`bmbacib`babmc`b`cib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgbgefmfoeifacfchbmbeccceclbgcib`babmc`bmbccibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbegbgefmfoeifacfchbmbeccceclbgcib`babmc`bfcib
-bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgdc`c`ckcSmgSifnfdghcoedg`bcghflfoeifhchbifnfdghcoedg`baflb`begnfcgifgfnfefdf`bcfibSkgSbgefdgegbgnf`baf`blclc`bcfkcSmg
+bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgdc`c`ckcSmgSSifnfdghcoedg`bcghflfoeifhchbifnfdghcoedg`baflb`begnfcgifgfnfefdf`bcfibSkgSbgefdgegbgnf`baf`blclc`bcfkcSmg
 ifnfdgacfcoedg`bcghflfoeifacfchbifnfdgacfcoedg`baflb`begnfcgifgfnfefdf`bcfibSkgSbgefdgegbgnf`baf`blclc`bcfkcSmgSifnfdgccbcoedg`bcghflfoeifccbchbifnfdgccbcoedg`baflb`begnfcgifgfnfefdf`bcfib
-kgSbgefdgegbgnf`baf`blclc`bcfkcSmgSifnfdgfcdcoedg`bcghflfoeiffcdchbifnfdgfcdcoedg`baflb`begnfcgifgfnfefdf`bcfibSkgSbgefdgegbgnf`baf`blclc`bcfkcSmgSifnfdg`bdgefcgdgoecghflfhbfgofifdfib
+kgSbgefdgegbgnf`baf`blclc`bcfkcSmgSifnfdgfcdcoedg`bcghflfoeiffcdchbifnfdgfcdcoedg`baflb`begnfcgifgfnfefdf`bcfibSkgSbgefdgegbgnf`baf`blclc`bcfkcSmgSSifnfdg`bdgefcgdgoecghflfhbfgofifdfib
 kgSifff`bhbcghflfoeifhchbaclb`bacib`babmc`bbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcghflfoeifhchbaclb`b`cib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcghflfoeifhchbbcecdclb`bbcib`babmc`bmbhcib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcghflfoeifacfchb`chgffafffeflbbcib`babmc`b`chgffffffffefbfffhcibSbgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`c`ckc
-mgSifnfdghcoedg`blfcghfbgoeifhchbegifnfdghcoedg`baflb`begnfcgifgfnfefdf`bcfibSkgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdgacfcoedg`blfcghfbgoeifacfchbegifnfdgacfcoedg`baflb`begnfcgifgfnfefdf`bcfib
+mgSSifnfdghcoedg`blfcghfbgoeifhchbegifnfdghcoedg`baflb`begnfcgifgfnfefdf`bcfibSkgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdgacfcoedg`blfcghfbgoeifacfchbegifnfdgacfcoedg`baflb`begnfcgifgfnfefdf`bcfib
 kgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdgccbcoedg`blfcghfbgoeifccbchbegifnfdgccbcoedg`baflb`begnfcgifgfnfefdf`bcfibSkgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdgfcdcoedg`blfcghfbgoeiffcdchbegifnfdgfcdcoedg`baflb`begnfcgifgfnfefdf`bcfib
-kgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdg`bdgefcgdgoelfcghfbghbfgofifdfibSkgSifff`bhblfcghfbgoeifhchb`chgffeflb`bacib`babmc`b`chggcffibSbgefdgegbgnf`bffafiflfhb`cibkc
+kgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSSifnfdg`bdgefcgdgoelfcghfbghbfgofifdfibSkgSifff`bhblfcghfbgoeifhchb`chgffeflb`bacib`babmc`b`chggcffibSbgefdgegbgnf`bffafiflfhb`cibkc
 ifnfdghcoedg`baf`bmc`bbcecdckcSifnfdghcoedg`bbf`bmc`beckcSifnfdghcoedg`bcf`bmc`bafdfdfoeifhchbaflbbfibkcSifff`bhblfcghfbgoeifhchbcflb`bacib`babmc`bacibSbgefdgegbgnf`bffafiflfhb`cibkc
-bgefdgegbgnf`b`chgdc`c`c`ckcSmgSifnfdghcoedg`bafcghfbgoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bcfibSkgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdgacfcoedg`bafcghfbgoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bcfib
+bgefdgegbgnf`b`chgdc`c`c`ckcSmgSSifnfdghcoedg`bafcghfbgoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bcfibSkgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdgacfcoedg`bafcghfbgoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bcfib
 kgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdgccbcoedg`bafcghfbgoeifccbchbifnfdgccbcoedg`baflb`bifnfdgccbcoedg`bcfibSkgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdgfcdcoedg`bafcghfbgoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bcfib
-kgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSifnfdg`bdgefcgdgoeafcghfbghbfgofifdfibSkgSifff`bhbafcghfbgoeifhchb`chgffeflb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafcghfbgoeifhchb`chggceflb`bacib`babmc`b`chgccffib
-bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`c`c`ckcSmgSifnfdghcoedg`bafnfdfoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bfb`bbfkcSmgSifnfdgacfcoedg`bafnfdfoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfib
+kgSbgefdgegbgnf`baf`bncnc`bcfkcSmgSSifnfdg`bdgefcgdgoeafcghfbghbfgofifdfibSkgSifff`bhbafcghfbgoeifhchb`chgffeflb`bacib`babmc`bmbacibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafcghfbgoeifhchb`chggceflb`bacib`babmc`b`chgccffib
+bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`c`c`ckcSmgSSifnfdghcoedg`bafnfdfoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bfb`bbfkcSmgSifnfdgacfcoedg`bafnfdfoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfib
 kgSbgefdgegbgnf`baf`bfb`bbfkcSmgSifnfdgccbcoedg`bafnfdfoeifccbchbifnfdgccbcoedg`baflb`bifnfdgccbcoedg`bbfibSkgSbgefdgegbgnf`baf`bfb`bbfkcSmgSifnfdgfcdcoedg`bafnfdfoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfib
-kgSbgefdgegbgnf`baf`bfb`bbfkcSmgSifnfdg`bdgefcgdgoeafnfdfhbfgofifdfibSkgSifff`bhbafnfdfoeifhchb`chgecaflb`b`chg`cffib`babmc`b`chgafibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafnfdfoeifacfchb`chgecafbfcflb`b`chgff`c`c`cib`babmc`b`chgec`c`c`cib
+kgSbgefdgegbgnf`baf`bfb`bbfkcSmgSSifnfdg`bdgefcgdgoeafnfdfhbfgofifdfibSkgSifff`bhbafnfdfoeifhchb`chgecaflb`b`chg`cffib`babmc`b`chgafibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafnfdfoeifacfchb`chgecafbfcflb`b`chgff`c`c`cib`babmc`b`chgec`c`c`cib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbafnfdfoeifccbchb`chgecafbfcfacbcccdclb`b`chg`cff`c`c`c`c`c`cib`babmc`b`chg`caf`c`c`c`c`c`cibSbgefdgegbgnf`bffafiflfhb`cibkc
 ifff`bhbafnfdfoeiffcdchb`chgecafbfcfacbcccdcecfcgchcacbcccdcldldlb`b`chg`cff`c`c`c`c`c`cib`babmc`b`chg`cfc`c`c`c`c`c`cibSbgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgdc`c`c`c`ckc
-mgSifnfdghcoedg`bofbgoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`blg`bbfkcSmgSifnfdgacfcoedg`bofbgoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfib
+mgSSifnfdghcoedg`bofbgoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`blg`bbfkcSmgSifnfdgacfcoedg`bofbgoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfib
 kgSbgefdgegbgnf`baf`blg`bbfkcSmgSifnfdgccbcoedg`bofbgoeifccbchbifnfdgccbcoedg`baflb`bifnfdgccbcoedg`bbfibSkgSbgefdgegbgnf`baf`blg`bbfkcSmgSifnfdgfcdcoedg`bofbgoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfib
-kgSbgefdgegbgnf`baf`blg`bbfkcSmgSifnfdg`bdgefcgdgoeofbghbfgofifdfibSkgSifff`bhbofbgoeifhchb`chgecaflb`b`chg`cffib`babmc`b`chgecffibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbofbgoeifacfchb`chgecafbfcflb`b`chgff`c`c`cib`babmc`bhbifnfdgacfcoedgib`chgffafbfcfib
+kgSbgefdgegbgnf`baf`blg`bbfkcSmgSSifnfdg`bdgefcgdgoeofbghbfgofifdfibSkgSifff`bhbofbgoeifhchb`chgecaflb`b`chg`cffib`babmc`b`chgecffibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbofbgoeifacfchb`chgecafbfcflb`b`chgff`c`c`cib`babmc`bhbifnfdgacfcoedgib`chgffafbfcfib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbofbgoeifccbchb`chgecafbfcfacbcccdclb`b`chg`cff`c`c`c`c`c`cib`babmc`b`chgecffbfcfacbcccdcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbofbgoeiffcdchb`chgecafbfcfacbcccdcecfcgchcacbcccdcldldlb`b`chg`cff`c`c`c`c`c`cib`babmc`b`chgecafbfcfacbcccdcecffgchcacbcccdcldldib
-bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`c`c`c`ckcSmgSifnfdghcoedg`bhgofbgoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bne`bbfkcSmg
+bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`c`c`c`ckcSmgSSifnfdghcoedg`bhgofbgoeifhchbifnfdghcoedg`baflb`bifnfdghcoedg`bbfibSkgSbgefdgegbgnf`baf`bne`bbfkcSmg
 ifnfdgacfcoedg`bhgofbgoeifacfchbifnfdgacfcoedg`baflb`bifnfdgacfcoedg`bbfibSkgSbgefdgegbgnf`baf`bne`bbfkcSmgSifnfdgccbcoedg`bhgofbgoeifccbchbifnfdgccbcoedg`baflb`bifnfdgccbcoedg`bbfib
-kgSbgefdgegbgnf`baf`bne`bbfkcSmgSifnfdgfcdcoedg`bhgofbgoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`bne`bbfkcSmgSifnfdg`bdgefcgdgoehgofbghbfgofifdfib
+kgSbgefdgegbgnf`baf`bne`bbfkcSmgSifnfdgfcdcoedg`bhgofbgoeiffcdchbifnfdgfcdcoedg`baflb`bifnfdgfcdcoedg`bbfibSkgSbgefdgegbgnf`baf`bne`bbfkcSmgSSifnfdg`bdgefcgdgoehgofbghbfgofifdfib
 kgSifff`bhbhgofbgoeifhchb`chgecaflb`b`chgff`cib`babmc`bhbifnfdghcoedgib`chgafafibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbhgofbgoeifacfchb`chgecafecaflb`b`chgffff`c`cib`babmc`bhbifnfdgacfcoedgib`chgafececafib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbhgofbgoeifccbchb`chgecafecafecafecaflb`b`chgffffffffffff`c`cib`babmc`b`chgafecafecafececafibSbgefdgegbgnf`bffafiflfhb`cibkc
 ifff`bhbhgofbgoeiffcdchb`chgecafecafecafecafecafecafecafecaflflflb`b`chgffffffffffffffffffffffffffff`c`clflfib`babmc`b`chgafecafecafecafecafecafecafececafibSbgefdgegbgnf`bffafiflfhb`cibkc
-bgefdgegbgnf`b`chgdc`c`c`c`c`ckcSmgSifnfdgacfcoedg`bcgefhgdgoeifhcdgofacfchbifnfdghcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSifnfdgccbcoedg`bcgefhgdgoeifacfcdgofccbchbifnfdgacfcoedg`bafib
-kgSbgefdgegbgnf`bafkcSmgSifnfdgfcdcoedg`bcgefhgdgoeifccbcdgoffcdchbifnfdgccbcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSifnfdg`bdgefcgdgoecgefhgdghbfgofifdfibSkgSifff`bhbcgefhgdgoeifhcdgofacfchbmbdcib`babmc`bmbdcib
+bgefdgegbgnf`b`chgdc`c`c`c`c`ckcSmgSSifnfdgacfcoedg`bcgefhgdgoeifhcdgofacfchbifnfdghcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSifnfdgccbcoedg`bcgefhgdgoeifacfcdgofccbchbifnfdgacfcoedg`bafib
+kgSbgefdgegbgnf`bafkcSmgSifnfdgfcdcoedg`bcgefhgdgoeifccbcdgoffcdchbifnfdgccbcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSSifnfdg`bdgefcgdgoecgefhgdghbfgofifdfibSkgSifff`bhbcgefhgdgoeifhcdgofacfchbmbdcib`babmc`bmbdcib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgefhgdgoeifacfcdgofccbchbmbfcib`babmc`bmbfcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbcgefhgdgoeifccbcdgoffcdchbmbfcib`babmc`bmbfclflfib
-bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`c`c`c`c`ckcSmgSegifnfdgacfcoedg`bjgefhgdgoeifhcdgofacfchbegifnfdghcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSegifnfdgccbcoedg`bjgefhgdgoeifacfcdgofccbchbegifnfdgacfcoedg`bafib
-kgSbgefdgegbgnf`bafkcSmgSegifnfdgfcdcoedg`bjgefhgdgoeifccbcdgoffcdchbegifnfdgccbcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSifnfdg`bdgefcgdgoejgefhgdghbfgofifdfibSkgSifff`bhbjgefhgdgoeifhcdgofacfchbmbdcib`babmc`b`chgffcfib
+bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`c`c`c`c`ckcSmgSSegifnfdgacfcoedg`bjgefhgdgoeifhcdgofacfchbegifnfdghcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSegifnfdgccbcoedg`bjgefhgdgoeifacfcdgofccbchbegifnfdgacfcoedg`bafib
+kgSbgefdgegbgnf`bafkcSmgSegifnfdgfcdcoedg`bjgefhgdgoeifccbcdgoffcdchbegifnfdgccbcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSSifnfdg`bdgefcgdgoejgefhgdghbfgofifdfibSkgSifff`bhbjgefhgdgoeifhcdgofacfchbmbdcib`babmc`b`chgffcfib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbjgefhgdgoeifacfcdgofccbchbmbdcib`babmc`b`chgffffffcfibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbjgefhgdgoeifccbcdgoffcdchbmbdcib`babmc`b`chgffffffffffffffcflflfib
-bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgdc`c`c`c`c`c`ckcSmgSifnfdghcoedg`bdgbgegnfcfoeifacfcdgofhchbifnfdgacfcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSifnfdgacfcoedg`bdgbgegnfcfoeifccbcdgofacfchbifnfdgccbcoedg`bafib
-kgSbgefdgegbgnf`bafkcSmgSifnfdgccbcoedg`bdgbgegnfcfoeiffcdcdgofccbchbifnfdgfcdcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSifnfdg`bdgefcgdgoedgbgegnfcfhbfgofifdfibSkgSifff`bhbdgbgegnfcfoeifacfcdgofhchb`chgffefefdfib`babmc`bhbifnfdghcoedgib`chgefdfib
+bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgdc`c`c`c`c`c`ckcSmgSSifnfdghcoedg`bdgbgegnfcfoeifacfcdgofhchbifnfdgacfcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSifnfdgacfcoedg`bdgbgegnfcfoeifccbcdgofacfchbifnfdgccbcoedg`bafib
+kgSbgefdgegbgnf`bafkcSmgSifnfdgccbcoedg`bdgbgegnfcfoeiffcdcdgofccbchbifnfdgfcdcoedg`bafibSkgSbgefdgegbgnf`bafkcSmgSSifnfdg`bdgefcgdgoedgbgegnfcfhbfgofifdfibSkgSifff`bhbdgbgegnfcfoeifacfcdgofhchb`chgffefefdfib`babmc`bhbifnfdghcoedgib`chgefdfib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbdgbgegnfcfoeifccbcdgofacfchb`chgdfefafdfffefefdfib`babmc`bhbifnfdgacfcoedgib`chgffefefdfibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbdgbgegnfcfoeiffcdcdgofccbchb`chgbfefefffdfefafdfffefefdfbfefeffflflfib`babmc`b`chgffefefdfbfefefffib
-bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`c`c`c`c`c`ckcSmgSifnfdg`bdgefcgdgoeifcfmf`goehbifnfdg`baflb`bifnfdg`bbflb`bifnfdg`bcflb`begnfcgifgfnfefdf`bdfib
+bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgac`c`c`c`c`c`c`ckcSmgSSifnfdg`bdgefcgdgoeifcfmf`goehbifnfdg`baflb`bifnfdg`bbflb`bifnfdg`bcflb`begnfcgifgfnfefdf`bdfib
 kgSifnfdg`bbgefcgeglfdg`bmc`b`ckcSifff`bhbaf`blc`bbfibSbgefcgeglfdg`blgmc`backcSifff`bhbbf`blcmc`bcfibSbgefcgeglfdg`blgmc`bbckcSifff`bhbaf`bnc`bbfibSbgefcgeglfdg`blgmc`bdckc
 ifff`bhbbf`bncmc`bcfibSbgefcgeglfdg`blgmc`bhckcSifff`bhbaf`blc`bdfibSbgefcgeglfdg`blgmc`bacfckcSifff`bhbbf`blcmc`bdfibSbgefcgeglfdg`blgmc`bccbckcSifff`bhbcf`bncmc`bdfib
 bgefcgeglfdg`blgmc`bfcdckcSifff`bhbaf`bnc`bdfibSbgefcgeglfdg`blgmc`bacbchckcSifff`bhbaf`bmcmc`bbfibSbgefcgeglfdg`blgmc`bbcecfckcSifff`bhbbf`babmc`bcfibSbgefcgeglfdg`blgmc`becacbckc
-bgefdgegbgnf`bbgefcgeglfdgkcSmgSifnfdg`bdgefcgdgoeifcfmf`ghbfgofifdfibSkgSifff`bhbdgefcgdgoeifcfmf`goehbmbaclbbclb`clbdcib`babmc`b`chgbcaficibSbgefdgegbgnf`bffafiflfhb`cibkc
+bgefdgegbgnf`bbgefcgeglfdgkcSmgSSifnfdg`bdgefcgdgoeifcfmf`ghbfgofifdfibSkgSifff`bhbdgefcgdgoeifcfmf`goehbmbaclbbclb`clbdcib`babmc`b`chgbcaficibSbgefdgegbgnf`bffafiflfhb`cibkc
 ifff`bhbdgefcgdgoeifcfmf`goehbmbaclbmbaclbaclbmbacib`babmc`b`chgccbcbcibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbdgefcgdgoeifcfmf`goehbmbaclb`clbcclbmbbcib`babmc`b`chgbcafccib
 bgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbdgefcgdgoeifcfmf`goehbmbaclb`clbcclb`cib`babmc`b`chgbcefccibSbgefdgegbgnf`bffafiflfhb`cibkcSifff`bhbdgefcgdgoeifcfmf`goehbmbaclb`clb`clbmbacib`babmc`b`chgbcbfib
-bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgdc`c`c`c`c`c`c`ckcSmgSifnfdg`bdgefcgdgoecgeflfefcfdgoehbifnfdg`baflb`bifnfdg`bbflb`bifnfdg`bcfibSkgSbgefdgegbgnf`baf`boc`bbf`bjc`bcfkc
-mgSifnfdg`bdgefcgdgoecgeflfefcfdghbfgofifdfibSkgSifffhbdgefcgdgoecgeflfefcfdgoehbdclb`beclb`bfcib`babmc`becibSbgefdgegbgnf`bffafiflfhb`cibkcSifffhbdgefcgdgoecgeflfefcfdgoehb`clb`beclb`bfcib`babmc`bfcib
-bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chghc`c`c`c`c`c`c`ckcSmgSS
\ No newline at end of file
+bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chgdc`c`c`c`c`c`c`ckcSmgSSifnfdg`bdgefcgdgoecgeflfefcfdgoehbifnfdg`baflb`bifnfdg`bbflb`bifnfdg`bcfibSkgSbgefdgegbgnf`baf`boc`bbf`bjc`bcfkc
+mgSSifnfdg`bdgefcgdgoecgeflfefcfdghbfgofifdfibSkgSifffhbdgefcgdgoecgeflfefcfdgoehbdclb`beclb`bfcib`babmc`becibSbgefdgegbgnf`bffafiflfhb`cibkcSifffhbdgefcgdgoecgeflfefcfdgoehb`clb`beclb`bfcib`babmc`bfcib
+bgefdgegbgnf`bffafiflfhb`cibkcSbgefdgegbgnf`b`chghc`c`c`c`c`c`c`ckcSmgSSS
\ No newline at end of file
diff --git a/unit_tests/input/div0.cbc b/unit_tests/input/div0.cbc
index de5b67e..3af302a 100644
--- a/unit_tests/input/div0.cbc
+++ b/unit_tests/input/div0.cbc
@@ -1,4 +1,4 @@
-ClamBCafh`ibbfjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbac`cmbgfacdfdcccffecgc``afabp`clamcoincidencejb:23
+ClamBCafhflhhgjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbacbcmbgfdcfcacefafefic``afabp`clamcoincidencejb:23
 
 Tedaaa`
 E``
@@ -7,4 +7,4 @@ A`b`bLaab`b`Fabaa
 Bb`b``baab at dTcab`b`E
 Aab`bLaab`b`b`b`Fabaa
 Bb`baae`Aad`Tcab`baaE
-Sifnfdg`bdfiffg`chbifnfdg`bhgibSkgSbgefdgegbgnf`bacobhgkcSmgSifnfdg`befnfdgbgig`gofifnfdghbfgofifdfibSkgSbgefdgegbgnf`bdfiffg`chb`cibkcSmgSS
\ No newline at end of file
+Sifnfdg`bdfiffg`chbifnfdg`bhgibSkgSbgefdgegbgnf`bacobhgkcSmgSSifnfdg`befnfdgbgig`gofifnfdghbfgofifdfibSkgSbgefdgegbgnf`bdfiffg`chb`cibkcSmgSSS
\ No newline at end of file
diff --git a/unit_tests/input/inf.cbc b/unit_tests/input/inf.cbc
new file mode 100644
index 0000000..28c8c10
--- /dev/null
+++ b/unit_tests/input/inf.cbc
@@ -0,0 +1,9 @@
+ClamBCafhflhhgjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbacbcmbgfdcfcacefafefic``afaap`clamcoincidencejb:14
+
+Tedaaa`
+E``
+G`aa`@`
+A`b`bL`Fabab
+BTbaaa
+BTbaaaE
+Sifnfdg`befnfdgbgig`gofifnfdghbibSkgSgghfiflfefhbacibkgmgSbgefdgegbgnf`b`ckcSmgSS
\ No newline at end of file
diff --git a/unit_tests/input/lsig.cbc b/unit_tests/input/lsig.cbc
index 026dd7e..aad5f02 100644
--- a/unit_tests/input/lsig.cbc
+++ b/unit_tests/input/lsig.cbc
@@ -1,21 +1,21 @@
-ClamBCafh`ibbfjkd|afefdfggifnf```c``a```|bhacflfafmfbfcfmb`cnbac`cmbac`cmbgfacdfdcccffecgc``bhaaap`clamcoincidencejb:299
+ClamBCafhflhhgjkd|afefdfggifnf```c``a```|bhacflfafmfbfcfmb`cnbac`cmbacbcmbgfdcfcacefafefic``bhaaap`clamcoincidencejb:309
 Test.{A,B};Target:1;(((0|1|2)=42,2)|(3=10));EP+0:aabb;ffff;aaccee;f00d;dead
 Tedebgeebfeebeeebdeebceebbeeb`eebadebcdaaa`aacb`bbadb`bcajahbaeahbaeahbaeahbaeahbaecaab`bdb`db`bdagahdajahdabbaddabahdaeah
 Eaeaaaebod|amcgefdgfgifbgegcgnfafmfef``
-Gd```hbia`@`bgeBdeBefBcgBdg@`bfeBad@`bfeBbd@`bee at Ab@Ac`b`aAa`bdeBedB`eBkbB`cBjcBafBafBbfBbf@`bgeBffBffBffBff@`bgeBffB`cB`cBdf@`bceBafBafBcfBcfBefBef@`bgeBdfBefBafBdf@`b`aC``a`b`e@@@Aa at Ac@Ab at Ad`bad at Ab`bad at Ac`bad at Af`bad at Ag`bad at Ah`bad at Ai`bad at Aj`bcdB`aD```h`bcdAlD```h`bcdAhD```h`bcdAdD```h`bcd at D```h`
+Gd```hbja`@`bgeBdeBefBcgBdg@`bfeBad@`bfeBbd@`bee at Ab@Ac`b`aAa`bdeBedB`eBkbB`cBjcBafBafBbfBbf@`bgeBffBffBffBff@`bgeBffB`cB`cBdf@`bceBafBafBcfBcfBefBef@`bgeBdfBefBafBdf@`b`aC``a`b`e@@@Aa at Ac@Ab at Ad`bad at Ab`bad at Ac`bad at Af`bad at Ag`bad at Ah`bad at Ai`bad at Aj`bad at D```h`bcdB`aD```h`bcdAlD```h`bcdAhD```h`bcdAdD```h`bcd at D```h`
 A`b`bLaeb`b`aa`aa`bad`b`b`Fahac
-Bb`b`gbBda`aaaagab`b`AadTaaaaaaab
+Bb`b`gbBea`aaaagab`b`AadTaaaaaaab
 Baaabeab`b`AbdbadacoaabAm`An`b`badabbaeac at dTcab`b at d
 BTcab`b at dE
 Sobjb`bieofeg`bafbgef`bofnflfig`baflflfofggefdf`bdgof`bcgefdg`bdghfefcgef`bfgifbgegcgnfafmfefcg`bafcg`bffofegnfdf`bjbobSfeidbeeecendadmdedoe`ebeedfdidhehbbbdeefcgdgbbib
-feidbeeecendadmdedcehbbbadbblb`bbbbdbbibSdeadbegdeddehbacibSceidgdndaddeeebeedceoeddedcdldoebdedgdidndSddedcdldadbeedoeceidgdndaddeeebeedhbmfafgfifcfibSddedcdldadbeedoeceidgdndaddeeebeedhbjgefbgofib
+feidbeeecendadmdedcehbbbadbblb`bbbbdbbibSdeadbegdeddehbacibSSceidgdndaddeeebeedceoeddedcdldoebdedgdidndSddedcdldadbeedoeceidgdndaddeeebeedhbmfafgfifcfibSddedcdldadbeedoeceidgdndaddeeebeedhbjgefbgofib
 ddedcdldadbeedoeceidgdndaddeeebeedhbcfhfefcfkfibSddedcdldadbeedoeceidgdndaddeeebeedhbffiffgefdgofdgefnfibSddedcdldadbeedoeceidgdndaddeeebeedhbcfhfefcfkfbcibSceidgdndaddeeebeedceoeddedcdldoeednddd
-ceidgdndaddeeebeedceoeddedfdoebdedgdidndSddedfdidndedoeceidgdndaddeeebeedhbmfafgfifcflb`bbbed`ekb`cjcafafbfbfbbibSddedfdidndedoeceidgdndaddeeebeedhbjgefbgoflb`bbbffffffffbbib
+SceidgdndaddeeebeedceoeddedfdoebdedgdidndSddedfdidndedoeceidgdndaddeeebeedhbmfafgfifcflb`bbbed`ekb`cjcafafbfbfbbibSddedfdidndedoeceidgdndaddeeebeedhbjgefbgoflb`bbbffffffffbbib
 ddedfdidndedoeceidgdndaddeeebeedhbffiffgefdgofdgefnflb`bbbafafcfcfefefbbibSddedfdidndedoeceidgdndaddeeebeedhbcfhfefcfkflb`bbbff`c`cdfbbibSddedfdidndedoeceidgdndaddeeebeedhbcfhfefcfkfbclb`bbbdfefafdfbbib
-ceidgdndaddeeebeedceoeedndddSbfofoflf`blfofgfifcfaflfoedgbgifgfgfefbghbfgofifdfibSkgSegnfcgifgfnfefdf`bcgegmfoemfafdgcfhfefcg`bmc`bcfofegnfdgoemfafdgcfhfhbceifgfnfafdgegbgefcgnbmfafgfifcfibkb
+ceidgdndaddeeebeedceoeedndddSSbfofoflf`blfofgfifcfaflfoedgbgifgfgfefbghbfgofifdfibSkgSegnfcgifgfnfefdf`bcgegmfoemfafdgcfhfefcg`bmc`bcfofegnfdgoemfafdgcfhfhbceifgfnfafdgegbgefcgnbmfafgfifcfibkb
 cfofegnfdgoemfafdgcfhfhbceifgfnfafdgegbgefcgnbjgefbgofib`bkb`bcfofegnfdgoemfafdgcfhfhbceifgfnfafdgegbgefcgnbffiffgefdgofdgefnfibkcSegnfcgifgfnfefdf`begnfifagegefoemfafdgcfhfefcg`bmc`bmfafdgcfhfefcghbceifgfnfafdgegbgefcgnbmfafgfifcfibkb
 mfafdgcfhfefcghbceifgfnfafdgegbgefcgnbjgefbgofibkb`bmfafdgcfhfefcghbceifgfnfafdgegbgefcgnbffiffgefdgofdgefnfibkcSifff`bhbcgegmfoemfafdgcfhfefcg`bmcmc`bdcbc`bfbfb`begnfifagegefoemfafdgcfhfefcg`bmcmc`bbcib`bkg
 obob`bdehfef`bafbfoffgef`bcc`bcgifgfnfafdgegbgefcg`bhfaffgef`bmfafdgcfhfefdf`baf`bdgofdgaflf`bofff`bdcbc`bdgifmfefcglb`bafnfdf`bafdg`blfefafcgdgSobob`bbc`bofff`bdghfefmf`bhfaffgef`bmfafdgcfhfefdf
 bgefdgegbgnf`bdgbgegefkcSmgSobob`bidff`bdghfef`bcfhfefcfkf`bcgifgfnfafdgegbgef`bmfafdgcfhfefcg`bac`c`bdgifmfefcg`bggef`bcgdgiflflf`bhfaffgef`baf`bmfafdgcfhfSifff`bhbcfofegnfdgoemfafdgcfhfhbceifgfnfafdgegbgefcgnbcfhfefcfkfib`bmcmc`bac`cib
-bgefdgegbgnf`bdgbgegefkcSobob`bndof`bmfafdgcfhfSbgefdgegbgnf`bffaflfcgefkcSmgSifnfdg`befnfdgbgig`gofifnfdghbfgofifdfibSkgSegnfcgifgfnfefdf`bcfofegnfdg`bmc`bcfofegnfdgoemfafdgcfhfhbceifgfnfafdgegbgefcgnbcfhfefcfkfbcibkc
+bgefdgegbgnf`bdgbgegefkcSobob`bndof`bmfafdgcfhfSbgefdgegbgnf`bffaflfcgefkcSmgSSifnfdg`befnfdgbgig`gofifnfdghbfgofifdfibSkgSegnfcgifgfnfefdf`bcfofegnfdg`bmc`bcfofegnfdgoemfafdgcfhfhbceifgfnfafdgegbgefcgnbcfhfefcfkfbcibkc
 ifff`bhbcfofegnfdg`bncmc`bbcibSffofegnfdffeifbgegcghbcfofegnfdg`bmcmc`bbc`boc`bbbadbb`bjc`bbbbdbbibkcSbgefdgegbgnf`b`ckcSmgSS
\ No newline at end of file
diff --git a/unit_tests/input/retmagic.cbc b/unit_tests/input/retmagic.cbc
index 6d4f92b..f4877f5 100644
--- a/unit_tests/input/retmagic.cbc
+++ b/unit_tests/input/retmagic.cbc
@@ -1,4 +1,4 @@
-ClamBCafh`ibbfjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbac`cmbgfacdfdcccffecgc``afaap`clamcoincidencejb:20
+ClamBCafhflhhgjkd|afefdfggifnf```````|bhacflfafmfbfcfmb`cnbac`cmbacbcmbgfdcfcacefafefic``afaap`clamcoincidencejb:20
 
 Tedaaa`
 E``

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list