[Date Prev][Date Next] [Chronological] [Thread] [Top]

core dump UTF8bvnormalize (ITS#2737)



Full_Name: Andy Hird
Version: 2.1.22
OS: linux redhat 9 i386
URL: http://www.hird.net/openldap-coredump.tar.gz
Submission from: (NULL) (211.28.96.69)


When importing certain sequences of unicode characters UTF8bvnormalize can core
dump because not enough space is allocated in the "out" buffer.

This usually happens when a particular unicode character is normalised to more
characters than was originally used to represent it and a sequence of 7bit
(ascii) characters follows it. eg.
0xb8:      CEDILLA SPACING CEDILLA 
normalises to (in compat mode):
0x20:      SPACE 
0x327      COMBINING CEDILLA NON-SPACING CEDILLA


I've included a patch which fixes this issue, but it may not be the best fix and
is definitely not v. optimal (in that it can result it quite a few calls to
realloc given large unicode strings).

I've also included an ldif file which contains an entry which can trigger this
bug. The unicode string (in the sn attribute) which causes this problem is valid
utf-8 but nonsensical (we're currently migrating a lot of user data which was
entered into netscape 4 directory service which contained quite a bit of "dodgy"
data).

And finally I included a small test app which will read in a file containing a
utf8 string (base64 decode the sn attribute to get some good test data) and push
it through UTF8bvnormalize.

This bug causes both slapd and slapadd to crash when hit with data.

Heres the patch:

--- openldap-2.1.22/libraries/liblunicode/ucstr.c       2003-02-09
10:50:39.000000000 +1100
+++ openldap-2.1.22/libraries/liblunicode/ucstr.c       2003-09-25
01:56:15.000000000 +1000
@@ -251,6 +251,20 @@
 
                /* s[i] is ascii */
                /* finish off everything up to char before next non-ascii */
+                /* Allocate more space in out */
+                if (len - i > outsize - outpos) {
+                         outsize = outsize + ((len - i) - (outsize - outpos));
+
+                         outtmp = (char *) realloc(out, outsize);
+                         if (outtmp == NULL) {
+                                 free(out);
+                                 free(ucs);
+                                 return NULL;
+                         }
+                         out = outtmp;
+                }
+
+
                for ( i++; (i < len) && LDAP_UTF8_ISASCII(s + i); i++ ) {
                        out[outpos++] = casefold ? TOLOWER( s[i-1] ) : s[i-1];
                }

Heres the bad data:
Try saving it to an ldif file (modify the dn), and then slapadd'ing it.

dn: cn=coredumpdude,ou=addressbook, o=ekit.com
cn: coredumpdude
givenname:: UF7Dg8KDw4LCg8ODwoLDgsKCw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKDw4PCgsOC
 wozDg8KDw4LCg8ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKDw4PCgsOCwozDg8KDw4L
 Cg8ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCqFDDg8KDw4LCg8ODwoLDgsKpRsODwoPDgsKDw4PCgs
 OCwozDg8KDw4LCg8ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKDw4PCgsOCwozDg8KDw
 4LCg8ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKCw4PCgsOCwotEJCDDg8KDw4LCgsOD
 woLDgsKDw4PCg8OCwoPDg8KCw4LCrMODwoPDgsKCw4PCgsOCwotUJCRTw4PCg8OCwoLDg8KCw4L
 Ci1wkJFbDg8KDw4LCgsODwoLDgsKJTCRXVVBSU8ODwoPDgsKDw4PCgsOCwqjDg8KDw4LCg8ODwo
 LDgsKdT8ODwoPDgsKCw4PCgsOCwoN8JDB1w4PCg8OCwoPDg8KCw4LCh8ODwoPDgsKDw4PCgsOCw
 oDDg8KDw4LCg8ODwoLDgsKBTsODwoPDgsKDw4PCgsOCwqktw4PCg8OCwoLDg8KCw4LCg3wkMHTD
 g8KDw4LCgsODwoLDgsKDfCQww4PCg8OCwoLDg8KCw4LChTPDg8KDw4LCg8ODwoLDgsK2OTXDg8K
 Dw4LCg8ODwoLDgsKAw4PCg8OCwoPDg8KCw4LCgU7Dg8KDw4LCgsODwoLDgsKEIMODwoPDgsKCw4
 PCgsOCwqFIw4PCg8OCwoPDg8KCw4LChU7Dg8KDw4LCgsODwoLDgsKJNcODwoPDgsKDw4PCgsOCw
 oDDg8KDw4LCg8ODwoLDgsKBTsODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsKIw4PCg8OC
 woLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwr9TXMODwoPDgsKCw4PCgsOCwolEJDvDg8KDw4LCg8O
 DwoLDgsKGw4PCg8OCwoLDg8KCw4LChMODwoPDgsKCw4PCgsOCwpHDg8KDw4LCgsODwoLDgsKNRC
 TDg8KDw4LCgsODwoLDgsKLIEjDg8KDw4LCg8ODwoLDgsKFTlDDg8KDw4LCgsODwoLDgsKLw4PCg
 8OCwoPDg8KCw4LCv1Ngw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwpjDg8KDw4LCgsOD
 woLDgsKFw4PCg8OCwoPDg8KCw4LCm3Rxw4PCg8OCwoLDg8KCw4LCizvDg8KDw4LCgsODwoLDgsK
 Lw4PCg8OCwoPDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwr9XaMODwoPDgsKCw4PCgsOCwolEJDvDg8
 KDw4LCg8ODwoLDgsKGdGLDg8KDw4LCgsODwoLDgsKLf2zDg8KDw4LCgsODwoLDgsKNRCTDg8KDw
 4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCi1DDg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KC
 w4LCl8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsKow4PCg8OCwoLDg8KCw4LChcODwoP
 DgsKDw4PCgsOCwq10SmgoT03Dg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCjcODwoPDgs
 KDw4PCgsOCwqggTMODwoPDgsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsKAdDrDg8KDw4LCgsODw
 oLDgsKNRCTDg8KDw4LCgsODwoLDgsKLTSBQUcODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCg8ODwoLD
 gsKMw4PCg8OCwoLDg8KCw4LCik/Dg8KDw4LCgsODwoLDgsKLRCQoZitEJCDDg8KDw4LCgsODwoL
 DgsK3w4PCg8OCwoPDg8KCw4LCiMODwoPDgsKDw4PCgsOCwoHDg8KDw4LCg8ODwoLDgsKhw4PCg8
 OCwoLDg8KCw4LCi0QkJGYrRCTDg8KDw4LCgsODwoLDgsK3w4PCg8OCwoPDg8KCw4LCkMODwoPDg
 sKDw4PCgsOCworDg8KDw4LCgsODwoLDgsKLRSBRVmpQw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKD
 w4PCgsOCwoDDg8KDw4LCgsODwoLDgsKKTzl0JHXDg8KDw4LCgsODwoLDgsKhOXQkw4PCg8OCwoL
 Dg8KCw4LChW/Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKDw4PCgsOCwr
 /Dg8KDw4LCgsODwoLDgsKhRMODwoPDgsKDw4PCgsOCwoVOw4PCg8OCwoLDg8KCw4LCi8ODwoPDg
 sKDw4PCgsOCwojDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCv1Ncw4PCg8OCwoLDg8KC
 w4LCiUQkw4PCg8OCwoLDg8KCw4LChcODwoPDgsKDw4PCgsOCwoDDg8KDw4LCgsODwoLDgsKEw4P
 Cg8OCwoPDg8KCw4LCtjPDg8KDw4LCg8ODwoLDgsK2w4PCg8OCwoLDg8KCw4LCjUQkw4PCg8OCwo
 LDg8KCw4LCiyBEw4PCg8OCwoPDg8KCw4LChU5Qw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCg
 sOCwr9TYMODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsK4w4PCg8OCwoLDg8KCw4LChcOD
 woPDgsKDw4PCgsOCwr/Dg8KDw4LCgsODwoLDgsKEw4PCg8OCwoPDg8KCw4LCkMODwoPDgsKCw4P
 CgsOCwovDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCj8ODwoPDgsKDw4PCgsOCwr9TaM
 ODwoPDgsKCw4PCgsOCwolEJDvDg8KDw4LCg8ODwoLDgsKGw4PCg8OCwoLDg8KCw4LChMODwoPDg
 sKCw4PCgsOCwr3Dg8KDw4LCgsODwoLDgsKNRCTDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KC
 w4LCj1DDg8KDw4LCg8ODwoLDgsK/U2zDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCqMO
 DwoPDgsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsKtw4PCg8OCwoLDg8KCw4LChMODwoPDgsKCw4
 PCgsOCwp9oMMODwoPDgsKDw4PCgsOCwolMw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCw
 o3Dg8KDw4LCg8ODwoLDgsKow4PCg8OCwoPDg8KCw4LCq0vDg8KDw4LCgsODwoLDgsKFw4PCg8OC
 woPDg8KCw4LCgMODwoPDgsKCw4PCgsOCwoTDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoLDg8KCw4L
 Ci0QkOcODwoPDgsKCw4PCgsOCwrDDg8KDw4LCg8ODwoLDgsKEdEU5w4PCg8OCwoLDg8KCw4LCtT
 R0PcODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsKNw4PCg8OCwoPDg8KCw4LCqMODwoPDg
 sKDw4PCgsOCwo5Lw4PCg8OCwoLDg8KCw4LCi0AgUMODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCgsOD
 woLDgsKsw4PCg8OCwoLDg8KCw4LCik/Dg8KDw4LCgsODwoLDgsKFw4PCg8OCwoPDg8KCw4LCgHU
 ow4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo3Dg8KDw4LCgsODwoLDgsKJw4PCg8OCwo
 LDg8KCw4LCtTTDg8KDw4LCg8ODwoLDgsKow4PCg8OCwoPDg8KCw4LCl8ODwoPDgsKDw4PCgsOCw
 rtWw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo3Dg8KDw4LCg8ODwoLDgsKow4PCg8OC
 woLDg8KCw4LCnw==
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
sn:: aMODwoPDgsKCw4PCgsOCwotFVlZQw4PCg8OCwoPDg8KCw4LCv0zDg8KDw4LCgsODwoLDgsK
 KT8ODwoPDgsKDw4PCgsOCwqs6w4PCg8OCwoLDg8KCw4LCjUQkw4PCg8OCwoLDg8KCw4LCi01QUc
 ODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCg8ODwoLDgsKMw4PCg8OCwoLDg8KCw4LCik/Dg8KDw4LCg
 sODwoLDgsKLRCQoZitEJMODwoPDgsKCw4PCgsOCwrfDg8KDw4LCg8ODwoLDgsKIw4PCg8OCwoPD
 g8KCw4LCgcODwoPDgsKDw4PCgsOCwqHDg8KDw4LCgsODwoLDgsKLRCQkZitEJMODwoPDgsKCw4P
 CgsOCwrfDg8KDw4LCg8ODwoLDgsKQw4PCg8OCwoPDg8KCw4LCisODwoPDgsKCw4PCgsOCwotFUV
 ZqUMODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCg8ODwoLDgsKAw4PCg8OCwoLDg8KCw4LCik85dCTDg
 8KDw4LCgsODwoLDgsKFQ8ODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPD
 g8KCw4LCvzl0JMODwoPDgsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4L
 Cv8ODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCgsODwoLDgsKLRCTDg8KDw4LCgsODwoLDgsKDw4PCg8
 OCwoLDg8KCw4LCuMODwoPDgsKDw4PCgsOCwoR0Q8ODwoPDgsKCw4PCgsOCwoM9w4PCg8OCwoPDg
 8KCw4LChMODwoPDgsKDw4PCgsOCwoFOdTrDg8KDw4LCg8ODwoLDgsKHw4PCg8OCwoPDg8KCw4LC
 hMODwoPDgsKDw4PCgsOCwoFOw4PCg8OCwoPDg8KCw4LCqMODwoPDgsKDw4PCgsOCwrtHw4PCg8O
 CwoLDg8KCw4LChcODwoPDgsKDw4PCgsOCwoDDg8KDw4LCgsODwoLDgsK4dMODwoPDgsKDw4PCgs
 OCwqjDg8KDw4LCg8ODwoLDgsKtR8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCgsODwoLDgsKLw4PCg
 8OCwoPDg8KCw4LCiMODwoPDgsKDw4PCgsOCwr9SfGrDg8KDw4LCgsODwoLDgsKLQGgxw4PCg8OC
 woPDg8KCw4LCoWhQw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKDw4PCgsOCwoDDg8KDw4LCgsODwoL
 DgsKKT8ODwoPDgsKCw4PCgsOCwotEJDDDg8KDw4LCgsODwoLDgsKFw4PCg8OCwoPDg8KCw4LCgH
 TDg8KDw4LCgsODwoLDgsKDw4PCg8OCwoPDg8KCw4LCuHXDg8KDw4LCgsODwoLDgsKLRCRqw4PCg
 8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwojDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KC
 w4LCv8ODwoPDgsKCw4PCgsOCwpPDg8KDw4LCg8ODwoLDgsKQXV9eW8ODwoPDgsKCw4PCgsOCwoP
 Dg8KDw4LCg8ODwoLDgsKEw4PCg8OCwoPDg8KCw4LCgsODwoPDgsKDw4PCgsOCwozDg8KDw4LCg8
 ODwoLDgsKMw4PCg8OCwoPDg8KCw4LCjMODwoPDgsKDw4PCgsOCwozDg8KDw4LCg8ODwoLDgsKMw
 4PCg8OCwoPDg8KCw4LCjMODwoPDgsKDw4PCgsOCwoxWV8ODwoPDgsKCw4PCgsOCwovDg8KDw4LC
 g8ODwoLDgsKxw4PCg8OCwoLDg8KCw4LCi3wkw4PCg8OCwoLDg8KCw4LCjcODwoPDgsKCw4PCgsO
 CwofDg8KDw4LCg8ODwoLDgsKof8ODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCg8ODwoLDgsK/w4PCg8
 OCwoLDg8KCw4LCg8ODwoPDgsKDw4PCgsOCwrh5w4PCg8OCwoLDg8KCw4LChzQzw4PCg8OCwoPDg
 8KCw4LCicODwoPDgsKCw4PCgsOCworDg8KDw4LCgsODwoLDgsKIw4PCg8OCwoLDg8KCw4LCuDFB
 w4PCg8OCwoPDg8KCw4LCvyTDg8KDw4LCgsODwoLDgsKNdDFBw4PCg8OCwoLDg8KCw4LCuF9ew4P
 Cg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCgsOCwrhfXsODwoPDgsKDw4PCgsOCwoLDg8KDw4LCgs
 ODwoLDgsK4X17Dg8KDw4LCg8ODwoLDgsKCw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCw
 o7Dg8KDw4LCgsODwoLDgsKBw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4PCgsOCwoTDg8KDw4LC
 gsODwoLDgsKAdcODwoPDgsKDw4PCgsOCwqhtw4PCg8OCwoLDg8KCw4LChcODwoPDgsKDw4PCgsO
 CwoDDg8KDw4LCgsODwoLDgsKEw4PCg8OCwoPDg8KCw4LCsMODwoPDgsKCw4PCgsOCwrhfXsODwo
 PDgsKDw4PCgsOCwoLDg8KDw4LCg8ODwoLDgsKow4PCg8OCwoLDg8KCw4LCtsODwoPDgsKDw4PCg
 sOCwq7Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4PCgsOCwoPDg8KD
 w4LCg8ODwoLDgsKoZsODwoPDgsKCw4PCgsOCwoPDg8KDw4LCg8ODwoLDgsK4w4PCg8OCwoLDg8K
 Cw4LCh8ODwoPDgsKDw4PCgsOCwpUzw4PCg8OCwoPDg8KCw4LCicODwoPDgsKCw4PCgsOCworDg8
 KDw4LCgsODwoLDgsKISDJBw4PCg8OCwoPDg8KCw4LCvyTDg8KDw4LCgsODwoLDgsKNNDJBw4PCg
 8OCwoLDg8KCw4LCi8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsKOw4PCg8OCwoPDg8KC
 w4LCv8ODwoPDgsKCw4PCgsOCwpDDg8KDw4LCg8ODwoLDgsKIw4PCg8OCwoLDg8KCw4LCi8ODwoP
 DgsKDw4PCgsOCwojDg8KDw4LCg8ODwoLDgsKow4PCg8OCwoPDg8KCw4LCnEzDg8KDw4LCgsODwo
 LDgsKLSEBmw4PCg8OCwoLDg8KCw4LCg3lwdSTDg8KDw4LCgsODwoLDgsKBw4PCg8OCwoPDg8KCw
 4LCv8ODwoPDgsKCw4PCgsOCwobDg8KDw4LCgsODwoLDgsKAw4PCg8OCwoLDg8KCw4LChMODwoPD
 gsKCw4PCgsOCwp/Dg8KDw4LCgsODwoLDgsKBw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4PCgsO
 CwojDg8KDw4LCgsODwoLDgsKAw4PCg8OCwoLDg8KCw4LChMODwoPDgsKCw4PCgsOCwpPDg8KDw4
 LCgsODwoLDgsKBw4PCg8OCwoPDg8KCw4LCv1rDg8KDw4LCgsODwoLDgsKAw4PCg8OCwoLDg8KCw
 4LChMODwoPDgsKCw4PCgsOCwodqw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKCw4PCgsOCwoBqaMOD
 woPDgsKCw4PCgsOCwpBQw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKDIMODwoPDgsKCw4PCgsOCwop
 Pw4PCg8OCwoLDg8KCw4LChcODwoPDgsKDw4PCgsOCwoDDg8KDw4LCgsODwoLDgsKOacODwoPDgs
 KCw4PCgsOCwrhfXsODwoPDgsKDw4PCgsOCwoLDg8KDw4LCgsODwoLDgsK4X17Dg8KDw4LCg8ODw
 oLDgsKCw4PCg8OCwoLDg8KCw4LCgcODwoPDgsKDw4PCgsOCwr/Dg8KDw4LCgsODwoLDgsKGw4PC
 g8OCwoLDg8KCw4LCgMODwoPDgsKCw4PCgsOCwoRJw4PCg8OCwoLDg8KCw4LCgcODwoPDgsKDw4P
 CgsOCwr/Dg8KDw4LCgsODwoLDgsKIw4PCg8OCwoLDg8KCw4LCgMODwoPDgsKCw4PCgsOCwoQ9w4
 PCg8OCwoLDg8KCw4LCgcODwoPDgsKDw4PCgsOCwr9aw4PCg8OCwoLDg8KCw4LCgMODwoPDgsKCw
 4PCgsOCwoQxw4PCg8OCwoLDg8KCw4LCuF9ew4PCg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCgsOC
 woM9w4PCg8OCwoPDg8KCw4LCm07Dg8KDw4LCgsODwoLDgsKEw4PCg8OCwoLDg8KCw4LCuF9ew4P
 Cg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCgsOCwrhfXsODwoPDgsKDw4PCgsOCwoLDg8KDw4LCgs
 ODwoLDgsK4X17Dg8KDw4LCg8ODwoLDgsKCw4PCg8OCwoLDg8KCw4LCuF9ew4PCg8OCwoPDg8KCw
 4LCgsODwoPDgsKCw4PCgsOCwrhfXsODwoPDgsKDw4PCgsOCwoLDg8KDw4LCgsODwoLDgsKLw4PC
 g8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo7Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoLDg8K
 Cw4LCkMODwoPDgsKDw4PCgsOCwojDg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCiMODwo
 PDgsKDw4PCgsOCwqjDg8KDw4LCg8ODwoLDgsK+S8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODw
 oLDgsKww4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKDw4PCgsOCwoTDg8KDw4LCgsODwoLDgsKKT1DD
 g8KDw4LCg8ODwoLDgsKoRsODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsK4w4PCg8OCwoL
 Dg8KCw4LChcODwoPDgsKDw4PCgsOCwrZ0Y8ODwoPDgsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgs
 K/dF/Dg8KDw4LCgsODwoLDgsKhdHpPw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo5Qw
 4PCg8OCwoPDg8KCw4LCqC1Jw4PCg8OCwoLDg8KCw4LChcODwoPDgsKDw4PCgsOCwoB1RMODwoPD
 gsKCw4PCgsOCwqFwek/Dg8KDw4LCgsODwoLDgsKLw4PCg8OCwoPDg8KCw4LCj1DDg8KDw4LCg8O
 DwoLDgsKoScODwoPDgsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsKAdTPDg8KDw4LCgsODwoLDgs
 KhbHpPw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo5Qw4PCg8OCwoPDg8KCw4LCqEnDg
 8KDw4LCgsODwoLDgsKFw4PCg8OCwoPDg8KCw4LCgHXDg8KDw4LCgsODwoLDgsKhaHpPw4PCg8OC
 woLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo9Qw4PCg8OCwoPDg8KCw4LCqMODwoPDgsKDw4PCgsO
 CwrpIw4PCg8OCwoLDg8KCw4LChcODwoPDgsKDw4PCgsOCwoB1M8ODwoPDgsKDw4PCgsOCwoBfXs
 ODwoPDgsKDw4PCgsOCwoLDg8KDw4LCgsODwoLDgsK4X17Dg8KDw4LCg8ODwoLDgsKCw4PCg8OCw
 oLDg8KCw4LCuF9ew4PCg8OCwoPDg8KCw4LCgjPDg8KDw4LCg8ODwoLDgsKAX17Dg8KDw4LCg8OD
 woLDgsKCw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKDw4PCgsOCwo7Dg8KDw4LCg8ODwoLDgsKoJ8O
 DwoPDgsKDw4PCgsOCwq3Dg8KDw4LCg8ODwoLDgsK/w4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4
 PCgsOCwoPDg8KDw4LCg8ODwoLDgsK4aHU5w4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKCw4PCgsOCw
 ovDg8KDw4LCg8ODwoLDgsKOw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4PCgsOCwpDDg8KDw4LC
 g8ODwoLDgsKIw4PCg8OCwoLDg8KCw4LCi8ODwoPDgsKCw4PCgsOCwovDg8KDw4LCg8ODwoLDgsK
 Iw4PCg8OCwoPDg8KCw4LCv8ODwoPDgsKCw4PCgsOCwpLDg8KDw4LCg8ODwoLDgsKEw4PCg8OCwo
 LDg8KCw4LChcODwoPDgsKDw4PCgsOCwoB0IcODwoPDgsKCw4PCgsOCwovDg8KDw4LCgsODwoLDg
 sKAw4PCg8OCwoPDg8KCw4LCtMODwoPDgsKCw4PCgsOCwoXDg8KDw4LCg8ODwoLDgsKAdGbDg8KD
 w4LCgsODwoLDgsKLQGY9dGY9dTPDg8KDw4LCg8ODwoLDgsKAX17Dg8KDw4LCg8ODwoLDgsKCw4P
 Cg8OCwoLDg8KCw4LCuF9ew4PCg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCgsOCwrhfXsODwoPDgs
 KDw4PCgsOCwoIzw4PCg8OCwoPDg8KCw4LCgF9ew4PCg8OCwoPDg8KCw4LCgsODwoPDgsKCw4PCg
 sOCwovDg8KDw4LCg8ODwoLDgsK/Ri9BUC9BRi9BWi9BZC9BWzBBZC9BZTBBZC9BZC9BbzBBZC9B
 eTBBw4PCg8OCwoLDg8KCw4LCgzBBMUFhMUFrMUE=


I'll include a link to a zip file with