From 18a91cebcf384ffdae8668f3d3ae06098de90c13 Mon Sep 17 00:00:00 2001 From: Robert Nix Date: Wed, 10 Aug 2016 18:16:32 -0500 Subject: [PATCH 1/3] Move DDS decoders to C - Fixed inaccurate BC1/BC3 texture decoding --- PIL/DdsImagePlugin.py | 133 +-- PIL/FtexImagePlugin.py | 5 +- .../dxt1-rgb-4bbp-noalpha_MipMaps-1.png | Bin 27769 -> 30351 bytes Tests/test_file_dds.py | 12 +- Tests/test_file_ftex.py | 7 +- _imaging.c | 2 + decode.c | 50 + libImaging/BcnDecode.c | 851 ++++++++++++++++++ libImaging/Imaging.h | 2 + setup.py | 22 +- 10 files changed, 931 insertions(+), 153 deletions(-) create mode 100644 libImaging/BcnDecode.c diff --git a/PIL/DdsImagePlugin.py b/PIL/DdsImagePlugin.py index 2ebfdf037..bbf833816 100644 --- a/PIL/DdsImagePlugin.py +++ b/PIL/DdsImagePlugin.py @@ -93,120 +93,6 @@ DXT3_FOURCC = 0x33545844 DXT5_FOURCC = 0x35545844 -def _decode565(bits): - a = ((bits >> 11) & 0x1f) << 3 - b = ((bits >> 5) & 0x3f) << 2 - c = (bits & 0x1f) << 3 - return a, b, c - - -def _c2a(a, b): - return (2 * a + b) // 3 - - -def _c2b(a, b): - return (a + b) // 2 - - -def _c3(a, b): - return (2 * b + a) // 3 - - -def _dxt1(data, width, height): - # TODO implement this function as pixel format in decode.c - ret = bytearray(4 * width * height) - - for y in range(0, height, 4): - for x in range(0, width, 4): - color0, color1, bits = struct.unpack("> 2 - if control == 0: - r, g, b = r0, g0, b0 - elif control == 1: - r, g, b = r1, g1, b1 - elif control == 2: - if color0 > color1: - r, g, b = _c2a(r0, r1), _c2a(g0, g1), _c2a(b0, b1) - else: - r, g, b = _c2b(r0, r1), _c2b(g0, g1), _c2b(b0, b1) - elif control == 3: - if color0 > color1: - r, g, b = _c3(r0, r1), _c3(g0, g1), _c3(b0, b1) - else: - r, g, b = 0, 0, 0 - - idx = 4 * ((y + j) * width + (x + i)) - ret[idx:idx+4] = struct.pack('4B', r, g, b, 255) - - return bytes(ret) - - -def _dxtc_alpha(a0, a1, ac0, ac1, ai): - if ai <= 12: - ac = (ac0 >> ai) & 7 - elif ai == 15: - ac = (ac0 >> 15) | ((ac1 << 1) & 6) - else: - ac = (ac1 >> (ai - 16)) & 7 - - if ac == 0: - alpha = a0 - elif ac == 1: - alpha = a1 - elif a0 > a1: - alpha = ((8 - ac) * a0 + (ac - 1) * a1) // 7 - elif ac == 6: - alpha = 0 - elif ac == 7: - alpha = 0xff - else: - alpha = ((6 - ac) * a0 + (ac - 1) * a1) // 5 - - return alpha - - -def _dxt5(data, width, height): - # TODO implement this function as pixel format in decode.c - ret = bytearray(4 * width * height) - - for y in range(0, height, 4): - for x in range(0, width, 4): - a0, a1, ac0, ac1, c0, c1, code = struct.unpack("<2BHI2HI", - data.read(16)) - - r0, g0, b0 = _decode565(c0) - r1, g1, b1 = _decode565(c1) - - for j in range(4): - for i in range(4): - ai = 3 * (4 * j + i) - alpha = _dxtc_alpha(a0, a1, ac0, ac1, ai) - - cc = (code >> 2 * (4 * j + i)) & 3 - if cc == 0: - r, g, b = r0, g0, b0 - elif cc == 1: - r, g, b = r1, g1, b1 - elif cc == 2: - r, g, b = _c2a(r0, r1), _c2a(g0, g1), _c2a(b0, b1) - elif cc == 3: - r, g, b = _c3(r0, r1), _c3(g0, g1), _c3(b0, b1) - - idx = 4 * ((y + j) * width + (x + i)) - ret[idx:idx+4] = struct.pack('4B', r, g, b, alpha) - - return bytes(ret) - - class DdsImageFile(ImageFile.ImageFile): format = "DDS" format_description = "DirectDraw Surface" @@ -233,28 +119,19 @@ class DdsImageFile(ImageFile.ImageFile): bitcount, rmask, gmask, bmask, amask = struct.unpack("<5I", header.read(20)) - self.tile = [ - ("raw", (0, 0) + self.size, 0, (self.mode, 0, 1)) - ] - if fourcc == b"DXT1": self.pixel_format = "DXT1" - codec = _dxt1 + n = 1 elif fourcc == b"DXT5": self.pixel_format = "DXT5" - codec = _dxt5 + n = 3 else: raise NotImplementedError("Unimplemented pixel format %r" % (fourcc)) - try: - decoded_data = codec(self.fp, self.width, self.height) - except struct.error: - raise IOError("Truncated DDS file") - finally: - self.fp.close() - - self.fp = BytesIO(decoded_data) + self.tile = [ + ("bcn", (0, 0) + self.size, 4 + header_size, (n)) + ] def load_seek(self, pos): pass diff --git a/PIL/FtexImagePlugin.py b/PIL/FtexImagePlugin.py index f3a2d7fa7..9dab83621 100644 --- a/PIL/FtexImagePlugin.py +++ b/PIL/FtexImagePlugin.py @@ -43,7 +43,6 @@ Note: All data is stored in little-Endian (Intel) byte order. import struct from io import BytesIO from PIL import Image, ImageFile -from PIL.DdsImagePlugin import _dxt1 MAGIC = b"FTEX" @@ -73,8 +72,8 @@ class FtexImageFile(ImageFile.ImageFile): data = self.fp.read(mipmap_size) if format == FORMAT_DXT1: - data = _dxt1(BytesIO(data), self.width, self.height) - self.tile = [("raw", (0, 0) + self.size, 0, ('RGBX', 0, 1))] + self.mode = "RGBA" + self.tile = [("bcn", (0, 0) + self.size, 0, (1))] elif format == FORMAT_UNCOMPRESSED: self.tile = [("raw", (0, 0) + self.size, 0, ('RGB', 0, 1))] else: diff --git a/Tests/images/dxt1-rgb-4bbp-noalpha_MipMaps-1.png b/Tests/images/dxt1-rgb-4bbp-noalpha_MipMaps-1.png index a308f0deffcc38809f680e2afe31ab436e8451fd..f6658e129e21c3fe6427075b9bbdee2b6d3f98fa 100644 GIT binary patch literal 30351 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 z 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 b1m)9?9rNnjOgF=&vdGGib;}+sjXCjuL+WEY literal 27769 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 = ImagingBcnDecode; + decoder->state.state = n; + decoder->state.ystep = ystep; + + return (PyObject*) decoder; +} + + /* -------------------------------------------------------------------- */ /* FLI */ /* -------------------------------------------------------------------- */ diff --git a/libImaging/BcnDecode.c b/libImaging/BcnDecode.c new file mode 100644 index 000000000..341099348 --- /dev/null +++ b/libImaging/BcnDecode.c @@ -0,0 +1,851 @@ +/* + * The Python Imaging Library + * + * decoder for DXTn-compressed data + * + * Format documentation: + * http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt + * + * The contents of this file are in the public domain (CC0) + * Full text of the CC0 license: + * https://creativecommons.org/publicdomain/zero/1.0/ + */ + + +#include "Imaging.h" + + +typedef struct { + UINT8 r, g, b, a; +} rgba; + +typedef struct { + UINT8 l; +} lum; + +typedef struct { + FLOAT32 r, g, b; +} rgb32f; + +typedef struct { + UINT16 c0, c1; + UINT32 lut; +} bc1_color; + +typedef struct { + UINT8 a0, a1; + UINT8 lut[6]; +} bc3_alpha; + +#define LOAD16(p) \ + (p)[0] | ((p)[1] << 8) + +#define LOAD32(p) \ + (p)[0] | ((p)[1] << 8) | ((p)[2] << 16) | ((p)[3] << 24) + +static void bc1_color_load(bc1_color *dst, const UINT8 *src) { + dst->c0 = LOAD16(src); + dst->c1 = LOAD16(src + 2); + dst->lut = LOAD32(src + 4); +} + +static void bc3_alpha_load(bc3_alpha *dst, const UINT8 *src) { + memcpy(dst, src, sizeof(bc3_alpha)); +} + +static rgba decode_565(UINT16 x) { + rgba c; + int r, g, b; + r = (x & 0xf800) >> 8; + r |= r >> 5; + c.r = r; + g = (x & 0x7e0) >> 3; + g |= g >> 6; + c.g = g; + b = (x & 0x1f) << 3; + b |= b >> 5; + c.b = b; + c.a = 0xff; + return c; +} + +static void decode_bc1_color(rgba *dst, const UINT8 *src) { + bc1_color col; + rgba p[4]; + int n, cw; + UINT16 r0, g0, b0, r1, g1, b1; + bc1_color_load(&col, src); + + p[0] = decode_565(col.c0); + r0 = p[0].r; + g0 = p[0].g; + b0 = p[0].b; + p[1] = decode_565(col.c1); + r1 = p[1].r; + g1 = p[1].g; + b1 = p[1].b; + if (col.c0 > col.c1) { + p[2].r = (2*r0 + 1*r1) / 3; + p[2].g = (2*g0 + 1*g1) / 3; + p[2].b = (2*b0 + 1*b1) / 3; + p[2].a = 0xff; + p[3].r = (1*r0 + 2*r1) / 3; + p[3].g = (1*g0 + 2*g1) / 3; + p[3].b = (1*b0 + 2*b1) / 3; + p[3].a = 0xff; + } else { + p[2].r = (r0 + r1) / 2; + p[2].g = (g0 + g1) / 2; + p[2].b = (b0 + b1) / 2; + p[2].a = 0xff; + p[3].r = 0; + p[3].g = 0; + p[3].b = 0; + p[3].a = 0; + } + for (n = 0; n < 16; n++) { + cw = 3 & (col.lut >> (2 * n)); + dst[n] = p[cw]; + } +} + +static void decode_bc3_alpha(char *dst, const UINT8 *src, int stride, int o) { + bc3_alpha b; + UINT16 a0, a1; + UINT8 a[8]; + int n, lut, aw; + bc3_alpha_load(&b, src); + + a0 = b.a0; + a1 = b.a1; + a[0] = (UINT8)a0; + a[1] = (UINT8)a1; + if (a0 > a1) { + a[2] = (6*a0 + 1*a1) / 7; + a[3] = (5*a0 + 2*a1) / 7; + a[4] = (4*a0 + 3*a1) / 7; + a[5] = (3*a0 + 4*a1) / 7; + a[6] = (2*a0 + 5*a1) / 7; + a[7] = (1*a0 + 6*a1) / 7; + } else { + a[2] = (4*a0 + 1*a1) / 5; + a[3] = (3*a0 + 2*a1) / 5; + a[4] = (2*a0 + 3*a1) / 5; + a[5] = (1*a0 + 4*a1) / 5; + a[6] = 0; + a[7] = 0xff; + } + lut = b.lut[0] | (b.lut[1] << 8) | (b.lut[2] << 16); + for (n = 0; n < 8; n++) { + aw = 7 & (lut >> (3 * n)); + dst[stride * n + o] = a[aw]; + } + lut = b.lut[3] | (b.lut[4] << 8) | (b.lut[5] << 16); + for (n = 0; n < 8; n++) { + aw = 7 & (lut >> (3 * n)); + dst[stride * (8+n) + o] = a[aw]; + } +} + +static void decode_bc1_block(rgba *col, const UINT8* src) { + decode_bc1_color(col, src); +} + +static void decode_bc2_block(rgba *col, const UINT8* src) { + int n, bitI, byI, av; + decode_bc1_color(col, src); + for (n = 0; n < 16; n++) { + bitI = n * 4; + byI = bitI >> 3; + av = 0xf & (src[byI] >> (bitI & 7)); + av = (av << 4) | av; + col[n].a = av; + } +} + +static void decode_bc3_block(rgba *col, const UINT8* src) { + decode_bc1_color(col, src + 8); + decode_bc3_alpha((char *)col, src, sizeof(col[0]), 3); +} + +static void decode_bc4_block(lum *col, const UINT8* src) { + decode_bc3_alpha((char *)col, src, sizeof(col[0]), 0); +} + +static void decode_bc5_block(rgba *col, const UINT8* src) { + decode_bc3_alpha((char *)col, src, sizeof(col[0]), 0); + decode_bc3_alpha((char *)col, src + 8, sizeof(col[0]), 1); +} + +/* BC6 and BC7 are described here: + https://www.opengl.org/registry/specs/ARB/texture_compression_bptc.txt */ + +static UINT8 get_bit(const UINT8* src, int bit) { + int by = bit >> 3; + bit &= 7; + return (src[by] >> bit) & 1; +} + +static UINT8 get_bits(const UINT8* src, int bit, int count) { + UINT8 v; + int x; + int by = bit >> 3; + bit &= 7; + if (!count) { + return 0; + } + if (bit + count <= 8) { + v = (src[by] >> bit) & ((1 << count) - 1); + } else { + x = src[by] | (src[by+1] << 8); + v = (x >> bit) & ((1 << count) - 1); + } + return v; +} + +/* BC7 */ +typedef struct { + char ns; + char pb; + char rb; + char isb; + char cb; + char ab; + char epb; + char spb; + char ib; + char ib2; +} bc7_mode_info; + +static const bc7_mode_info bc7_modes[] = { + {3, 4, 0, 0, 4, 0, 1, 0, 3, 0}, + {2, 6, 0, 0, 6, 0, 0, 1, 3, 0}, + {3, 6, 0, 0, 5, 0, 0, 0, 2, 0}, + {2, 6, 0, 0, 7, 0, 1, 0, 2, 0}, + {1, 0, 2, 1, 5, 6, 0, 0, 2, 3}, + {1, 0, 2, 0, 7, 8, 0, 0, 2, 2}, + {1, 0, 0, 0, 7, 7, 1, 0, 4, 0}, + {2, 6, 0, 0, 5, 5, 1, 0, 2, 0} +}; + +/* Subset indices: + Table.P2, 1 bit per index */ +static const UINT16 bc7_si2[] = { + 0xcccc, 0x8888, 0xeeee, 0xecc8, 0xc880, 0xfeec, 0xfec8, 0xec80, + 0xc800, 0xffec, 0xfe80, 0xe800, 0xffe8, 0xff00, 0xfff0, 0xf000, + 0xf710, 0x008e, 0x7100, 0x08ce, 0x008c, 0x7310, 0x3100, 0x8cce, + 0x088c, 0x3110, 0x6666, 0x366c, 0x17e8, 0x0ff0, 0x718e, 0x399c, + 0xaaaa, 0xf0f0, 0x5a5a, 0x33cc, 0x3c3c, 0x55aa, 0x9696, 0xa55a, + 0x73ce, 0x13c8, 0x324c, 0x3bdc, 0x6996, 0xc33c, 0x9966, 0x0660, + 0x0272, 0x04e4, 0x4e40, 0x2720, 0xc936, 0x936c, 0x39c6, 0x639c, + 0x9336, 0x9cc6, 0x817e, 0xe718, 0xccf0, 0x0fcc, 0x7744, 0xee22}; + +/* Table.P3, 2 bits per index */ +static const UINT32 bc7_si3[] = { + 0xaa685050, 0x6a5a5040, 0x5a5a4200, 0x5450a0a8, + 0xa5a50000, 0xa0a05050, 0x5555a0a0, 0x5a5a5050, + 0xaa550000, 0xaa555500, 0xaaaa5500, 0x90909090, + 0x94949494, 0xa4a4a4a4, 0xa9a59450, 0x2a0a4250, + 0xa5945040, 0x0a425054, 0xa5a5a500, 0x55a0a0a0, + 0xa8a85454, 0x6a6a4040, 0xa4a45000, 0x1a1a0500, + 0x0050a4a4, 0xaaa59090, 0x14696914, 0x69691400, + 0xa08585a0, 0xaa821414, 0x50a4a450, 0x6a5a0200, + 0xa9a58000, 0x5090a0a8, 0xa8a09050, 0x24242424, + 0x00aa5500, 0x24924924, 0x24499224, 0x50a50a50, + 0x500aa550, 0xaaaa4444, 0x66660000, 0xa5a0a5a0, + 0x50a050a0, 0x69286928, 0x44aaaa44, 0x66666600, + 0xaa444444, 0x54a854a8, 0x95809580, 0x96969600, + 0xa85454a8, 0x80959580, 0xaa141414, 0x96960000, + 0xaaaa1414, 0xa05050a0, 0xa0a5a5a0, 0x96000000, + 0x40804080, 0xa9a8a9a8, 0xaaaaaa44, 0x2a4a5254}; + +/* Anchor indices: + Table.A2 */ +static const char bc7_ai0[] = { + 15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15, + 15, 2, 8, 2, 2, 8, 8,15, + 2, 8, 2, 2, 8, 8, 2, 2, + 15,15, 6, 8, 2, 8,15,15, + 2, 8, 2, 2, 2,15,15, 6, + 6, 2, 6, 8,15,15, 2, 2, + 15,15,15,15,15, 2, 2,15}; + +/* Table.A3a */ +static const char bc7_ai1[] = { + 3, 3,15,15, 8, 3,15,15, + 8, 8, 6, 6, 6, 5, 3, 3, + 3, 3, 8,15, 3, 3, 6,10, + 5, 8, 8, 6, 8, 5,15,15, + 8,15, 3, 5, 6,10, 8,15, + 15, 3,15, 5,15,15,15,15, + 3,15, 5, 5, 5, 8, 5,10, + 5,10, 8,13,15,12, 3, 3}; + +/* Table.A3b */ +static const char bc7_ai2[] = { + 15, 8, 8, 3,15,15, 3, 8, + 15,15,15,15,15,15,15, 8, + 15, 8,15, 3,15, 8,15, 8, + 3,15, 6,10,15,15,10, 8, + 15, 3,15,10,10, 8, 9,10, + 6,15, 8,15, 3, 6, 6, 8, + 15, 3,15,15,15,15,15,15, + 15,15,15,15, 3,15,15, 8}; + +/* Interpolation weights */ +static const char bc7_weights2[] = {0, 21, 43, 64}; +static const char bc7_weights3[] = {0, 9, 18, 27, 37, 46, 55, 64}; +static const char bc7_weights4[] = { + 0, 4, 9, 13, 17, 21, 26, 30, 34, 38, 43, 47, 51, 55, 60, 64}; + +static const char *bc7_get_weights(int n) { + if (n == 2) { + return bc7_weights2; + } + if (n == 3) { + return bc7_weights3; + } + return bc7_weights4; +} + +static int bc7_get_subset(int ns, int partition, int n) { + if (ns == 2) { + return 1 & (bc7_si2[partition] >> n); + } + if (ns == 3) { + return 3 & (bc7_si3[partition] >> (2 * n)); + } + return 0; +} + +static UINT8 expand_quantized(UINT8 v, int bits) { + v = v << (8 - bits); + return v | (v >> bits); +} + +static void bc7_lerp(rgba *dst, const rgba *e, int s0, int s1) { + int t0 = 64 - s0; + int t1 = 64 - s1; + dst->r = (UINT8)((t0 * e[0].r + s0 * e[1].r) >> 6); + dst->g = (UINT8)((t0 * e[0].g + s0 * e[1].g) >> 6); + dst->b = (UINT8)((t0 * e[0].b + s0 * e[1].b) >> 6); + dst->a = (UINT8)((t1 * e[0].a + s1 * e[1].a) >> 6); +} + +static void decode_bc7_block(rgba *col, const UINT8* src) { + rgba endpoints[6]; + int bit = 0, cibit, aibit; + int mode = src[0]; + int i, j; + int numep, cb, ab, ib, ib2, i0, i1, s; + UINT8 index_sel, partition, rotation, val; + const char *cw, *aw; + const bc7_mode_info *info; + + /* mode is the number of unset bits before the first set bit: */ + if (!mode) { + /* degenerate case when no bits set */ + for (i = 0; i < 16; i++) { + col[i].r = col[i].g = col[i].b = 0; + col[i].a = 255; + } + return; + } + while (!(mode & (1 << bit++))) ; + mode = bit - 1; + info = &bc7_modes[mode]; + /* color selection bits: {subset}{endpoint} */ + cb = info->cb; + ab = info->ab; + cw = bc7_get_weights(info->ib); + aw = bc7_get_weights(ab ? info->ib2 : info->ib); + +#define LOAD(DST, N) \ + DST = get_bits(src, bit, N); \ + bit += N; + LOAD(partition, info->pb); + LOAD(rotation, info->rb); + LOAD(index_sel, info->isb); + numep = info->ns << 1; + + /* red */ + for (i = 0; i < numep; i++) { + LOAD(val, cb); + endpoints[i].r = val; + } + + /* green */ + for (i = 0; i < numep; i++) { + LOAD(val, cb); + endpoints[i].g = val; + } + + /* blue */ + for (i = 0; i < numep; i++) { + LOAD(val, cb); + endpoints[i].b = val; + } + + /* alpha */ + for (i = 0; i < numep; i++) { + if (ab) { + LOAD(val, ab); + } else { + val = 255; + } + endpoints[i].a = val; + } + + /* p-bits */ +#define ASSIGN_P(x) x = (x << 1) | val + if (info->epb) { + /* per endpoint */ + for (i = 0; i < numep; i++) { + LOAD(val, 1); + cb++; + ASSIGN_P(endpoints[i].r); + ASSIGN_P(endpoints[i].g); + ASSIGN_P(endpoints[i].b); + if (ab) { + ab++; + ASSIGN_P(endpoints[i].a); + } + } + } + if (info->spb) { + /* per subset */ + for (i = 0; i < numep; i+=2) { + LOAD(val, 1); + cb++; + for (j = 0; j < 2; j++) { + ASSIGN_P(endpoints[i+j].r); + ASSIGN_P(endpoints[i+j].g); + ASSIGN_P(endpoints[i+j].b); + if (ab) { + ab++; + ASSIGN_P(endpoints[i+j].a); + } + } + } + } +#undef ASSIGN_P +#define EXPAND(x, b) x = expand_quantized(x, b) + for (i = 0; i < numep; i++) { + EXPAND(endpoints[i].r, cb); + EXPAND(endpoints[i].g, cb); + EXPAND(endpoints[i].b, cb); + if (ab) { + EXPAND(endpoints[i].a, ab); + } + } +#undef EXPAND +#undef LOAD + cibit = bit; + aibit = cibit + 16 * info->ib - info->ns; + for (i = 0; i < 16; i++) { + s = bc7_get_subset(info->ns, partition, i) << 1; + ib = info->ib; + if (i == 0) { + ib--; + } else if (info->ns == 2) { + if (i == bc7_ai0[partition]) { + ib--; + } + } else if (info->ns == 3) { + if (i == bc7_ai1[partition]) { + ib--; + } else if (i == bc7_ai2[partition]) { + ib--; + } + } + i0 = get_bits(src, cibit, ib); + cibit += ib; + + if (ab) { + ib2 = info->ib2; + if (ib2 && i == 0) { + ib2--; + } + i1 = get_bits(src, aibit, ib2); + aibit += ib2; + if (index_sel) { + bc7_lerp(&col[i], &endpoints[s], aw[i1], cw[i0]); + } else { + bc7_lerp(&col[i], &endpoints[s], cw[i0], aw[i1]); + } + } else { + bc7_lerp(&col[i], &endpoints[s], cw[i0], cw[i0]); + } +#define ROTATE(x, y) \ + val = x; \ + x = y; \ + y = val + if (rotation == 1) { + ROTATE(col[i].r, col[i].a); + } else if (rotation == 2) { + ROTATE(col[i].g, col[i].a); + } else if (rotation == 3) { + ROTATE(col[i].b, col[i].a); + } +#undef ROTATE + } +} + +/* BC6 */ +typedef struct { + char ns; /* number of subsets (also called regions) */ + char tr; /* whether endpoints are delta-compressed */ + char pb; /* partition bits */ + char epb; /* endpoint bits */ + char rb; /* red bits (delta) */ + char gb; /* green bits (delta) */ + char bb; /* blue bits (delta) */ +} bc6_mode_info; + +static const bc6_mode_info bc6_modes[] = { + // 00 + {2, 1, 5, 10, 5, 5, 5}, + // 01 + {2, 1, 5, 7, 6, 6, 6}, + // 10 + {2, 1, 5, 11, 5, 4, 4}, + {2, 1, 5, 11, 4, 5, 4}, + {2, 1, 5, 11, 4, 4, 5}, + {2, 1, 5, 9, 5, 5, 5}, + {2, 1, 5, 8, 6, 5, 5}, + {2, 1, 5, 8, 5, 6, 5}, + {2, 1, 5, 8, 5, 5, 6}, + {2, 0, 5, 6, 6, 6, 6}, + // 11 + {1, 0, 0, 10, 10, 10, 10}, + {1, 1, 0, 11, 9, 9, 9}, + {1, 1, 0, 12, 8, 8, 8}, + {1, 1, 0, 16, 4, 4, 4} +}; + +/* Table.F, encoded as a sequence of bit indices */ +static const UINT8 bc6_bit_packings[][75] = { + {116, 132, 176, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 48, 49, 50, 51, 52, + 164, 112, 113, 114, 115, 64, 65, 66, 67, 68, 172, 160, 161, 162, 163, 80, + 81, 82, 83, 84, 173, 128, 129, 130, 131, 96, 97, 98, 99, 100, 174, 144, + 145, 146, 147, 148, 175}, + {117, 164, 165, 0, 1, 2, 3, 4, 5, 6, 172, 173, 132, 16, 17, 18, 19, 20, 21, + 22, 133, 174, 116, 32, 33, 34, 35, 36, 37, 38, 175, 177, 176, 48, 49, 50, + 51, 52, 53, 112, 113, 114, 115, 64, 65, 66, 67, 68, 69, 160, 161, 162, 163, + 80, 81, 82, 83, 84, 85, 128, 129, 130, 131, 96, 97, 98, 99, 100, 101, 144, + 145, 146, 147, 148, 149}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 48, 49, 50, 51, 52, 10, 112, 113, 114, + 115, 64, 65, 66, 67, 26, 172, 160, 161, 162, 163, 80, 81, 82, 83, 42, 173, + 128, 129, 130, 131, 96, 97, 98, 99, 100, 174, 144, 145, 146, 147, 148, + 175}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 48, 49, 50, 51, 10, 164, 112, 113, 114, + 115, 64, 65, 66, 67, 68, 26, 160, 161, 162, 163, 80, 81, 82, 83, 42, 173, + 128, 129, 130, 131, 96, 97, 98, 99, 172, 174, 144, 145, 146, 147, 116, + 175}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 48, 49, 50, 51, 10, 132, 112, 113, 114, + 115, 64, 65, 66, 67, 26, 172, 160, 161, 162, 163, 80, 81, 82, 83, 84, 42, + 128, 129, 130, 131, 96, 97, 98, 99, 173, 174, 144, 145, 146, 147, 176, + 175}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 132, 16, 17, 18, 19, 20, 21, 22, 23, 24, 116, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 176, 48, 49, 50, 51, 52, 164, 112, 113, + 114, 115, 64, 65, 66, 67, 68, 172, 160, 161, 162, 163, 80, 81, 82, 83, 84, + 173, 128, 129, 130, 131, 96, 97, 98, 99, 100, 174, 144, 145, 146, 147, 148, + 175}, + {0, 1, 2, 3, 4, 5, 6, 7, 164, 132, 16, 17, 18, 19, 20, 21, 22, 23, 174, 116, + 32, 33, 34, 35, 36, 37, 38, 39, 175, 176, 48, 49, 50, 51, 52, 53, 112, 113, + 114, 115, 64, 65, 66, 67, 68, 172, 160, 161, 162, 163, 80, 81, 82, 83, 84, + 173, 128, 129, 130, 131, 96, 97, 98, 99, 100, 101, 144, 145, 146, 147, 148, + 149}, + {0, 1, 2, 3, 4, 5, 6, 7, 172, 132, 16, 17, 18, 19, 20, 21, 22, 23, 117, 116, + 32, 33, 34, 35, 36, 37, 38, 39, 165, 176, 48, 49, 50, 51, 52, 164, 112, + 113, 114, 115, 64, 65, 66, 67, 68, 69, 160, 161, 162, 163, 80, 81, 82, 83, + 84, 173, 128, 129, 130, 131, 96, 97, 98, 99, 100, 174, 144, 145, 146, 147, + 148, 175}, + {0, 1, 2, 3, 4, 5, 6, 7, 173, 132, 16, 17, 18, 19, 20, 21, 22, 23, 133, 116, + 32, 33, 34, 35, 36, 37, 38, 39, 177, 176, 48, 49, 50, 51, 52, 164, 112, + 113, 114, 115, 64, 65, 66, 67, 68, 172, 160, 161, 162, 163, 80, 81, 82, 83, + 84, 85, 128, 129, 130, 131, 96, 97, 98, 99, 100, 174, 144, 145, 146, 147, + 148, 175}, + {0, 1, 2, 3, 4, 5, 164, 172, 173, 132, 16, 17, 18, 19, 20, 21, 117, 133, + 174, 116, 32, 33, 34, 35, 36, 37, 165, 175, 177, 176, 48, 49, 50, 51, 52, + 53, 112, 113, 114, 115, 64, 65, 66, 67, 68, 69, 160, 161, 162, 163, 80, 81, + 82, 83, 84, 85, 128, 129, 130, 131, 96, 97, 98, 99, 100, 101, 144, 145, + 146, 147, 148, 149}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 48, 49, 50, 51, 52, 53, 54, 55, 56, 10, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 26, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 42}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 48, 49, 50, 51, 52, 53, 54, 55, 11, 10, + 64, 65, 66, 67, 68, 69, 70, 71, 27, 26, 80, 81, 82, 83, 84, 85, 86, 87, 43, + 42}, + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 48, 49, 50, 51, 15, 14, 13, 12, 11, 10, + 64, 65, 66, 67, 31, 30, 29, 28, 27, 26, 80, 81, 82, 83, 47, 46, 45, 44, 43, + 42}}; + +static void bc6_sign_extend(UINT16 *v, int prec) { + int x = *v; + if (x & (1 << (prec - 1))) { + x |= -1 << prec; + } + *v = (UINT16)x; +} + +static int bc6_unquantize(UINT16 v, int prec, int sign) { + int s = 0; + int x; + if (!sign) { + x = v; + if (prec >= 15) return x; + if (x == 0) return 0; + if (x == ((1 << prec) - 1)) { + return 0xffff; + } + return ((x << 15) + 0x4000) >> (prec - 1); + } else { + x = (INT16)v; + if (prec >= 16) return x; + if (x < 0) { + s = 1; + x = -x; + } + + if (x != 0) { + if (x >= ((1 << (prec - 1)) - 1)) { + x = 0x7fff; + } else { + x = ((x << 15) + 0x4000) >> (prec - 1); + } + } + + if (s) { + return -x; + } + return x; + } +} + +static float half_to_float(UINT16 h) { + /* https://gist.github.com/rygorous/2144712 */ + union { + UINT32 u; + float f; + } o, m; + m.u = 0x77800000; + o.u = (h & 0x7fff) << 13; + o.f *= m.f; + m.u = 0x47800000; + if (o.f >= m.f) { + o.u |= 255 << 23; + } + o.u |= (h & 0x8000) << 16; + return o.f; +} + +static float bc6_finalize(int v, int sign) { + if (sign) { + if (v < 0) { + v = ((-v) * 31) / 32; + return half_to_float((UINT16)(0x8000 | v)); + } else { + return half_to_float((UINT16)((v * 31) / 32)); + } + } else { + return half_to_float((UINT16)((v * 31) / 64)); + } +} + +static void bc6_lerp(rgb32f *col, int *e0, int *e1, int s, int sign) { + int r, g, b; + int t = 64 - s; + r = (e0[0] * t + e1[0] * s) >> 6; + g = (e0[1] * t + e1[1] * s) >> 6; + b = (e0[2] * t + e1[2] * s) >> 6; + col->r = bc6_finalize(r, sign); + col->g = bc6_finalize(g, sign); + col->b = bc6_finalize(b, sign); +} + +static void decode_bc6_block(rgb32f *col, const UINT8* src, int sign) { + UINT16 endpoints[12]; /* storage for r0, g0, b0, r1, ... */ + int ueps[12]; + int i, i0, ib2, di, dw, mask, numep, s; + UINT8 partition; + const bc6_mode_info *info; + const char *cw; + int bit = 5; + int epbits = 75; + int ib = 3; + int mode = src[0] & 0x1f; + if ((mode & 3) == 0 || (mode & 3) == 1) { + mode &= 3; + bit = 2; + } else if ((mode & 3) == 2) { + mode = 2 + (mode >> 2); + epbits = 72; + } else { + mode = 10 + (mode >> 2); + epbits = 60; + ib = 4; + } + if (mode >= 14) { + /* invalid block */ + memset(col, 0, 16 * sizeof(col[0])); + return; + } + info = &bc6_modes[mode]; + cw = bc7_get_weights(ib); + numep = info->ns == 2 ? 12 : 6; + for (i = 0; i < 12; i++) { + endpoints[i] = 0; + } + for (i = 0; i < epbits; i++) { + di = bc6_bit_packings[mode][i]; + dw = di >> 4; + di &= 15; + endpoints[dw] |= (UINT16)get_bit(src, bit + i) << di; + } + bit += epbits; + partition = get_bits(src, bit, info->pb); + bit += info->pb; + mask = (1 << info->epb) - 1; + if (sign) { /* sign-extend e0 if signed */ + bc6_sign_extend(&endpoints[0], info->epb); + bc6_sign_extend(&endpoints[1], info->epb); + bc6_sign_extend(&endpoints[2], info->epb); + } + if (sign || info->tr) { /* sign-extend e1,2,3 if signed or deltas */ + for (i = 3; i < numep; i += 3) { + bc6_sign_extend(&endpoints[i+0], info->rb); + bc6_sign_extend(&endpoints[i+1], info->gb); + bc6_sign_extend(&endpoints[i+2], info->bb); + } + } + if (info->tr) { /* apply deltas */ + for (i = 3; i < numep; i++) { + endpoints[i] = (endpoints[i] + endpoints[0]) & mask; + } + if (sign) { + for (i = 3; i < numep; i += 3) { + bc6_sign_extend(&endpoints[i+0], info->rb); + bc6_sign_extend(&endpoints[i+1], info->gb); + bc6_sign_extend(&endpoints[i+2], info->bb); + } + } + } + for (i = 0; i < numep; i++) { + ueps[i] = bc6_unquantize(endpoints[i], info->epb, sign); + } + for (i = 0; i < 16; i++) { + s = bc7_get_subset(info->ns, partition, i) * 6; + ib2 = ib; + if (i == 0) { + ib2--; + } else if (info->ns == 2) { + if (i == bc7_ai0[partition]) { + ib2--; + } + } + i0 = get_bits(src, bit, ib2); + bit += ib2; + + bc6_lerp(&col[i], &ueps[s], &ueps[s+3], cw[i0], sign); + } +} + +static void put_block(Imaging im, ImagingCodecState state, const char *col, int sz, int C) { + int width = state->xsize; + int height = state->ysize; + int xmax = width + state->xoff; + int ymax = height + state->yoff; + int j, i, y, x; + char *dst; + for (j = 0; j < 4; j++) { + y = state->y + j; + if (C) { + if (y >= height) { + continue; + } + if (state->ystep < 0) { + y = state->yoff + ymax - y - 1; + } + dst = im->image[y]; + for (i = 0; i < 4; i++) { + x = state->x + i; + if (x >= width) { + continue; + } + memcpy(dst + sz*x, col + sz*(j*4 + i), sz); + } + } else { + if (state->ystep < 0) { + y = state->yoff + ymax - y - 1; + } + x = state->x; + dst = im->image[y] + sz*x; + memcpy(dst, col + sz*(j*4), 4 * sz); + } + } + state->x += 4; + if (state->x >= xmax) { + state->y += 4; + state->x = state->xoff; + } +} + +static int decode_bcn(Imaging im, ImagingCodecState state, const UINT8* src, int bytes, int N, int C) { + int ymax = state->ysize + state->yoff; + const UINT8 *ptr = src; + switch (N) { +#define DECODE_LOOP(NN, SZ, TY, ...) \ + case NN: \ + while (bytes >= SZ) { \ + TY col[16]; \ + decode_bc##NN##_block(col, ptr); \ + put_block(im, state, (const char *)col, sizeof(col[0]), C); \ + ptr += SZ; \ + bytes -= SZ; \ + if (state->y >= ymax) return -1; \ + } \ + break + DECODE_LOOP(1, 8, rgba); + DECODE_LOOP(2, 16, rgba); + DECODE_LOOP(3, 16, rgba); + DECODE_LOOP(4, 8, lum); + DECODE_LOOP(5, 16, rgba); + case 6: + while (bytes >= 16) { + rgb32f col[16]; + decode_bc6_block(col, ptr, (state->state >> 4) & 1); + put_block(im, state, (const char *)col, sizeof(col[0]), C); + ptr += 16; + bytes -= 16; + if (state->y >= ymax) return -1; \ + } + break; + DECODE_LOOP(7, 16, rgba); +#undef DECODE_LOOP + } + return (int)(ptr - src); +} + +int ImagingBcnDecode(Imaging im, ImagingCodecState state, UINT8* buf, int bytes) { + int N = state->state & 0xf; + int width = state->xsize; + int height = state->ysize; + if ((width & 3) | (height & 3)) { + return decode_bcn(im, state, buf, bytes, N, 1); + } else { + return decode_bcn(im, state, buf, bytes, N, 0); + } +} diff --git a/libImaging/Imaging.h b/libImaging/Imaging.h index bda10e64d..2030821f2 100644 --- a/libImaging/Imaging.h +++ b/libImaging/Imaging.h @@ -388,6 +388,8 @@ typedef struct ImagingCodecStateInstance *ImagingCodecState; typedef int (*ImagingCodec)(Imaging im, ImagingCodecState state, UINT8* buffer, int bytes); +extern int ImagingBcnDecode(Imaging im, ImagingCodecState state, + UINT8* buffer, int bytes); extern int ImagingBitDecode(Imaging im, ImagingCodecState state, UINT8* buffer, int bytes); extern int ImagingEpsEncode(Imaging im, ImagingCodecState state, diff --git a/setup.py b/setup.py index 5e9f27c36..6075d4704 100644 --- a/setup.py +++ b/setup.py @@ -26,17 +26,17 @@ import mp_compile _IMAGING = ("decode", "encode", "map", "display", "outline", "path") _LIB_IMAGING = ( - "Access", "AlphaComposite", "Resample", "Bands", "BitDecode", "Blend", - "Chops", "Convert", "ConvertYCbCr", "Copy", "Crc32", "Crop", "Dib", "Draw", - "Effects", "EpsEncode", "File", "Fill", "Filter", "FliDecode", "Geometry", - "GetBBox", "GifDecode", "GifEncode", "HexDecode", "Histo", "JpegDecode", - "JpegEncode", "LzwDecode", "Matrix", "ModeFilter", "MspDecode", "Negative", - "Offset", "Pack", "PackDecode", "Palette", "Paste", "Quant", "QuantOctree", - "QuantHash", "QuantHeap", "PcdDecode", "PcxDecode", "PcxEncode", "Point", - "RankFilter", "RawDecode", "RawEncode", "Storage", "SunRleDecode", - "TgaRleDecode", "Unpack", "UnpackYCC", "UnsharpMask", "XbmDecode", - "XbmEncode", "ZipDecode", "ZipEncode", "TiffDecode", "Jpeg2KDecode", - "Jpeg2KEncode", "BoxBlur", "QuantPngQuant", "codec_fd") + "Access", "AlphaComposite", "Resample", "Bands", "BcnDecode", "BitDecode", + "Blend", "Chops", "Convert", "ConvertYCbCr", "Copy", "Crc32", "Crop", "Dib", + "Draw", "Effects", "EpsEncode", "File", "Fill", "Filter", "FliDecode", + "Geometry", "GetBBox", "GifDecode", "GifEncode", "HexDecode", "Histo", + "JpegDecode", "JpegEncode", "LzwDecode", "Matrix", "ModeFilter", + "MspDecode", "Negative", "Offset", "Pack", "PackDecode", "Palette", "Paste", + "Quant", "QuantOctree", "QuantHash", "QuantHeap", "PcdDecode", "PcxDecode", + "PcxEncode", "Point", "RankFilter", "RawDecode", "RawEncode", "Storage", + "SunRleDecode", "TgaRleDecode", "Unpack", "UnpackYCC", "UnsharpMask", + "XbmDecode", "XbmEncode", "ZipDecode", "ZipEncode", "TiffDecode", + "Jpeg2KDecode", "Jpeg2KEncode", "BoxBlur", "QuantPngQuant", "codec_fd") DEBUG = False From b46804ea270152a2eea0e3b1b0a0ce21498cf2a0 Mon Sep 17 00:00:00 2001 From: Robert Nix Date: Thu, 25 Aug 2016 20:12:44 -0500 Subject: [PATCH 2/3] Add support for DXT3 to DdsImagePlugin --- PIL/DdsImagePlugin.py | 3 +++ ...dxt3-argb-8bbp-explicitalpha_MipMaps-1.dds | Bin 65664 -> 65664 bytes ...dxt3-argb-8bbp-explicitalpha_MipMaps-1.png | Bin 0 -> 37146 bytes Tests/test_file_dds.py | 17 +++++++++++++---- libImaging/BcnDecode.c | 2 +- 5 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 Tests/images/dxt3-argb-8bbp-explicitalpha_MipMaps-1.png diff --git a/PIL/DdsImagePlugin.py b/PIL/DdsImagePlugin.py index bbf833816..b375f53f7 100644 --- a/PIL/DdsImagePlugin.py +++ b/PIL/DdsImagePlugin.py @@ -122,6 +122,9 @@ class DdsImageFile(ImageFile.ImageFile): if fourcc == b"DXT1": self.pixel_format = "DXT1" n = 1 + elif fourcc == b"DXT3": + self.pixel_format = "DXT3" + n = 2 elif fourcc == b"DXT5": self.pixel_format = "DXT5" n = 3 diff --git a/Tests/images/dxt3-argb-8bbp-explicitalpha_MipMaps-1.dds b/Tests/images/dxt3-argb-8bbp-explicitalpha_MipMaps-1.dds index 8ec3484fa5d8571c45f4bd072eedc8517c00ea1c..69c657ffbb895fd0716c768ec8718edda89e3b69 100755 GIT binary patch delta 4831 zcmaJ_0gMz^8QwR$l%dix=pke8P6jpf!qIlBv8-haQ%cN6FLi5UvMC%4l{VYST4J_A8fUY))p`k5ApD(5l>q|4z$Es~d8GiAPLk_q{c)R1PkP*=*f z)TF^^aU_0DNtXycCzUhXr4I@1N#`>6N+$^&N%zPX$lpn{Ps=m}FZDC3+@ASU1nxfhVUaFM8Hg?Yo0V07j;)TGeMQy)ytKFQh%YfboR zFh4IKsBv9hO$t8~KW&-5NGWr#lZl)ZPwUrb3S^65`4QuHDQ`{B=-fRJIXOXHVZbgQK z|E)@Tt}n{VqSVTwJb~)GPsY`?Ek@OOi}UgV$>styH4AD?6{)e+j`V%$HS~yj6I2|Q}cKVNDx=F3wPao_wwR5Y z%tnj-Tmb93FRVtqU~QPb@)c3;MwIpLxDmOHpq|z@qDBN8p%K*BG%U}T-b_W~F4)uo zDm60;2RV_aj38enhB$a{@S&E!>IDEy#(&mImZhc_0gX zg>WJ62KxcTXFmvh%zLnd2o9&jDOyX2!YBcS^H48wIrYFvF?ored>rsShJqDPx{umhJY(>8KTe;|uwj$A*1)R*ZrqQKkK3)~m zj|GpbNU5?7cG1GNUa;2Nmgkvm+dlgl<04^0+wt*fJ^=x6dJ&2dF2+(Pc=46qhOmzr zPgbQU+Hdw9fLE+?@0F7~Q${xFPw^wq%1@mmkV)(564>rPjbvyQB*P3B@M)?7EoIt{ zSku90keS{y2uXPsAr+qOg~WN`Z$#ph=i=i$^xO=I%H01vf^0qykWRG$Ak8X(I4{J5 zt?PvmaRoa&Q7DX^5DI4R#J#M47Z_*|E<_jfepS9kn#+%Ip}%-#zeoF#-$8$@B)2Ob zvE^N8WCXiF6VtzkP82nF^K|y@M%BB!kv4yKE&WRBJG9Skzp|1M8!7SaSjmb3@PzsU zAb@HPm_jXQI&%LJiui4c_`Pr;yixWbZ}dG^@n&cbQsnK46}9b+z1grAdE@Ox(v%mG zH1kDtij6_;)A~WAvoeTuHV3&+>ucQ*vt}(OpT7^;(cA}|uYMoTB5OZFtncTDUmXHO zRv#*%Yf*a%&NVf|g&1URxDdAaFBPL6u5uBQ>sE=FG*o{%M3Qca?nGw2+)L!S(lzl_ z@`G%&yYq+VquZ3V{b*Ezi2ASaU$+kbgnzOdABI|4<;TNlg6RiABC`&b=JD(K^iNSo z3a^1X%zh2o;DFKP3afa{zj;*SCLSs-BES(HTQJroY(J?>fS zU+*9SY$5-vMk)cP)?{AP%bJro1^WAt0%pBmC8B)iTu~MX<~cy1^>C4Vt$y`9ZlN{> zXw;nIMSnDPMom0j7(dCH1|J}nLV#G@aFMXEAiy-rg_;;YtbQRhN8tG%B0S?F!n4Cg zf=B&}Fzu-Jj|uUy#JPkjFfJ8=$Gz11e=OFgYXY5l(^zfrPk?0lzb1*Wm1#2#G#veZ YqZhURpkC1WJi&y#0F2&9wTCN($o5G-t7DT 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 fhH-&GS8N~*> 3; From 2be760ca79dc7a9989f138b113c9c86ab060344f Mon Sep 17 00:00:00 2001 From: Robert Nix Date: Fri, 26 Aug 2016 02:26:03 -0500 Subject: [PATCH 3/3] Add support for BC7 to DdsImagePlugin --- PIL/DdsImagePlugin.py | 26 ++++++++++++++++++++++- Tests/images/bc7-argb-8bpp_MipMaps-1.dds | Bin 0 -> 65684 bytes Tests/images/bc7-argb-8bpp_MipMaps-1.png | Bin 0 -> 125195 bytes Tests/test_file_dds.py | 15 +++++++++++++ libImaging/BcnDecode.c | 24 ++++++++++++--------- 5 files changed, 54 insertions(+), 11 deletions(-) create mode 100644 Tests/images/bc7-argb-8bpp_MipMaps-1.dds create mode 100644 Tests/images/bc7-argb-8bpp_MipMaps-1.png diff --git a/PIL/DdsImagePlugin.py b/PIL/DdsImagePlugin.py index b375f53f7..b6228c2ad 100644 --- a/PIL/DdsImagePlugin.py +++ b/PIL/DdsImagePlugin.py @@ -93,6 +93,13 @@ DXT3_FOURCC = 0x33545844 DXT5_FOURCC = 0x35545844 +# dxgiformat.h + +DXGI_FORMAT_BC7_TYPELESS = 97 +DXGI_FORMAT_BC7_UNORM = 98 +DXGI_FORMAT_BC7_UNORM_SRGB = 99 + + class DdsImageFile(ImageFile.ImageFile): format = "DDS" format_description = "DirectDraw Surface" @@ -119,6 +126,8 @@ class DdsImageFile(ImageFile.ImageFile): bitcount, rmask, gmask, bmask, amask = struct.unpack("<5I", header.read(20)) + data_start = header_size + 4 + n = 0 if fourcc == b"DXT1": self.pixel_format = "DXT1" n = 1 @@ -128,12 +137,27 @@ class DdsImageFile(ImageFile.ImageFile): elif fourcc == b"DXT5": self.pixel_format = "DXT5" n = 3 + elif fourcc == b"DX10": + data_start += 20 + # ignoring flags which pertain to volume textures and cubemaps + dxt10 = BytesIO(self.fp.read(20)) + dxgi_format, dimension = struct.unpack("eZ`VJe%5L7`Vs^`Q@bDs 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

1AU*Lo5$}M{whIoy{IYLj8A3VbmFkL za>FFhL5WiM--p=Z>k*VuMJ}g8J_Q2}S4Uj$cpL@-$>+nwJJPbLtR%~@x|w{Qgkv>2`mFgI9Tu|FC8cFXHL$sZs3TL68^DPClss?q@05iy8sRZ z>cyVh*)j$QPn6(BV<@>%zt4~ZAfDjexrD*SUV4pk5d_^)S@Re#`EQMndQlui-Zx% z>s!&#SUQ=%LJGcajp*P;euhlag5ZwZug9jQ*NVGSr(v&{sX{8B zZ~2_*-A3jIthtCSqo5mV=cY#jDc(c{`+>3oJl<(9ZUspUpyUcERV2Y&BoSmCf;}e*E&346cHVc^OxnaMtTYeAx4bZ0n_L zT91J8$MxR#aTi;o?JkSGe?wcIJ)iVR?SQwOf1m~Rl;H$(&qfmxO(Crs4*tpUCxi$G z2;cxUk>jGXc^`;e!Ln)nkiLJQ>yOzDcYAv`YU`hYJb~U&64M7GSB5iL=Rv(-9T?kVia`$DhV7`d-B0e0gs=UR!{l2w8jFQXlMRjj)dlO2)^5ty&ZG3e z_fV?oCmq8j{Bm{w%_C9wB6wW}A0FqgU-#|Ge{7NC zpb2rWe>vhZ)9FIk?@Tzp%(VU5_AA`t?f@qQ ze0fGguN?rWm8l>{Xc~@qdv{a5|NI2*{oa;h(5}kyYd6l-?lC*B~GHx6h zqZZ^4-Rm`@^A48%)VBYq=+?v!8>T%QChH!zNAGpW#fUomB`Mfg$Y%}lYNKHNNz-=v zzOb>XAfH7p;$!$l4HEm}WVi8nIN#Mgg5&sh^QPn@u%f}pL?Bszzwy}eL!5xZ{6a1B ze)HR)qPH%ZdMJKW%|Y;O1E@c)qnZ=EMvu7(B&50w6|Ff(pOOBx!t7$!Lwk8X46?g- z0il>Frk|*K8TXtBFu!*DG^NxHH(Gq#{Dtex2?iM1T7 z{u_=dpK4f!?Vlh!rW)^~BZXOI`IT?>*%Ai*RLqX-D-gq4H%pQPqj@(6+zn>-r~aO-UFl>_^44xA?@KM9O?W-N$nFpj{|I_ZE7wfP)NHqo34m5ZCJ8$Wk_Ym%zO0@c z1=<(OZC95H$+Wp#e!>EP?WpCEMJ*<-LbcKY(H|RCqxD2co0~FT_pU0pmWV8ADu@cj zn8q`-o56{W*eR~ZX(pMR6_M$htj%9p%lozB2iQzg2p{x&zmpN4jHh=*K`-F}vFo3z z@jJc~(re44TddvrQnqG_Pl3npUXtScHWuHBhs&)^%VR(-eHC44Lo9yC_XbMvW^Dku z%KnK5AKU)+lhJkN*|e7dPRGME^+g3P{>C-Fy65M4(DsKJANUoDg2ork`={}%@$Hx= z-T8^#uGgz}rdM(YcO4KuTZ9T*%ykYV#f7y=z3#5KPri76B8VWfiYH{zZ+T@Q*(Dq^2e+UuUG2k9DSa=|Hpd_;D)~98yZOKS% zI-xGh$=ouLmNmT{5z2j!w34%oKh>95&v(2pQM?Yl{Up^!h<+lbbMDrM0YVPYCqaFV zqDSQHOE>QHja6HD^pXahX=|VnbjFUwa0e-K5o~jJOvJZpzkimY}T(ol!oIUKg%o z09wCCU$~FszbV^lt8s-|76`)r3%#;QOmWvtL3lQ4X{O?nm+psmr^#{LnDadkcD!+k zS?;A#$%H}uRYltE_l#Aeeq8LgNW(Z{HTk#fEB#do{+uh$#N+1#8CoRSWJxP)TYSxu zd<l+w^P2Dp&eM8*cGElwOO9;hERDl`hZBnr2eILn{=8Z6 zU~`3X$1KGP&4g4xmCvYs(I=6VJgjYBZLxlXT^vO=f$c2;sD|~T#{%B1cwB?@{3!u zG6ulrv~QA-CWx%=%G?}DtFM?nQvO5C!C0~ltpJZbeHre4kg~}2K(ocT2=Vy+ z1@@Eibh%oVmOY)pdg1n8UorD)+;Ypf_G=~q9HyR=cQ7w+$B|uCy@PgB;SR&pT&`vL zSY+PXI~IxN=MtSwlYBfBcXECo5PpkZ&7*D)tcfvdnQ~&g5en;w0DO0^9ktITxfMrZQleKC_iD<>B{;Erdf4 z8P;JXpujVhx#k{2&*=4F<0Aa*Rj+k#eg2cI3`?&}kI=B zxc|5hRHC!#uG>o4D+nMy`8TkDbUqsxC& zD=k??9=ePlI=jcp?;tnceaDzO$0s2KRYEcd0aspkQ{n#*kU-c@x~LfW-Ke?ZTr_z|=Yt<@-S zo%ivykDDlwi^r;s_pZ$@Id3FnKZBK9;Y_ec^5&P<=bq*K&G==C`4yIVN1^GZJx`9uz|SYb z1(gP)-2(HY#1b5%zpQ_xysA^fW!=pzT*De$G`>UzUk=$BFZw@!DycHj-8TZWuj}Go z7%a|fi5_EL2wjsh3zQBBWPBzO2>&-2S>GmptX6h7TkH5Dd(u6tx0D$EOSD?@90RO0 za^G;xK58R3Wy)ABXkdmW{eBiI$!%%*M#^Be!+}_`{-4fksp4RtA7uT-9LXQMhyE)UA*t#zVFzQ+I6D2!a7DBKq}Qq zDV3*pi61`vm?)DMue1^I-v>UF&7WS>N(=2;qaogJQ=H$(gl+77=`W~asw7p=U!1~; zD=zOga>Q-(^)$3-5*j|P%(Cv*xDDMGs6GsC7Z$9$W%|&6#JFBNU39qJEL2lvd6w!K zM(v##n_O3&{62n5M@f^hDG0+QrBz*Jy4hwbqjXE~jqB0*ZHJ*RmSCudunP(aW_5FegIaYK;IM z2G12X4Y$Z>WXWcR?N)ZtRBHJNU=ishH|>O^3kWfhbo1rU=U%Nw(Hd>C&;r1V13Zc4 z(4%Fzn_IFWh(E%xLyYd^{A)w*wjCtjIk?m7k?pF6`WnLQ!T?qhU^;QWp7Lx4P|j|h zvCU{@*Y%W_?CC$Gfcs{**&4lMB_qp&vIMTTibEQ2Cp_{yDhU$OvQDbkq15+H!1=?= zeXq%(?z%UqZb)BB)-_|oVUB|@`=<5DkQ;(+tNdVqQ7ey@-JUU>;(q0FGH)tf;*Ib| z`qfOXdRpl9K*0C5_o~r}zdsRDoD@8x3Kn@tzbl-LyIpSe7Y5<%Xy(7_bh-KhskON; z!iO_m(&Og?06oVGllnVsCF2>PhOp{wCnuZ%m8XkqW=@$fwwgs%Z zwb$&ZqIjAZd6qGeHSq%&AJt#<@R_`LH4v{1d&k2`$6hOwKDcqn~$Bt``bdTa|%nff;X@?DNc_D6o8nhw5wGmk6>0MkXW z1Ned1{rlRsIq&BOv=wbLo_UFH{~#OZ>zYYA8s@82$ePZetJK>bZTpKoE}_lB;a_mb z#FpzMYWLb29Gr?!$8=iZs2eIZ`MDvJOoS3I`FD|}m(;WC#_T4Z^Ed`SMK+DPDBO(J zb@H8jAK+N1#J5iFT%q1xB9Tb|Fy~q|XR80t^Wvvg!`$r`n)<$CS|u!sCc zo_vZKKH3HB@bTJe@gsugo|k%5jPT0-6*okcmB*#O+l+tE>vb2M6taiSTE4%*qmY}N zj{ieYV7#5rf47B=>p{I7np1VxxJl9!$75){evc8(9caw$IpS-(j_ynu&QlPkw`}Bd zXqYkq{a!p)_@z9jjNPYsquw(VxeAmW z)?p}c0cs+`sMMrVQp-xgW4f)9;rK!#Pd2T%CB|TyO{6!?cX(yet|5qrXqpU`P-8EC zh+m$yU)l9#pR=zSJ3>29LG8CpHZEMbwk%$K>-Zy$9dA<=$2FM5ksTfFkGWsqgP95h zGs=e3U3rk~AZ8<@Q0ukt*OM^7V{D8E&wvaiSCv#k6<%aXC4y07Ug1As5nK6N1?IWC zi_=o)KKMYsO|w>s*LB))!#>N*R(J0*Q9iZ{&>Q?b=ZO7wdt$lpVb__o zM|vr<);{`(KVs5mp)-SVR;lMM1Z>4FCz=lQ!2iYcb?CZ%Pl;ll{EFdRK6_L@#l^-= zbuVDYa`skm5{V+_Y7IP|F}UdC-~BSYqhInPy`XUSPs`+Fdin>Cy-NBU)C@m_VPwFB zsF#ePagwCnfkYZIJ6py=+{nh%j_Wbv4ev)C3Ew@&0e5nmNJ21;U7Bz^bBl;N5WiD7 z1h}w*Ou+g-=>PSc z(_UVG!_pEE%onk2X_V`d<)~*#xrNob<}{Afq30VPMB7lXoeT;F=QPYW9_=-9i7)R5 zUl#9bR3Fr}G}d*khdKNBAA_mAeWWMNp;~-?8k^9yMoy?M+54vWBV#UE*l>qF_C;y8 zpTj}2ReeY_7nij10cxv&$s2U@<-DVukNGcqjNCt^t9`WJKe@dHc66r8q<1u2-h9)3 z&{?NcLDSk~jlXlHbKn{vAZw51|7XtdiCl^#uW`Jpo|M$@KHTLE)uS2azo z>$Cg4!o6uT`qLWDlvl>FJo=~S&)G$>oZ%^-J{?*Cz{{~Q-usoPF1Pw>Ht$*GqapDaJ^VZJ4G3?W zx$s5M{!~ynOT46NKAcP4Ejb?K1G&bQFqqDT(_$QvElE{g9;r-$a9|i8HK!^-4fX>N ztYzCe-9i{@okLd16a&a&a~WB1?vy|+U)wA%_}Ppgb;QGu*E=8%(EOUv_Uh1fBK-xl z9O~Gk{W?-=kZ0r+ms|K>CbQ)OnIw~-XajZ6F58W$t-ef?!02}g(OGJ~_Y3G=CKO}^ z&#)L~m`AJp>Y>P0j2H0|ktoM=xsnjr(ApspZlj*n)nsO!# z?_Z<4B6fViXW7CXd8YSLGHhX0D3fVNDMW>oU&)3&)d{XwNivG=tc?fk??m8ecl$d! zF(I%@+W(Dy?|T@yeRP>c84p~!2Yr5VM5i4AAhW^UOxy*)8Y8ffJ8x#+p|K!MT-_T| z>EUI)r%Nps_6Gi(u8(-|zukt87ttxX9lbF^Hb)mtF7a<{HxRz-;rK&Zz4t5I7bP9_ z3JFBv2TyG7AbsfVyVS4$nBMSf%y1}}e+61gdb}0Qh(i0Mhd%diu_1KV%a}(@6RYeb z?l?tYaw4B9wjHw;CcUtGfw8rNiHkoS5847KU%uQl^FBp9#LpL~v({>~vFs|iBjxjd zjY4}0>rjCCOmZLN{~1Dw`ADB~DpMilTEn>7u_T9$Iyn&zcnae*{i0xF1&n&o!V$n&BJ;*^8kW$BGNXQ6#XP z3u6&;Pc*%2=C@wm*%gHin&{f>RQH_dC?}8G0`_>$Df4R6fE~K%tjdSaB8lVK1~i-r zg10-OUVZCZv7sJvA|m)W8ZvUNLGMFF8)31?scRC-W{Vu0scPFJSe z(vS2sYv42%_IeBkEpMWSb9Oc1eC+)#g`B2B%o116f=6or=PZ`&^0f4naf?R0`b>=akj&+h zR8ySX)mYTsSXjvNuJp}caX+W43?a=rsAjdCJYSNi{oy}CX(=*kn*C2MgS}Vp6XY0^ zl+5xp_0{G3frg{z7$(ka&5AZnR)6`{r?)cvZY_UY!s%V3CmG^s3oCINH{i}&H^U&F zWw33gvWe!(!9;aXy>elSNu)l&kU$gBu!(PWRQS#m7fxUO!VeXR{c>Lln!gpJe=Cv~ zdw~6O1!_4dwYaWY&@Yd-deK&k3n}<(!h-8iaAp#B5~2Q>5VgWDaOw;4Cwrz6^CcWE zN6+?ce$^pTHEpQdjE=%tp)~imCI>4SmVJt3t={K9#nCGO)cdkxaq{o}@A6J*C=iMH zY`gBm+M5v!gd(u-Lt9VHT3cu`(w(jjSI+pf-Xp$jnN)E;NHvQ5cl@b!-ljXAH8~{b z(m-6Y{NSM^BzNX!Dq)hWveqap?()$%thcZJiQb#Qdc+KM4Qx%=22cd9Cr%I91|wtK z1W0<=6y1T4-K~#&U47>8u3I8|`FmQ%x#mxqWNZA9JMYxVmzFS0Ve1ChJvep!UQ2H* zSm#7#FHaww`%Q`;?R<-a*b_J)Wc&~sNV?|0&p5ZD?4v!E%p*=urlVb)(2C#j9iH@W z7mn06%;(rW$0#bHii3iYVE&hSDwc;{;^#nd%;gn>`Q1!40Cx;{I0NP z8*MbV3aUJ>YZ|n-4}W2di*A%M3PdBbjY2yD!l(4JS6;pJYp)Bd-()Vx3-&TD4L~zj z9Lp|W_3aMmrWg+B4U;5)>tf@M3&cwd6cFTFhyXMpdCgcSV&X~sP{isYE^zT6>r?(WNOAB=TpZ#q-&*~7Luax zmy~=@;ONDS1;fuUeD>RGY|ZUHlJtl=5jHrPM9NzXc~G5Mc~}un1B;i;`Ki!;Rk)EIgDN_jQz@2{f*1Ec@Qifg5K1SJ@raVs3(Z5GO_7c-ZmlTCuag?%Z!5?qsf5^>45G~FWYyw!}Spr|kuQBW-{5X>wWJ^oKo5V&M1 zI-6yv{X~8q_w-I(i|5TNHX!+rmDe!G<9F&d#Q$|Kwcm^#T{Rf4(I3Id@a?wZcrR0( z33C4H{!8G{f@<=zQUSF)o;jS@SB(ROsPgOD;z3aV>AZ;M;Cy5ZcVNt~2IKwVBLI*z zR-?4xelosWI9)%sm$P$`L5Phil-rF5>wjCs{ZWt^4-Q@FLGugGLHFWmk_}*r35CD( zqoJC$aZj|Irbm9%!BFZ_faDz7@DrZ|`|j0q_6J5;!XmArXdluBKA$A%yQtgoaom$* zzLVoETv~=jejm$>x(M2ZoUDanMG@@dND<8YKh18iu6otpN#BECB|Pv0f*+6)Ok|P! z-Wx2+`bE@k((}I~7@$UNqaK@j;!|3+zgGPKLgnW5Q;+%!6BOmYDph;1pUFO&;CN8=1GQJPu$~Y0e_YjWXiJD;grL8l z$YA{bC%>3Z3^B*FbP|*L7@g3*%lntmew>TP#0dd16!^Mn4v&BrjX&3U+|1_NpOf^_ zF*kjA^F_0;2W2~BjvoU6rM=BRS}>ECBasq}*YeSB>Q;L2{kNH~5k2=`Z-4X!eQ164 zvvhGVk|~l5eao^fyEu>Y@AkrvnYccv%6q<3biU_%v_cadKT1IJcD)w^kmz3!8Elyv zLJX7n%tsZ>x}n0`TXs=ha3P|DQ?MVVabBV9Oy)*F1PA3s1uR7w4ClR7kDv0x3QdAH zr;|1YGZvV_AF5~`(c)TL#rqZp_>O#qDw4g$r!%rFdW&SO3~`p7rjcR4A=hZm%oh4wQ!RMJa{DX+jFqj9m2!&NMz2H21`yQSiPYOJE%1$7i*kVbm`|HhP=s7Cm0+Vmc^ZRa zR~Pil!2o6;!(eJ0Zc_KE9b26rG9(RA)MwG-y@qLC$c|pfrcBFIPN6Goh!h-EkQ{H@ zt+It#fVo)!Ex!HVGpqeGGSkvcCEHC^rnh2!A_q<9*n7F}LQI1q^yv^UHo1a73PF}b zx0tp2jpvde)-(!A`N&8iOb^k;`QY3NP3ar}SGefAJ$(4r!KR(cwGv#Ng9Hw4uWnXE z-*+q;1C@HzMwe1AD{BCWJB9gw~KU-;GU+^h-OB$d~<{gIfnB1D|hULev2hg&~ z_yUEUT!>3w_V!_|!+sf4HcByZ0ri(O|K%1q-;}#o9zey(wu1Y=npDN_$ft07+Bv^QN8=o2~bia(WKRW;l0Sl5p0p2FH9%!e;>)J zz|RXBbq3!bVpE#>%8pAG%*!n9b=enu2Ndxoi2`9lZyw*}l!g6{e8VippCTdTPPNPD zNzyTp#uCN*c%JVwTp0$+61YbTToB6Je$ zcb}@=hErq3b;5TO_D8_@?*kI0DB~8FQHK75|Gyt>vd}%$SdO=l1Kwz#7t!8146x<# zBf_};+LPEViPWTKfplQA+vXIW-$9=P=Kr9x^u9QkQ`*-N-k z_~TqqU!j=$;0BKq9h4UOpumH!)_>?|Q&ZEonrvInOXv12o{J3> z5it`|eA9u-(+LW;*jC5McNfb>dYo|%oY`)g>+Zd#1aO4lLVp(~@*01NXHI+7ia`pKaD9<7a?E~hnM@p{u*x60%fCi$bTF`V_q zWtl4`5?4Zko7%ze9&XKJmLZP;s3|$(-p}7_?qzrAWOo=FskCU2JZCaLEdGQU@)B9da+9aZW6TQEJFk!;RB750s}Zw|si=7B8QZTS5k#yPvt zW{TgBPl0iuhvoKCa2dj|TQY6o2k!Q$T=_fe+41%3ACvh|rrx6(fCk*dFp-NP$gW<9Yf&<tEHlIsM=<|EIm(SRg8m(vJRA>}&_T{%{;#VB>j4iF zV{Bk4DG$!kSz9~;K2N}sIK%|c!z)5=rssi3&qPXzANO6MDC8sZFou37x@Cu7&5aBswGt}JjK z;wi~34Yz}{REEd1-)RP|uf>!wX%8wf@pB}>C1FX+R>63xHB04-6N%i>vBc6uzK?44`h?j!{KV$Yl4fdQ}5)ahnDsAvIQJe zPdw3idXkn|C$6~<1z$11z+w$U?EE6nWwv&EsA0}d`WZU`YI|316pVkGv+vX~vsnGm zx2|6ET`^3f@mkB+B=<)A4GqL2W{3q{fYU+kG^x?03OWKDrPNn+< z#uu)-k?oDg`{$@>f$jMoP%qRe+l|*@T7pkXNBdh{kY-3daQ0HA8Pm*oM@?DJE=|{dkM2#K$TOVEXMd6UEWjD5 zg$rBc3NMlfV8C%+ImJPiQ;)N&rY<{Wb*Ce6r1znSp}+Ws>|MsM-# z-1cD>^Qb6o1HGHA46a+`$jfUNchPArY^{{OCp&I?4}prbBg-GZ^bWQqD86Zc`?A{m zdbbC^Y&(pa*M^A|95S1Y&Kx6tg#x($;6sqEB-1u?!}@diqVVCQe_tVV^D{ZF-RVP_ zw}eMuO=XB>!jUguC-1vO#I$r39qqH_&t}^QR6!0l-Aw#bNXk z4kvPJuzzoR+>?HV-mbtr@+GSH`m@bASl>gs^DswGotakm)2dmTYOTAY{!3%qSb~)% z_txBw)axt=ts!^W9bqfM{rvmmLc%MYm0O;QMEF}QB@H6=C!+P~g%$Hp^G*4}9h`L> z92N`$SjFuUE`bxTo0Ig}6P@;`=|^%3VUU$gL2&Tdi4L|wBtIL^4`UQcuw+g!>Gu15 ziHR!@&hl?+_xsiE_3JG|5asbTgOuhau{-0w8)N-y1Sj6X66*H_9x@e(#MVDrv8Pp1 zdFdnBlxf&epiFpe&>VGhTZgO#W+sX#M?GrXAln^0>Y>%vkxKrs;;6h0z~-i zp8^!_@OXu+ZEL#kt_FchvnequdrWTY*LB>)tsJ{`!1Tjndu8~BMUrSH0L<(+FGStg zUBWt`UH;Inlj~;8D5=a1yBdd8BbQaNolqtrrjA6QRrKMNudqf8l;0~wKfm1Z4#lG? zR}SiXh$xL7V7-W>yvYi-S?KbcA3?H4P-|}0qnzC2>OuYGuSnIw>nHz~QBDYG9mrP` zNqUPLYT_%SSP6nH!FoD6h_>>dS5^`{^HAzF$Zt{}Ff| zT$TtSi7I0+`N`cZ0(&tX^BzB!4=<~qo+w?X={LUAp@8(5fHaA{qIxLK-6{3$2UC)^ z+}lr42a$(cq7=HmlAbRmJ&lg3fV^gBGeIIDT_KTYLKGtE%0Z|68+)FyW!_b_!m4F2 zy3rKj9Pp*@3G3NleJ)PzMEywr8g7egeqsRXmuMgyPit-?U?n(I94egbJghMu2U64g zZ1W$(tk$9mP(gB;3L3PR)5^I)u`@yagFZ1HcebL$$VEfD#aB+2FP)N)-$q?P_H+{j zbvvX|a-?3OV^11?w-9X7CP5_8hD`y3fV}bn# zmemv@{42m=eowt*p!2F11LogQ41fj{y)NbImn$Mq!%X2gduQUa+b8c9%@@O8x_BMJgN9u-r2 ze>WB;au2gxbHpnwJ`Crhh<@y;h)C}gP?u*t_NHJH%;s*2ACr=?{&Wj%HCEb z8c-FCd&=*eL{QJLFO57NDfjEnZw-yV&2HjISU}bvxE(Hr9KDXQVry1?hz0i;(^x6X7)XmF0IVRgR=7~c@#ee;x*8Q}9x%nKq`MR_?COB?U6)HDnexRPW%2nyV z7m_#d=?63apT8(z#<|flrT6|n5AsV7a{46Eq|TfndKmMVKFydP?XK69J!Yi+ zV(6Gk^BgcYiJCW@c%ah7;f>$0E&K3FcR$d8tl~6fUKUm$bZMy5s!eVnTVuL~dZE5V|dXg~y<~Fuo8XuTg zxv~9PizGTvN69>V#kyH31!Tuq*5$bXCN7_t^*Wta`Ja};(f zqH05A!~(ppuLNvvd*~U|VO%eXoxkz!s0gyY$9SF&eObpp#^*o4=hwo2AK1j+S={h#LCn{c5}CnN(IIb=^*ApE^hOFL02t7Z`Kd#K3^1DxueqdCli4IlW#QdDLFy?a?<7L00uDRhzc0=M0deWz7O_y zVu1TVCwgB3Knn6xswr2xdv?3=;3>>bs0P)rvoO*E&U@Q&R${+W`$tTpUYGN3Fe|ZF z*gfPS4JG~t%tlxPS-%}EBsWX*RQBGFj5b?rCjDXH74bLkud>JDy62JR7Oy3Fdi3L_ zr!x#)oPGBPqCX5+d@Q~HnR6atl#Iv*#k>cG)R(MFfAfyDTCM?AXlN~QS#_ueeX8`_ zPqph~ftg19CW!K1d0*5LR?rnI1~97KLodtVaKH!9oF2F!Un8b}hbanqu&47+o*Z9| z^g><)w~mea9=QzhvE`0hrjDA6q%>oX71hk89P41v8KR7T*Jq0-jatEezXSe0s@SRz zfSd-^9!YK(*-RAabWj`^HA!$3$A;OkE;#>@bgj3{OYgV$W6DBr+CaNXwTSHTQN1Ny7FVCUQ~%2qOWZw zwTOD(|9A`W;zDT`D7jy-m-A%Gswgila|KF{*we=lxY%8V;IF|gAfI^a|G*4FPH zxsBhSJ|{Rlknc4lX-|2V-Jp<&cZ>_EcIa?Yu3=q^e+(7+xQ%ICzl(6Zi*VQv$=pM| zxb7KJ_W9}L^;6kHf6E%jhN~NyD;~z+7&K#O1-H!q9#BC}9OXY&YNwN~5@RPf@$wx+ z%O{HF$D0wSfTv9Od}v(U7S9MC#t;Y8&hL}*>*J&0TsFMPn! zSk=)gOX9m!cp*wj4_k!+#1G>aKVTX^FC3w=W4{h2#?7R^w)_#gDPj3wi1*Ky6eXRU z{N6iPA06kRRtLA&T{hQ~U+oM6 zjD!Yugjq498RbWhbe}YDAL;#GEj@x%frpgx(l24d8un$tKk?FsXvc?I`aj_L>;;_1 z|7(E1GQyt*wGe3W^5tZF^5px*pWnyNp33OlkDjW>=jkTojRi(824X{szl}_qnY>jG zFyxP$h@_L1QbO9ca$0|tTId(c(uv4|-w?AHN#;2|%9Y@W_(be`UlafRFJat2%IM#? z0_h&#dlcNPX}#F^ycTH@T(~Yqf&hN`-j52)0SC9X?#H{$lzf6Iqhg+^6xzBXx{q_p zZlk(pM>Y$I=L@fYVMPAoSYk&!*IQclm|Aulj(wymJ=1qI_}NoyI6UcdbiMgkx&t;X z7705$V;4I~r{VfFH=n=o3eNdbQIId6jgQ$;6}v<|6Wi2L1%R_c{XyvY`aGQbduI&D z|0S&$Ec+B>)uAXo@jO8OKbvrnu$MROOf-W}WoE}|_Ol12h@-{5TB@+#oT2`l;Uly5 zCn%yKn=U{6Hb3>AkNj;n`G;@#gcTU-EQ?0np6@$MM`G+R2}x*o^`yxRq(_fE7#1>q zQxlhdDs#AKHk)pSQiQ!plRqYcUiV2sqDz-lSY5?djL6rkTwYZBR1dnmMSl7PB*K0r z+WkuMpvw1Yk!ZhC#zxt2y~BcGB8d>l`q44Wk*>&|*F#c+haWyt?S=#r8(^5Rsh6p^ z*s!_EGtMJlDqXx%4O26XQZQoDt?CizPT)PB=>$=qbmZVtI^8vUqPVV~-z z=_VGx9ghU#9~pTG9hAx9l zsN^njJ&8iGI%anX~Kd*g&l&CLj>#mXsE7AtQ@eFd5)PZg* z=+9y8T+nsDLWOm~>V;S-_F7%>Q^5M{9lU_tvet8ruxu!Cz_t5}<9&(B2$k|a2O_-# zAy~#p%n|taaDW|hOX}BY%o>4f8Io$fA|cK3gzYU+OQQ9>H0xc9NZLi z-~LOk&DgzXI&`e)`vtf=^?8o2$Gc}9pC2ACIGf0XRYE8`g#vv`| zL!=;6 zWGRz3UL0#tu_qw;b#9y zq{r%+<5~F#6qqo?eUKKKWsff6b`@3_{r2EBo>&T=Aml$@{s0AJ)+0_cWx-i7UI}un zgJ%HS>pUj%IyIdxIlR&b_r+0JdLD1myfVDJn)$A+#gAA|jotidZ=)vbV_yxAUX|V| zpGAv_ZkTvhsLJn3>*Pi+Cu?|T5k|i4h^WO{FDyg1J3DH*INJzFIY6l(ji?uf%oa7v znyqZaeU}*rbnT4FfQz?`YvhS}iWPf$-W8idrT?;Xz&M{t7Y{pi#~~?fNFDM+gIZgY zx>mxDo9#Pwnv9oGaLn(#nD@QwP7h_s>35tKG^1H8lh}2b4sZG4_ECAkmKZ?CNNne7 zMFRpOdBm0FsF&%d_2tIdn;827^=^vvdYAZmw+(A&IOydb>F3g)gbfqlKfXHrx!6pQNew}gE2Uk)& z#28=`Su(JDmu~O^dmFUS9RFWO*BRAR*L0H*AoLJ=Cv=cr0wTgC^lGTml#YOabQDB- z?@gNYA|jxOh{%IPnjq2zMWt7z1VKPr^4<4a>-@PZ`IX$6Gka$5JrXIS93ev=Enm~I z?teTxYsA)h3KXoq47Qx09QIeHxHDAl@wQy3;ql^GKcR8}uPolun*{PbT|>_=x)e~M z)t8z=>gMaxxFqa_l4$X@X2KDa;lKUuBhBElYC@uL*@{V03)-AfN^2o!@}?RFO$ z+_dOAJa`yLvWOqfRt9HJr+N@dhHD^e4b z2w>L*|Au^_GYrHZfe>V9GI3EtU+Q)0tp|X4eGqcD;pj1 z=#nGuFwBJ-{|Y~bPEg}WAqvT^7O7qqjho3N89#d{pz!OnA?T+{3gw7(@IXT`Mo$-* zJ6E#a?lDRIwd#RkvV4BqME;)kJ%Hrw5?F0L#B1!H_WRYWd9<=kD-0C!iJKu!^7f7M zS|p{@C<8XBD~ki2K0T^9ee`I%TZ@HH_w}2ekfg37<+hlG<6U7D#%xH)XM6nChh%N1_-oHie|#m9qEr-cT^$$c)_zI; zJ9;rPh#0wD_q_-AfdI-2@hH%La~?;+5i~FGj0xJ}wnWkg!ncK?g~U&Iiu$UU`{1+6 z{X1h%i6a2TbH=pKL=r0!_d@Hck^qp{IGOq%_&PJtm1={zAup|#QO=0Y+S zfNl~rHXZbm)h>C6bD|h(3`p#yE+DV~CzIl!6Ufy`U`FA_{OUu@-@!183Xm z87OFNNqjw3{4AB$AXHB6j=^TJd?sGlbXhzNkA8Vtp{l9*rs%+m{m|;>lmSg>-cgF#HoCF>W>J-Mo?cpg}+Y_F|^X z$FicPI#ijgX`kkvwZ@CRhiZd=8*(%=H&whU4oJJC3!_!V2X83x4|ex>s7ZX^ySh7N z&!U&#yWL&WMJ|=d^=$Op~Td zS!27XOLTvfQ{R%~k(KeH(&a9R3s6eVC;{hZ6^%s=5V;EyUSFB1z7o`vE*AW^@EOey zs|y_6YMZ;;cN9&RoxPwZZA@dxC~2KzV$KlVOwu|5l3%-y#)EwGk-c$26jY9hZAZeE z-sBoRo!t4oA1h=)6L5`6nHW`SWf59O@NdSftRh_#lmxBBVevZzX+U)eOU0ir#~UY3 z5g93}57S7`(#{;$Z+RgizPVN1BAKUf(?=mpS}sgl>*aRE67vBWy{N&ZZZfTrgT|a5 zBfF8&D~pU=i!|fit=Rk3d_ML1DNW{_%~@wf96|=zgR@q*^y#6NnfjIx+AjOHGiJQB|7w~WINxug56QbJhzD3EpCgR(!T(|h2-Qr3#5biUq%ixcv@aY&I@JZh`z&u*CV$-7kSDh3fMqI@nC!x5{Y*oLXr9S z-fe%bZ$wfM`0N8gx!}K7-kbpO!85{-$TTG-*qJ_S2#xZCRFO!9`Muq6fk69eo1d>7 zzE?Sr3B$+b*5t=T9Y*yWOet~Zhc`+PX0U!;SzTRO7z=Z@Mu1Wa18gV}Fse5uvyyzu z_UFqpz2dRc3ZI$Ct;~+yt%v8wo8JC&QcaJ=g%nwIpWAQ4_a!tg&%@3}o+oB~bg2m4 z;D+^FevL?b5i}Iq!K)zWB8mlVCtv98q20RMe#qVUOAGsXw#ebtmh(8A$mJ99ocrYK z>%_KKBEIR`m!4~A8MPn&0qv&u@~BM$J`LW5lRpGP(xf7~!29ij(QE`0A8j)v|k1DyY2{~`;)AN$MSN0&1$3jN{eg7mAK(N3jN?@lZ|AHk*YVW&pZ?F5)!c`Z`UUu9M6Ss z%&#P=ZTv39mtW|yf&6JN#n~4nA<@?1yx99odC|+}_sOKfuAe_MER8q5-R@QvY*StR zjTj84D7SjxG?>CypU|sbyKwi4ixt%0K|YuZ7HyWu$X~8*EkyCqLpNEREt~8bp?Iep zaQ@w3_YUMk4Ym`7-jKa=;bP3;md{u;E8tpLQJXWxxY(oJy3p&-#q)ulmvtlwg&M|y z*Nnln9Ejwmy(&?rjy1&BUc}rQ;zFB!;<@sNLC>dax&s@Yn~7^O=Z;jEJTfD0n1-F; zjT>t+j@0_FXESt->vY>kEJp(B%c@`T0xQWld1BPP;j-p?)gXa;_6upe~CMm~({ zbb*LZosOLW@iC)-2X_AZ1p!0#v6)(bFx_*Ey!L3gTuYVixOS}m1Mcgvd{on-FEz$y z?*3wFS=Hw{#^kOxE|7oPtM|tM%(q%@o!g7!%owc@f1SZ#vO)h0#L|PW+!Dt1aMKg` zjT1QjWTEcw+je7SG~+6B}%nFHSj z340~d-{iTAw1jRlv47dnVQtY9DV{>itsvQ55OQZ>%?Z?%>EP}-&**+QPO4?8Q=JVU zKaf*gBa-xyNGM|;^bDh8<&vy(yLZ)WocvH}d3x85G_UxhaPM)z>b*zie0jEJ+gBNW z9X2MWjXdfh{h?GpebN5Hu}ZM}q1iRk)ny#v$KrNa=`%(v*K?J}X$P-h8gyf-&!0(c z`7d*Rb(YPCm0Wb(G%TF*@Gh@=SKcQJi)!UMsnDATk7^ja>+Xe{ zx4lz zSMlX)`kON(Qp~%#g`3I#1dK3`k%-hy_v`kwLl?ieTw!CO-KM*GC_k<7R@0smwJMt&~0=QH^&US+MsS73-La1fM z2TNSq^$!mj<{oU-(QF0Yr`1|*yn?U^)RY3Q=Ms317uCyt5 z#>9qqqtNCqi)i}4eF@nEjRfON#m^i5SOxM<%tDYjdi{FUv=sNRIBl&6JkwI*TkyUL zybRp6n9hS?>66GURH!FZU{0iWGGDY{{A>^0L?eau6Q-GDT(E9{o)xwZj5i+sdMo}j z9V^woye4d4ZGYcOsCk(6WmvU#$3Wf5-&D|`#$ z^Mq}9d=vV743D}{Xjl97I-_jM~aZ1Ggo{P z1k4Lc_L9n3?HDk*{QO^J#hCeNV~`ho{W0I6a?DzqpzH-nZshU%#YKaP7=3~pEI-Y|W0q>2Yt`|- zL3}ZGw@@!R)Qo;rC36*~k=1+5UGMGX8zA>tSSZ%&AU~@HOwHWqmF>JGt+O!0C6CoaUaW(3?YTT9D_Zr%UnBAZ$se2^dd3KgQ0X)3rYbzg%5m$%-$`>{;eXBhb%ExxuwdKx`2Xqv)3JPe@fs$ zkEXVHD8)^lH$Qftakmt_PCgO64#PfS+~tIIvwnz{&Fdok#}Xr^-{P5??&7iGOTI9k%QX;=8+Vi3>NiVDk9p=xhHtLB1u@t#J4A#V&AV_0t3vtb9Xf!=C@zUGBzX=j3hhsOz6YCXP&da=yl2c;5m&Bu);owsI9Tz6UP`( zm}gPmW@Pv1ghXzz&0&o4eJ1k#QSJB1EmyCXqg0Uz##042rh3b?pYx@(*{bugP8D%( z{I#AJRp$vpX28VcUqvf$A5US?<=*&v3cN7+S!W{XHz~_MI7C=X0g8Y-2(W2}OSvyB z7(YP5&p25(kb|E)0~fyudwVFdYG&vR?}UV_4goxk;gg zRf)3zu=0vzVw1zWJY!kW2*w-)y+8anuQK{qw>Q={p7KF_wAe$9R}j2DiBVQmL6(Y< zepuF%?JRxX{trB37j87Vg1Ad{2N#p3;qBDr&1>iVt;2+Fv0;BU2qt#?QE;H*3E7=< zvg;13()Jy%WZL~fJ}vsw{T#p zar;`a)~geBXJKifE8Vi1?_e62ZGXcH>!14dMl!JIClGxKW4sb0U9Cbg_*zBvZ>T=T z+Dw??GBmYYPndmknLnWfI3{5%3{%WB{_yIE#lTN)xFI)VN=xIuUA|wlcVVvAs$9D2 zs;KM#(L|bE!N4pyW_dVgE2*b+4yB~kw|WC?npvh1^#>>^nXPXH_0sa% zRF{&m0>F*)Ln59;3T|*B1QiB;3YES4AuwW~E$zebat{!W$45vnPJ{S4?O8h_I({!|vZ-P3_k527EIPH=ZWP1AbrFf%%Ey zjeBSMZ-Ep1&IcNCCa@l0bboyLe)oNggPGc*i=_Y>a2mN6fAUW^-qnpN!9R{Hm`;Oq zoh{k!=@j6-=G64sjX@~qUsn%aj=b!D@l0h_v^#eB-$m#ZE#cWxx3ZdG7w2GDU4GpwPizM&Y7 znnnN7uH}E4F$P}R5?(@Ep0L`?9}!Q8qApre9EcIkL=`1rOYx5P447DXMH3HzOi7XT zHgwFH%R-`|)_)>ib}zo>gcx)PP0~%K)=S>gP4?TA=Cme3@bNxouHd|jDFhlK$^Y#F z81P%Ziv;nCCJf16N1VsUW-eVrfcg(@*#_cXBwU@mLw%qSt2?AhKHA~9r>s8WWs}jU zNZ+L*_NIq%35O}>M3-`*dDO&zc9A8{y&(7){WUcBD|Y9go_#NZMI6s?G!;xsB6WCY z?=WrfS?lI~axfcqqW|U@r@tO%&}L`tl2YgrX%pn78*;}v%muHLEEfp&19FTT!^Vq8 zy@4T7R5jS|)6*8{M;-?D0TWtqG&q01e9=4F@A?Z0<6n1MWr^GrNifrQTYN!}zX=iD z2l2f~dn~b^1h@m_M=|c;{cj<9bYor09fpg!U>KaR40sTMrX-!87ZTyF`U5qVeJ+-* zEjNh9kU%YF5W0%@GPA6Q4Xqynf$^{5M+IxFCdz-TbJXY?ka1+}9x{7~7WJ%9cDhH}H(NM}3ed>3WL{W^X z>xNZnh~`0B_nPJ`%;I!)GOS~CAaq2l{XPRhC=_lc5tIX|TjBb9FwFFyUH zs&2h<-R)@)g~o*$rqN)FRVqpATS7h*+f_>^8&6lM0HyHba;%VACJ3j!Afvglyd~sh zpQVuh2E0%ed-AOA3jS+REH`7Hh*QZ}Wqbw0r+&$uiId?r-4zF_hUUr8pbV;kj-cPz~O7_RGJePmMn%r+kAi(=S z)N>*!I7<_0aVJ&{_-6Y!6WrfP;@!K(DqGCSJLVh2@CZEj+U!@`=ydUas%YhIfP4+b z3o00(=?<(qc!h!ZH$nBHNf8!v6(}m7eQ^r%Q5PS0Aj9g%res;u_AyxjdRe%o7J@7VM`(`_JAA{}pTleEY9a84*dQp<*yjvyO}7>}^#hT8%u(Yx(|JKeBuiOiY`6 z{hNFP(}e{Wmo|AB$P+2V2Pvr5`rRvJS~p~t=;Q1Dkiztn1q3w`^nQ?3gm}~R)>hsM zai;ViHeW$5B^_a3CJutTAb?n$HJmh>| zcG9#N?(jFRe~m!mj6FWA`6A-Cx2vCHnWK=(nFpQ!Qf?0 zhE*X8ROf)_+m0m%x5;ui#1QSy=&^0EcyYJXy|!SOs4P)i6t7!Dg?&%L!eaOGMT zeaD-Y%wYY&*9R)5l>2zCm0%}1o*6R0Nx z@gUxLOQ4%weEJ)^?1HN@vviJj$SJo?Iv~T2KT!OvuQYjES#!h3 zo@o6y`VWd_>Z`P@$)1UOsKz^&zq}xw_SEn5<|7mKBosgHI8(!JIAqVDo|rmId`_41 zFL(k#LX@1qct?x6d)(g&zfirg0zr|HPpv?*yL)^WY4P}mXjneTr_z*Hgkbjw7;;(h zWG5+de{`;Ax1%XUUDMsFPsur2=~e-RW0%AdiZ9aC?l6dca~-<22+ngbX@%Zno6et; zZn=D#iIR?$FU9ye{59sNQClwjMP*GT!B%`L2ctRiMV1hhCKo+CYrEx)^3cg(zFNtm zZ9ohjr`=7Lc;St>>$$=!y>Il|o0mnnOh}mXke!TS@sw+^bFZK~-Qoda_tnnnlbN5| z@;wC7L!Xnjw^LE9hvO(CdX2@x$m?NkcIKyKTu*0DDNad`{mNsPf8XkRfB2(K9gky# zfBs1%!H3PAEWRY3s^1ze{#lgq?Peq>86-@zjpKn4yudU3lJ1%47A#Fv8vD^r>!Sno zrX>T|Y9(qNkXb2dC0xhnU(MO^z3s#Zuq;{K2Y*jhL7c)@kyEx)+LIMYwslD*_d5Kq z;LG_NQrG-sBC=&7aw`wIU&br~uZ`vndx%lCvLVlF?^$W~?#~Rj&Q7)tjs{p&dh<4T zn;Ldcs17jD40jeEeH(?gz5R#(#@<(Q7R~&Yz_ZNIUVv(9m;c;>G(?>1-S`=AmE~=k zm2TSVm+jF}bt4ceyq;`MnPN?u6so%u#>vNVJZY<%=dJ!Y9HZ4R*?&vQ`LN3sh!tf`u;GOivr7Mtb~xnMlz<0Hiv^>oON>9EW0?E>A)^5>wO^|+3NwDH0I`n%QntwS(Jr$(LXJ5F%@5Z^%D$uCd-Y;Z ztCxL1fulDT$@DY#ZKR~*l7|cAsT(B8?H_?pJ;nyV4=HovBa$L^p=YH##O=@zSVhnp z5G$ktPNg$}lNJLx+=R2kgr;RYxyh3go=4g)I7FQTV!$cBeBeI?$vkO9HBO=$M=e14 zQJJOxi7JDV7^AfsN<=#>PD2^Sp=%K>&19xJ1u=w-yO7+!>N-_*F2*#Mn-@zA9y+@Y z-Iiiv6cc1w(c<~+c=GZY60h07ZwS8s`k_VxS1T6-0BAB&6?}HY8RIhDh$DEs?u2+e zkt8EbQFQaXxyywtpSCxj8Qv~d)iR8cJJ`j2UNfAC*FF&0fc8|yL;>-G6K2swQoviQ z6PKO35@1*|@HyD;($ErCxG5jxn_fTxtNUbO zI{`BULLWbC`y5r%v~<&&Mm;83Qs0L4DZRu(pke*5Vf7fIdC^r<5jpA^{#)@kw$|t< zz6U?ZV=}?@s!2N-daSVS`%C?edM%{X9IRtEC3SiZTNHG&X7ZVYIbfomFH0uDN?epm zv2wFeo+Uly@EVNw!s%ks+m4*s*aM19?;&S!|KYjFw<(9CGRuwR{l`X`CvUTSMI(5X z?5eMv_KM3=5MPY6OSg&nq(arVA8zoLKR&%_U34S&jqc{mK6jx8W<8j=%)G#z-<tN4hzr|$C)P!#b<6PJc6SZ`^V`(W$#vf%fX2Dn{G9KteSL4}-^|{a1_3}yx zOc$q;;txNS6lHR_jZW#QOG!-F7VaAh>4fKBBYB(6EI!0G|uxN`)8--+y z!ZJn$WZKwCQ#Fp#v{X5nR})NAW2Q~q7JIa&CQi~V5jiXzIpd$F9G#>6zM&Jim;mY-fFcQV*EssdIq;674-{!lLUHN2*x^H!#BT;Df7ny)P}Nc;L%Pt2S(xkPfQ_bB)GK(f~L*d2<+(w{IG$vaeeGDH3;P=!g7C3MYIE` zhGXdZs~Ekzj-$f30YJ)MaEln_x(J;va-`0qI@EKi(Y!YEPla8;kCI8}^_{A4>%f)>j zh38tMgc=e_aifIoz#u0Nc^lY+5?D;BK*D>ru?}e{bxw+td8$udqfh1^q8922P@35B z2V}}p+_Ajh_46kY$jA=55CTbT*SxgQD5yDLY;3U&;t%`8-(G9?$OKHS<3M*wGxpcE zM$$!bI}sV?h=Sa$*QhP?Gs@zza)_a$k2ueB9Zo~&rTrVK2pABUvz@mnOF1; z=JbvzYU9eIcQlV@h{I|BrQEd?HHu!;yN%bXGuewUX;C&Z4gjtP|G}zlBkETW_5FzI zUP@9-#U?K-$Ab=)#PP)%iZ5F|DW;$%V`Ujo;(=f|RQT3)PKRKO0hQBLPx4xe=z22z zD$O+$@Ytj!A@E>}iTC>WV1s=&h#9xES+@fQU4`7$1hLF)$rkY78tG#(i`){aPvNPX zv_qQ+$CLOEm$6ug2(;IOMe`{O!$r!x9kn+b%$Q5jjhoCKCmY-W)OXD zorC*w`jD^nKMaeTmrho50o17qVrkj{gRnk5i`yxw-ZYJ$5oyL@;lyLZzGb#^ARQ}5 z8|T6tBaiUvQho}jv>T8`d~`x4%hFc*HveJhfDOpgL)gk281$7ap?Ag6{0%SYQnHjg>VK+dgvV#QxP&ypyTl}LK-H8^gT1ak&H?U+x4 z^`J$MS&wCr0zZ&0(f1pir=zuZy|dg_^nf%OvK3@=o*m9MYz6v-=WlmW5Axx{(*@93=4hm=c+1TLH7Ff04&rZ6U-uxnn-xViL{g_t z6dQRXMyD*hX0eJ|Vtb}7P^+z7?*WN*|LOVaiKDfN4r8Vc&qN4$7M#IwUs;;E-N9(a z;d8sEny(AlFLewfR&p{Bu!hpI>u<}@VpR>X{1ZWn;CgTW@4MFmaq6@INak2}Xf~W3 z$6-(6`RI~5>E=D@WGol4{I;i1WY%8H&?50FGW2Q>TeNtE8n`d5@QGgIZb&miaiK}C z#fcQ7`Z9eQ1sf?CxJK z4eTz&+2+tsfAMJBpVtUvZb+GVnqe6hgBa={W%Zcy*FpK)=@x6r5i~m!qNm}h8%`q> zzSNXnm}qp9FXj^K2Mn{os9KYK^`tE@$v#G{DWG( z?TQ0aUBH~uVTRHZUitUe9?eTqmR_Z^u+?R|w)v}-jC2V@5%qCvbMvQmy<^9VC0wxV zqU%<3wl{w}$6Z@NEq{?`t~dF*;cn0FM|lw{Y_2(*m7v4=(X5E__Opd6)tuMOhutCc zVTj2vh*G)cY+%P(Y!#erg&7Ye|6Y)FlE{V83P22eK*qH~#Fpr67MU@yDufoA5h_Ri zvqJdMO(-^=Unl{orUd~gITkVN8wfNqRf}v{pPQBzMp^&Yf&!i^8$WFcU2|eaZwcP* z=1t8v$Xs{E&3aXRC*6Hcmsm1!pAQ>Zg^lS}XGbk9sK)2`48k736=G!h>`3S3u#X`& zo?_-zH%UlhE|nZPWCP)^8SShex&cnN1}vFM|*L&=3H~c2ktQMT`Qg9fDLIN3`ju zV9AkSMbNL~6Y@Wq*UbmXmSRKkVus`@;C_UhW7bTXR^~J)8VNu&?TNoMNK5qE34chG zDw41-k689!LiUB&|7b)*pw#cCk&|xsu367QRoGA}#V~Cy=B%ybJym=(M@$X}q!PW~ z6ZJKhMm0W0YA{FcL)CQwV$XB<5FQ~Z-}ME|U#|5F#6^7+U|^El1@d)$Pk#_p3$f`BDz5T9oJTKfXn~TlD;U(oHILrc)t{S=qb+ z$rWYa$vpt5k4<`s2L07H$xaftyLMjn!en7&Dlue=P=4(x6_Q_XkfL_5qISGuUiN>b z^GDPv{U*cx2E+LV0jY&P>nyjqr(L)$ZWs639>`R_{luoKae0C%o%Z@xLPO-1{{1aP zqga?^Igr2SmNd>}M)MwfNZ8!H^|87n_b*<9erwv}_{G%TtvCEX5;iJ&I0`7YPY*lW z|5(ZGw)U|9JruaO-SMJFTKaiaMDAgA*iLpXM&n|wREJrJN?6}eB%bThvQD~x z01%t$RQ>ln9yv=gIf1LF?Z`u7HrV({yIc7ie_`Ir6G#0PrhI*yzi#t?gF|sY zrNvFhjC8J>h2F}0>R!_-NcsH)lPzdl=oZ3N_aHa&xn7lwhc1&6wbk`c2_|Jr_6;eQ zgZ(Z@JvSkW5HWal>6fsDg#-W?!Qn=oEK4dL;Zt=&Je?|&<9iz#T(a))s8^bQvNTsJ zuF-UOZDO1XC5$Xe=b>cT<5fyuYv(N;ZM_%f%#CGXU6td6s}`5~#mwWqW2cc+z+@-YqF^;0ncQdNB8SOV#H;X9Xj%i8tdX}nEY;Y1yo|$mmwP>#L zHdyhaKVjX|#_TwBIqLSveO2Qk^~^iEe#E=X3YD^mgV=_Q=VD$c7r?m*{f{pkGv95g{kWKb zPf0@cg8hHZv(6noSUiE^v#^!1?yXE~+gUyRwp-x7xes~&kl_49_QCHHK zb<0M%XI?t42BK9<8(TyBNtqMk098l+5gUcbeTFEh{c7r766X9wCaf#Sp(DuA%^koe z3}GEnxSFP@nXag5@n&^Alna&?tZ5u#g6;ISgT){QJoJzYYJ_>z@f?r-J%*-Uv_|KOpt<1&w_xy!7x^M)_apsgD6 z&o`N5RpdO4Pup8z~%{v1*V6B zU+v3N2s6HPwzsM^s@=n$W zW#d1%Rx*O`&o!J1GQ*0{1WV>O9(8g;=J-(e{ESLp`p$|%a|T_#m9LqQgy6=XU?w`m zXE(3gsu;ee`yKY-5;HHazLaNOwdOI78lw4Gj-Tc4Kw!Z7H-+<^-_a&nX0nd)n6(=& z>0vbOzX@M0iX2VF*;hEb8k>tz43h)5>1UjNZk0_A-i--+>T_J7PO-*ps3c75!LzfV z9JiyTnq{t-pQmrrj|()9_B(fwrjbM9u>8{k><+3p=z)yOAda8LSuD+8ayI6mDQFRo zUE?>f1pUcSj;KswT?l~JLZWdX-|6yZu%4nK42W&SW5IgA>}ThQ{8?og{)cnYKB!kS zsU@?DdvV`Nm$Jb_-_tIQ-TXiRDXM?Pj{mtGPwMSreHWSKCY95-)l=2A6V65H$oRMl zEt9YtQ6}EzCWf+iB{CB?BOxsO}~cz?5;E6iv?b%yZ>zgJygzd}=olK+(BM=_o%9oq-; zZ`mN4A(}TGKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00G`MNkl91|sdftcq#+dDD_uglpQ&qR>cBDy>ltj^{9a%Ia$Ce!nmhChS z5T`Q&I0*9JCAli?UaU?D)_1aM%(h|>XyX~h;DOR`8&6nXEh?(}=_)y`&&@#e#L z$DDJmvrpaXPSvSPufnXgo3mFl*L>doeI6qsoZQUs^7Y&dAiQliff9HZ_#yCP;0KfA zT>~p%2^2sTkSl;YJkRKPOv7VZe!`Jw1fJ7zhv%u@Zx9X!4#2?xa|1;N^8ywn%u85Q z@L(SA=aq0-!=nY}-KCNDmhjF3E(^E-LLffc9=HR4Beb{B-C)`~Bi#nv9^4MPEd&So z98)YHpCkDa$|V$fR2Pt~!LH-IuYn3|9-n3hY+876gcl7w-oecQcI|i^I@qV96^;&C z2ge?|VCVvcz`{d~VTEChVTEN)#wGc1yi38ml)OvDJ5;Q&EXi1rJD>r2pwnY7@fB`? zPxbg2@MLoT9N0{+!f*d}9~Qm>KIC`4wpW(FQK-Frw*>x&z&rZ&5A^;LSObd$e*Jm? z{}VbM)AE>>X9RBPxx;gZqe0j!=o9!&Ws$ zV4g=H&C6&668P&pe!Z^Y-6dSk;@1iM6?*OW@lg}_-5%2)PQmZ?3jPCxPT#6R%_e{^ z7?BQ?U3`b>_vxA}^9ZS|f-)mo1fmgpvV~oCY6z?v0T6OKdAw)@g8myXLNCcIIh?+Z zULXHRpe4`~SmF5~o&Z+li?h$ro*4r>F#xNxf4kAh;hVh1-r#e6{m+?y{g&-*wYXdZ z-&3$ZoJ0W${1*zl1peg?xW(~|o~N`t9l-DO=(!_sM_@AnKed9t&J_Gb1pG`RfVD;e z%L?9IM(_V<0hjgoD(LmNjS+8ufc6g4-;Ut#C->o?M&RsvH}kVo<4?b@E?&JPGL3y~ ze$OScJN-5@kXg*$Mk8=??j631k&zpof9ml&IxEWtaqKkoe@Vx4 zdY;j9V|wmz93`+r*sJGn^pMIzZld?B3RtN3pOvtzVP3(kiuYGbc(gWhQDPQWD-Que zKMDP}(BDD-48j)i>hb%78h|E(J{=siZr~%>tpnrL^Lq$Bo=@@M8xVoQL+&AS;96h? z*(|;uZy~RsFi=-eXTpY|@)Ri_nSS zF*u+_a7J)~T;dVn3J;WAkQczEi54i+&&o>tx?qf(CSePO#DDiV83FU1xX!;h$NC*f z0lw06%oO~O6#Vb$aiv~=J@NdNfu7O$5rU z&?ApPUsP~0k2(LUipRTa_}&t(O3YOOSEc%|Dfl-E{@a-2C(!o?1^#gi{rwSWs7y~Q zig!x{yqlhm5TOuytq&OR-J~vHPEXwxP#21^9+P`>;^wo-zt0Vl_hNE8{?HmY^avq7 zt=G>}BialBdU}M8K!?znVBVEV0D2<^iO*MKsj;)qxHyW*HNDh`AQ^)@4X55>C-%)p z)ZbtV@U7GfY6boy;QNy_Af*EHGw@eHzQeP{vBmM2jwiH3*ncCj=(i)VA+X0pua*wNxD*a>5zpCJR4p%iisL#OfCPnW9`0Xk9ljrYt@pt}k0{+Z63KK*8!3gO0 zxNuqnNLIm209^Hu^L6u{SS1U~O|{dT6y-(U(L-@r+J z1^f@y>wjPGQ|s^IKJa^}4hsB_Y59~^3xC~U0Pb+yD)@H$l&HQ+y#-Y47?fvanqC>q>tV| z?^D)9!U@(ggX5TYc|q#eYR?`7I_@{|u;J(sN@vUefa^9Z#f_mpF4Ea8S^1jgMEIK!fFI z1qzEPEK+CD^OqT>Dv)^*^Ziw=;eQS9U%-0`{)-%$r|YloRo=*56Hm^y&W!C3Xm0jYYS^icHR z(K3mLszj^>sljAma*$p0@}J&94kovTEQ7t)1@=~;k9C1V4;B+TM=!8(f)5}F0ig%H zSUipnp~JH`fmVVz&5f<8@VJqL2WkYC3jB<*fV4;;f2leDo%Hf@sP;Ra&NVu+qvrg#(A`4&e9ZR~`27LG9{diZ1L+3O zKQldxyk}K7To^BFCmlx*PPDDqhq0b6J@h`#2cSm6Oxk*(kHx{EunttUR!xfNSM6MD z1i;N6%$Y+r_SLRI^8F3$U7!zk=y}Bd7n7i+A5wsnz#KHnzanQ&mZ}$xey;iCxbK$Q z4mZGydm@Op(Br?k=lm88z#Fq_$@9OjpijWRQcti*#Xf!iivvMheG&YhN-LjC!v0$Y z|Aue^e#s4{%3}CG0Y7u?_b(OvixRG8@L&elGg#*FRb(kHSMbXwg1^6w;P2G?yJG~u zn}9#;F?8g(0sM=iXIVI0h@i`Dpy}f|9*lrtGy>8`yd?t=x(Kn*V?uAFx)2C@m85oj zj0C7O<<2C&|NJ5vf^2j8X;?J?c@}2}GCR4f9j3Q*Z2*1EX=JD+r$x9*H9Ui9B*>A# z_tY4*1eRpH6Z4W>!F=BGt0w8dOr66F_(UK02IRn>(%ZLa0Nx1rFDKytNAx}!f`^k< z(Y@f0Ek8#B|4SYAxk=#H2q1x9Y7?jZ(v+VX0lCnSe_6#)|D6@Qzg8nqMGsn@d;cAH zjR4xa2>yN_Q-J~ehXMTH$mm$wb^!k(?^zbH-Iv=y-U}v-=lSRv25{(syaYE1f;9q| zm}nzma<)z!D6lRdpIkzfoiyOGcx)AqW%innEPC^<7jR}s%$GQQ($kuNOz_=armdH6(5by0Lv;Cf>BasWGjchp_Ks#MFe{K%Et0DK3(ftn zmWGE5SQhZGjtNMaJbwrIKDPS&4%&@+{U(m|x_a z%QA3LL~mZ0fRR8(PVNNT2aGs6a+(n0nd=>5L+s7v9)e&naac!0hlac$EmR#;S0KSe zC#oH`c^2PLUP9g=qPq{z_Fyyc5^E1-K4t`&iAQb;M+c1u<7o(Z7eCWLoELNgJwl@e z!`5i45YM}m1mFP$!9an{OEDK(>Cg1~uzHpE8Y*EKwx$6o(~I#&MEt4QEys}=nXv@f;zr{le?R{9h8#i{vmWHi*a zQ;+Xh=8kpMaZ!3M%0OX-O&342;w%Nvb@{6a`tggL_)O`8Abl(aNdGDX@(!|xlOGf? zuQhG2$B=(0?)zvcH`*OA66XZcC~eHqsj!!m+}@nk z1&T>JFq?co*P6idd!mS6$PU1lNCDntB=DslyHYQojvuJ^|G}gsR8I^*2~-W98+vXu z)c=H*n@P^UNfE#V{Qa;cpuPS@IRIbQwXmw8%3`>?s^Fo5|EeC%kY2WNp=}Fp69M0E zW6RHJ=%2!Vmxg_gKzjoIMb@*-9m~Q+@E4v%5t!%Ul@B<j7J!Tg2xu!!!JWtQ3`#fQ65o%p>c%cUa#+?{}akIdy zDG*xS8;EIu=ot+lF=|*-u%@Ud7nZx{nm?P79_j?5hQRZu;PwR#z?&TW`BIOatA~G= zvCn_4Io~7wP^aF%2C7?nZs@tC=M(k*H44@a%NR z=U@zt33NcnG~BN&RJ!3;7sz@Ji_)+t52+tGq4uPEL54H zFcD_Y_Fxc zi}itO5_XA5^Uoyu0V3G!`Cm(ED z5Sed@GyKo#`H+^U>iu8hxS?mOmHrKZoq?T+t|OE>e5E3dnQ_6GVr((A&HJ4}up@!D&FmYHdo*`7u2ndhEG9*w}d^jwyKtIBav zM)0pS0w}DITcNaL1-`WIr1M<_0S8AM$c!N2v<%i81-l00=KM2FZNiQ;FeKR=7GSVQ zUY>r679({osU|R9iT2e9qw~k<6ReA4by@T1`OH^VN!428dx^Q!?6?F7)0 z(=oF>v&=EiJ(p$AMb&dr_FR_2T0{Q?{>w5@TA?r&V^2SaqnDwU2hgM)0T+`DLy1pi zc!zuXLNANdyTJ=vm{fX8~4S;BxAPu?cm{~_*!w>^KsZG*d&1%GX0Rlmxhv}0wv%3>X0S;ZFErH203vFK-325N&C z57KHFzl%U`w?e;-K<~HE9}K>OPAmVR!APg&td80^=9y!WITod7RrFj}(c`a5!@Bg$ zb77vx8owe)LIC!IC7hj8wUv128t}B=mpya44%f997FV~9*0QK2*3kA zE)R;%4tNKp7bDIfk!wJT0Je+NU{=6aadPkyOi>{-J%83fkr|Wkps%zVow+e||&H3+ee(S$$I2za{WO zqk?I*zqRq8wvo|irffbd9qvh-epmB2@bhp1?=0hz&qa=TU}0vE%&RFm0JjSM7cuwm z?qYk-9nPlw4j75lB1RhO1pKULRd%ck&$ zNR?wgz8$GBM8;KO0GUJ}c?Q-I8qdx})Cy{lbPhmHnuj0~m27N1!D454cpl2K% zUg_6o%MZi-v@URB1b#t_fZs$o^0}WQf&bwI{8MtzOUCuy1pfLd9WN!e{GRGsZ_4?1 z1O>kvz`qBM$^Pdi0>93q5m;2GoPJaAKU_rcUuE}zU+F^JE*b#eD)=XPzdyuIm9#*E zNEh>c+iAPcDfk`h((|zPT-2V+!o?au5hD0)V2-dbf~NXf1F%>djezM5)G?r;0jnW> zruU_e4i`SKcL7ZFv;!=rlwzTeb@k9AMIV7{)Ig+kVBiRhMqud4Yt*3cP5@carxyyy~nfHVV|EV_@B~h|3C0tNj=h# zPh$0nf1N4#H3GPpY2SYW{zUBYZ~>3%2>y%w4E)D34k)N}w%O_n>ipD@zdNw7E`8L2t!T&N2_jFt68xtq} zbk^S=wb~xndn?mZ8AokB^E@yw9kU{Sy{bG{wd0})tP5dT8W!sPXTVy7T7oveH0m`L zgTZD(fuS;<0>K)g%q+RF7%?#swnEtjN`y?}B9SE{3x=cjG$A0?#rc5LE)2mCJVt!v z5)gzu%?|V+y&>yjZ$As84#8Z>M@<36ES~#W4q0X>n>Z(s+34ZL#w7x4k<3VZEM*{W z#T@&%L*TVS=MhBz-ykMdRD=%UfS1Nprl;fq1x5%fvaF0$V>1)ULM-Dhfnns0NL_H)0IFWdrbY-`M3nIsf}w1Y9#RzoZ49SxewX!~CaoJf`C&arxo6 zBXB_2;<#0)wty=c3x4ww7TL(+n{xhD6{CTxIXqm!JG$*R^!gh{bq&q+`z`bv1%I0E z(`mnOj3gi-F8Nf(G0$|ww}`v_7p3E(h`?WKrT?N3uIs=m3#^G@|B^tCFheM&lzk## z0-1t5H$>vm;rE<$31aH)PUi$B3$`7B5EPSP{I`P+flO)yDP@?Q*969vVC>3IbO?-r zXJ?mX8odULF{dp=>xb8c)278|=n%LVTL=cz5R{9sFxM1PMrU81U4vgihd|z(Tl~c^ z0H68Bmd2QC5t)j3q%`26g1eoHk1wGj##0b5jp2GfzQkbu>QIxAzdzf8Hm2D)XM6R;7)xqhEg zc?mHcNJc85x`}wLp~Y-Ton=gt1M6l8NfeB!QYLw?W~G5fw+ES z#?A{&IGj`%hPD2o^uS5`?p z3#bdstVHG&)TKlY|2gK-+{jfK_xjgLi4}r|!EJN^ZX2uo{Ra9S#_hlzkkElYVB8); zhe!|Nuyo|6r?5`Pd>wV>ndO0H8CVu@Q3y*N@LASMYh#2(5SHR2!-)w52e#KYchrxp zj%TP=zQ4j)GK9?7SPLjEIYH^U1#2^M6WfEmUqa3&ZhK|YTTfiY46rHJ_s>kzzsd;nikyDxh7Esjqo;E%Nc&r1S# z;w3KloNMaW^;qItii z(GlOCmG1VhO3y{*xzySIRT)^7o-6hIYlO9lx&Mq<{F~V@GK(FF^J+)6OJ+Q?b){{; zfnCpHiIG5Vg~G-;fpX&WDtlV#FZ^kc+e?Vt0)q}g7)Ex7f>^kxWnNsIl+83e(0W12 z>h@9CbO^BRD;$H8XP-}pK%JOR5sUsPZ5JN#G*q|=|KMlo5QrFzkzx`le9bxpe>%GW zUs${E4ks_@c}B-aO68pjf44aH2nPwWBgC&c)9$M*Eb0^R5B>fm-uYVXKAliY+I{_P zJSI86q&a^T@Hhc~)89~?XmvvK zpBKb=H#GuTL@oO~dTKktQk4nWP#hdri~%xjCFVYWWi$e*P3W{HApNT~foYMjkh7VZ zsSd#cYJEMk96rsIHhlt;qPt&*pbyBQ$63RnmjUsqEf@$OCB4=_((Zty_Q~haArLVI zV-E5)>k!D>6ajoAR_RM=_ia_3H?{hb=fBlXz>SF9;MpU}<8My2`|2Wwn1gz6i6j-D zFQnaf8@+!wig?DHUq^li?Y;>9!gvbfnc1GpDuO>n01qm!#lOIH?YYQ=2WkXn5-a^P z6RZ9<$oNvG5x~o{>!^%p&}NXkxP^-WJN-O!hJm426UfeH?R)n9=@Q*hvcdZ|;VkEN zFp&190U`-erW|7Q@NB07EII5o&N$a0*!M6m2nUCQ!3a2*gex8W z*;1fO%SB(C4uP>CFTZ0c!0Ui6U%PSm>e_vsiQYdJ{a)ZW;Mq$Y^4Z}{toR!mGNh2` zB?=2=j#((^wE!ryIx^nYC0wt5zILD4LASy52PE#1xX*?bE> zkvq(KmU?C1mB7Q_$uqaU)T_QCGEZ! z^gN;ChE8R=Pqq6}#edN5tL)g))39F_%IlYudtRg6CkxS#wr9}p>+Ue^4Km&C`wZ>A z+V)gg&)l{w3OBU-F3XY8=duhusN$UeTC4r@kaB*Z))att^5(P*F=U>5#s&IG&TgDB zf=FWdF7qLI2W*@h$QgcS7;6HB1rbMKv!QEX&X(gcdJbM=asdfv+j_xII0tpfD6JHS z9tt-JS%@F`S})aiYn{}b=n$MaWMfi`P(6F5sYvG_ho;rWfe09*#m{k`p{J!W#ZU); zQHP+$ay?RweM33~-?k$4_WR3h#+_-_{77Fp_x|=Cs{6SMU!xe?5-) zDw*dA`0*3)N9{h--sr%Ol6iiHc3)*$D%(@rUcv7t?Y7qRER&V_jx^Zpa? zH=O8*roAI>i5$1{vl^Qk1cMp@B}ktdfm}brEQ={XFH2<%987`evGANXBXs>O> zWCS=T7}2?b6V5?KtYeiuC|M{2$ixU_)u|4F-Hdz!W!y3}MK%r#9o^*0j1flDk4B(V zZNd&iPtRq#epQE{o#+rei0i~C{rH#EA>gH^5`XIF0KTwxpM&anrrr09o;_Z5`~0BY zw>6^by>kGYD*O-uJg6f0Qv`5T`Uw6au$IyDr(*zrI|2Xg#Pi?kJW@L;QMJRo&KLxeejHqG-w@QGAAG<68C^lv+x)R zB$u9c57Y=$_gu1t76$h%$)Ff86d7`cPqDFOnT)_W$KX`0FwRn+>JS)ULG~4N2q@GD zY~E4>@MhZ&Uq!p`CenDzOKtZ(rss)i%^i+|1fBH{GzhIgi{Y5d*yk_vF#@QwSm>)~ zu?w&$1N1&vkGLBi+YtA1-|797*S%2mAo8`jH z3JVbyCK`YWo$>c(9Q3&Z*~`E+!WPU+oo2tAM7F)gR%v8GVy0?zm)Dp`7*ORBc?7Un z;_g5e1gpb()_~YVH0rfO5Zi}FOXs=GVv*4ahCuHFji?R*4y-qEeOJ$G;v^GI1%iwD zyts)DL7F?xqv0NO2r{J9@$Ec=7a7Kf`1P(;Ghk$30L%>L5S37*5RR=wdZSwdQJXMG zOnf{h?iQG!x&%>&0HZntd?g)%G(q(RbqKx@1MrP(F?}WNz9$pqo@ve>m3yLe*A8Ky z$SBixU-I}1ZSO5!qusYE&b0fw_*u#Bi);7cD9w@DI+j}LUzd){$|;qX*PLHN|2%M! z370moFwx`BHSEs=II)dUQ|Aj%Rf?o}9@6+ykP))S^)bq3deA;~q{HWd6lbL=5 zfAac;8^}Ck&hNP>CAR)DVVwsSl4krT;Gc{gu$h2g@6C-F!GGQcyl+Cin_PPRn88{` zBajp41Bwu5;4=Mwt3bC3`YH>9VStfeAaV62BVaHwY8q++ZV1^W^g7+!jl)ACleX*R z4J9#>a~*>GT*${1^>dtzJCJ0*_(07@1SA+Ci)O_W5yc5PLKZ8 zF2In|wvz~8(tbA!gUn?x0{L_lK6vtM(l@VtDg_Q!}}>Q~CGl5C}2Vd%n9rrp^rPCl6!G;UB=0IR4r`mlf=Wj5CJcfRz%#cz! z{L7d>npqWl{IddqvEV0rfjcm_Y9uz=^LJ*{ z21$!TX7cqrjADGLU2hCH$mWn`0kkSm048{_8K#Jxw%kCL3q_VuSwn6ERhFdx0)>e+ z0^3KX{>GP@_y$BA!jgf8xD62c$S*MH4k+hf@KAXq*9D?fSYwh%uQ@|b~rH{2?!OQ0!R2fIs}Q9 z{53iRe4{!9UxNXVdqV$LjKP=I?z_S93C*D27h8S(XKVMB8D^d#^@PWNt!uqg?Y;*S z?Y?FG8tp#K`(LNs=MIQJDvy7As@<1G<(_5XxTtzo3i^x6b6rJ#zjYy8=7Fm+up}}1 z=z1?94*I0&zTG7Be>tiA-)bhAB7!@Rqr?+3O#%8zaN13-fT`aJX8~&gbuHtZ08ogh z#E@G{UYr)eGaF7WtHSmtm$b!#Pt~sqkzHINme{AKA4hVHUQ5HM@5xo0bO?0Xa9|la zTjxI`6cWPe?!bACUgF5ObJMFjR!>_pr55by^gVWiMA_%oA+VDUSIxJoL-5AhfUki6 zOKbPNq~~TT;355IX!k{B+5!CaM7DdOv;9->Kl(h{eY?-p?u+0*419i5@Gn%iZ&^n0 zU+ALGT3357%Mj_j3SmhM{ZGNqIDFbLc=l<|FSim6z#W)76T!a~;ZDIGI32Y=cPU|# z4s;U(F{uf_Xao#)JWT|0YoYMNi~ty@-5^GC@bL-rE&wH#p2B(xAJ~RKpo$Pm9SWPI z$#j4xL>&SN$~hSNGaUjMFXefT$qX{(^hjNw=ld8LWFUod4i+}n1oA9yC#JSzr-eT^ z)g~Nw2wL)?FqjO$7tkRn&RXHZx28kz=H~#uvUcC6G<=F1$UI-K-DmKb!IqYgz`s=R zUnr0NLP;l*e&551cHeTG`#RO`yZvnKK6i+$K1%921^+zjS(d%-@yErUbs4y>{IK7@ z&f`)~%=_g8{H8S{@V65KFwOaIV+m;hfAah;otVj|ab6SX?)m;ai<>MG)wPf#Cs%MP z!sjMH4TUu)oP$|^I*F9yIr#ArwjseP%?gCmB4zHUZbk5JLTfyI!RkY*60@Edfiio= z!=G>tS~JlmBvO}6i+*le5)5Z^j~!5cQ5^!KIn0!J^jp#)cmoFD?E1MltN5qf|1-4v zggXL{>3N3ZV~qm#O5c61-PZ}K-3QEa!nEIC$KC$H^DnEI^FNqJ;m+&%sNHAu1GR0; z@56D_?sE;|RlCn0Cie|SjxjrwmJ$~^{j!+zFN-+Qw=O)hOyZVb;hATFnH5%<428bA z=KVE6(#(E&Q>T8( zn|OY-N0t?VSq{P2xGx~Y{QwN)LS~>aLS{Ur6*8N}aej#Ugqe`{U~Gutz7skTdJ#Ga zv4f(Wc!EbvWc-ihfB_>O!O1{MngJyM@2@?!N@NFJdf?)$L<|Hq8mefMhj-6)C2Gdez`+WK|KZX41o*t0{CCcYlMAe>Uk=T4yyKk1rJmZM(gDMPE zUc(`}6{l?Vrd9AyEBp85{HYyyAV~>MYyQ>AFx+(ew%5yW8Uaj?`*LI*bY0|uLNCW$ z$wvzUg*AFU)>VKa$RIvpJzY5<*&kJk|?j73IOq2QqQ_v;W8<;1X$+q|Z* zMxO13y9jzQXF3FF4k3*Ys}8|-s!cehM#r9nS%LHQV*6I>5PVGr;FY4^iFTiU{f>tH zpQ+vVl8#Slc!A@YhW;-V{I>))$SB-t6#P^DzWZ|im2&z$Tz-ajpQ3Cq0I}yU{dTh2 zt8(4`7&`&9i1Y*a=Xs~#j~aea$4}dR#mMQmE+Y6>Mp#K;fl!J>=d1JmW^c@}$@Ef> zn~4F?oL@FF>;c3!p-e}7TJ_zF;j443Obdd|J(t<}_mjb)G8e*xU?eAb)JR1Zrv}1_ z4nd{?b(#|>)IRK89L)_VNl+M=H{$EF>hVJ)7%`!b&)j~74nZ;kQyl^`ktNgbPjm>f zvy?&YL1;Yfgo50u5ophJ2%LgH8Gv3N_HET6$lpNVf1=%|x&M#U2+a98+I=_lJi+l( z-Smq~J_-CP-f4c0cHe4}^RJZC?|P}necFA=#cBj_c&VIzs@d1-eZPzMKK;=!V;Gc~54li%}YR=Cl{?6=mEqH|KUSFhA z>rmn;hAqMV^a39YfqBiKPw8s)z`vqH z(4FBs=n0Cyu8yd`u&ss({BH&kivu_fI%z zg0}l+S)BAMZ3O>HX}!|uZ{qR4n8OD;=6j~yXG{;$A<}~1V2(Fh-H*L~)9<5Thi~I- zzdK-b7~d$5e{CJJEXsAqVIR+;2$4{z49qiOp2a!;MJBQsLVhu|4dg*$?W+N^GiKQ8 z+i_CmA1eL3u_$O#hu|oYmM=m!jRB>Rp_IihjhAe=fCJE(kx;}%#8Ca4C1E*?3}GUs`$5tuS&-h^1Z5EDndr#b}2=tQB!nt*9zx4;@W z26OZ>=n!C{oLQ_41e`!HViLbVV*{3O}EIpy?o8x`(6)9$m5MG<-Y*M%QieOI*~J$};ev$4{@ zL|95N3xvW8HjD#@DG*`D=~(YePPhH;CUt@4B)sn@1H(6y&v>E#x*|{y3#r*_MugA5 z?_M+Mt$}M^3bPR6sPLdeU}8-mhg^3Dq5z3HY#WV5d=WjnJ}1izx9u=?Ko`z+2+rpO zlwvGQUUc2vGt#RqLCZ)%o^%Mx99~Qu>r{t8#0Zs)qr?GPKj;t$LT@lymc-N3M=NOJ zt82kvItkJdbe|BG*kVa`5)6olH^$VQFbWM-ooU7An~VTH*QoDT(C&*AUQd+A{|Oz> zmC|dY+I=r4@?8V?XIj}!`h986|6IFo0)Flh?iATZ51>5$k~aNx;Ai0U3p)LGuH9Fh zYWEFmy$bwG-R)ml8N&Wb#8ikvj zIO&@u;?QXX(4W-=gwxry{>;owI6L!FB0qqPxqYT7LDCFdcd&(TkH2;51z&72dCN+0zXE1+z_u1|kIXbk9OnEyN-0*l#qlbXS3T)Ir~T}Y9D z@d#Fo=6rPo956TJky5?n~fL_i49(y5uv}?z^7HS^u@UN4Qfr{F-MYkAJU2 zKWX5{9U$xm10bAh_c;~ra6<%eRfW@>U*)@2R#9nN+naYxEE3_V1kd(y}E)!K9-(~JaP<9Z!gal4txL?FwPrsL54*l z054v1(pkPE=*?DFyRWpKS>ag} zedO>j0+)4APCsFu$3dS(5k3E$7$VOMQF{-8){MhG-K5Bu_W5trFia-^H!@noqYlT6 zV?Rln=tlqb6Fq&s{_b5Fi%bG|BeEdrcLdFUm8ol}2?WL+H#2D^1~5+lefpbT$Vycn z60lgoSQCkU490+w$Q2OlZW)CQWY&?{fHeVYBWbBMfx-oLt`x-3ctLDXTEWOMD54E| z2@rftDFWc*u!A%q(v0a&Lo`@5-yYC^Nq22e4p6B$c*c&(fUJRUmr`mmq{Kh5lS1QzbuH9E?DsVZA zd;OnRyRW;2_72nEnZe_`eVqLBM-b)lmuArJn`J$#GP3%tiojLnqlic8S(n0P8Mv-q z)$W@k%m@@n1pZ-?^QSz2!?-2BnfyFO2Pt@QCrR!BI2vO%BJx}x;ir0}H~qTCp4C29 zL8F)C{49M=1SF|T(EXgtC50Ddv@@9m$uMLFV=xp&4F4-Twhf0Dqp3n}gxpBfEdY}l zAu~Y^!7H1Wjif6!2b0Ik%5^t39TEZ}ATYW+25fBK z{SN=_aCYwA``+h$o?l&@9n<$ASM5Kurc*8zD)|cA=Lrhwg=VnAIu6+GEa|oSALLkP+Jh<;(DlQmZvAN#*Lh=@-?RlbYEhf& z(yj~brgR}w3T4n$KM%T!^ILC@n5|%P=qA5AOFO<&?Bb6A#70Pf3ekMpSLL_f13iP0 z3r(L=p7c&EH%_rt?M0cs4-1@emEDj(1$ZoX4CKJ`W9+K!PWbF1z>AcDU8&y<D=1z|8@jMdVu z$Kw0b&HxvQiMqDqhdgs|mX39beudjU|&JZi(eGnEX5Z$YP zAA4N?eEpUbq5b1YnDh@7Y!Kbkz9QrE;LFpr18;G3P#oHt{yF5$5GI%H+l;>H?7g#L zTX)XeM+5zE>TU(bm+Q({=i{}uwil0rFlX4)D`WI`Biz$hdT$;xeL^&y@GZ9y3e?9AlA~8k2cB@XSHi* zH(To(#gVrz;r8_0tLSa4UKQnAY&|J51!k&3W1G!m>o~EEje^6IHotj1wYDmueAhQq zz7o@;4U$$bg{_Z-a!B9h69oh}?ta<$vca5D`?*K>So%26Zlzz-ro)-HOJ=JszE8G2 z!3J1eZ=xcBo^7iVWck?cm#Y5xENh}6!f{Gl@8{q*zK)fAa(^Uf3=~20WX>2Wxc*P2 zmOd1mepqKojCw^I0rpv&1-8TLDFbqywH)<}C*OOBoSj&H(0YGrbC# zLB{BXbid13SsbKdGT8Bgzsxg2G-LvTbtjwbXDNPz?tj;RC0n+o?GT_gQk#TY+YBf= zl-56yQIkXu4J%$FR|#vy^r*5eAU*`#)cq0SQqoRy9z&)e?SR2 zzXO2JI<@J}XMu?N!_ht9sW(!d%qhH2{sB)a;b2k@n1(;5>aO?Gl-f-8RMdnYkQO+M zqD)p)z#2GTD!#59PHt74G`oDO8`5?Y^ej+UzKzDUs{7Thke|{39h8oyPa^Aw^fwJO zcxFhtx1aF%_t>qxzvYWWDWx`gi|6v~)%_BGh_vtu8pBW1WqzK^w!{;JvL-c*z7*e% z4=|v<5aW_fk9xG9`>9Eg?0Gt55a<;W%=Y9p*ND6Cm_q|WbjhkHHfmE2Y6O4Kb_i4$ zQSJu;g>H?_B{44&l0_4)xSQPv5@h1)siPuAELzF|DkQbz#&})%uY z&mz{mR^GWSCs1on{b)W8o+zJQ0-oF$9WT5Eys-D&cYDuH`KS6ow8R;y>Ex}BybVCP z12aNz@!C{u7aiBu6LG8-Iq%G|K-8714ti95IeF?&QR_ue(idmCN^H!ZYeqY0venB~ zgkx_CzApmu32%{Qr26D$w%trjb=wjCK( zf3Tc{X|MnHZpgVkj|2&4?;f4f*8U##HQ71QYC67dwVN-Oz;bOxY#pJ6|CRkx`PdSQ4CNG@MbV%BsTwR@k>DK3^>lWTd{Y6=Y=x$ zgRY100a8k?F)kcfBTI{jo}A;H1IAy<{g4CJJ0^FV*?QducXk}Ba|GX-zfRZJ#$C03 zP!S6XJA+ajSRPD3mEwH{ChIh)xL55#roP3R2_1WvCu)P%Tk2<--U2Vk0o2}7nMw8% zyKng*Du*YJ(?}>-)PuZ7Huv={{5^GYdAx79)&Np#G{49oRS1`AxasF*N~F3M--|tIr?s+e z7IEUSNo-nQTPpE!u@|#P99cgfD^ewXjU3+Rw#iXL(^vkdZu2nweKJ!pcu8z(7=sd3 zzwCsB*H)u_o>#5tb$`Pd@8@(*MSVfS`ry>wB;PiSH|EME%-rH9!4>J12kZf!MxGt+ zzQwi*swR*xDzkG&- zP*y+gEIcPz*g~Vn?B3rvcx{9LyIT8#QsY7o@7pvf$TdGhhHX{@Uhek2$fkmO?V9}g zHWqBK%Oal48Ibvnz{^QUl(z4XeQ5dQ-Cq=W?ZUtFrD6~CHI{{G2L@0{FwaUOgntlnlSp1aC~w`C(o~~2amlA;!KKYZR=bO-Ix?SctH(?hoiJ{3>mwn_kE%IXVX@Hl zAmMFCr|FO}9cT<*j7rm3(_iJWBqJoZ8TZ4EXXTCKL z*`D);W=ARhSyJ6&;4lalye5OYdj0wGHi5q za4g;%oU23m|L91EKWvmX7U3|vzWL|aj@mHC zLJ=_BE@_8D7Q;YW(Rh6lmCqR)q4w`m8-IE!O_>UHuN5iN`o6qN?2rZ&fRF_g?#t12*zj|-wjp~ z==#8;!fF$j?~>R)I_@Ndo2`^I&i<9wgJ_HUO+|=Ts9aD4--wx=?!>h9@9Si%tttO} zc}qncbsKCOwmUdOmIkgV537+twjkMO%ay_OJwkcHd|{vd-`L5ic#ksSS2%k`Flbc& zPK1o8PvCs|`@vXmxzT31x^11|EPcPbmSC{ZgVXQQ;3}r1y2bLG2=Tbtrdh)D(JZND zgPg;-$}Ry(N0?#sfl02}=>7?RpILUm3p0lu5T))1r!u4|O|AAbKlW%;;$IqUv4N>~ zNoyY0(V^hpHhQz+-egw@`!@XzBiELYeBBx(i>~R(W!6=NL^v0fYP!O=h5h?3v@Vh* zWpLa1G3UQw1@J-MSMw5YWFi&f)txIM*E= zZA^1{iG_9x6ecW!0WQU6y6RAsh1~P?VJbg6W6~-|d<)nM{448z{_1I5#@I`~%sl|(IH=#|l z&XK2S1$m}yFUST+jE-VwUZFx=J{~9O! zU2D-3wk_D`GSoylP%G^6AOrqmq8H~C4k%)VjD;<_`& z;68o}Mn!&e_6jRig7{Z{(>wQ>Zvor>fHyxuk@Mb3?+{!dLYvLQTSUGl9pKqWE|KTD zadhOkc)rcH!xG4P^5(^BoWJFCl~DW{uDvq!a^YP#*IiU%o_}pDLteh1OVkJM3{9q(Q0q0IW2uI&`-lf;Hs4?;PIEx( zS?`*cOb({0P0?zKOss!@sed;V2Qo=^hoSw8_8f#QG5+|4hwO<);r@appJE}(qByWVTKvl*`stcbR!%$!RT?qo7GJ|%@38Z&dQp)f1BK~)$6b|=;! zFu%cjq%pXAV+L>u)4yh*!>wc0@=TO+U=`I<;L$bFF5&A5b{`%cZnQq z_~lyts7;`Mt9669u6S;0>yPPiBZVUXy@L}cBE4oTK(U{=vZH+F1cIPP{K7)`*Job` z57RNj5X*$&7N9Py5L$v~T-|R8J(F8Fd$aD!%(*^Zd|?H1-$bEvHEf%B5qjHHc^J?< z`Se?^?$RPMMO+L^K1417lNvHyl}yBn6|4BPnboP6oKW+4FM3Pp89KiwtDWo3rk-@P zP8JP_&iuu~f-d>Z4k5Z(c{B&^n6)W0trkzPJHBne!DcHPIyK?cdkOb*7U&bEF&9je z_&X^->L5({?%1@T=%6zbg>RQ((3xNxSlP_ zvG}>9=6Zw=Z3I1b&Do;9! zUoUP;F;~Pj*#!?;rhP9OX0Uf)F#) zS3zn=Qq0Y&i!2>q#uo5K?I*Df>=Pl|aP1p(GNw?{7od_o(b(^HrW=;p&r4B56H^LXh;MW^r=Zckgo9%h5;HJdUlivR@+rSzUIYnN`Gx z*bNr(OcOrN0J(k`=e?X$AUIBCyQa}#)^JToFNlF-BrSQv1{)`SuPxYLQK-m0vqJyL# zQWJyI6P`6imp6!*sx8cy7x0ut18Bw()&LyAx9AT%GBJW*xRnb6$WzJ8sGI|>Z9HdG zq6`l6!XML0bR(EGADj67?e)c;vm@y4sig7wuhu(K~-) zx=%J<9HN^nJ9%^D25S5Qt*>M0N;;GkLI*j)PRy{b=Rye|b8*~!y4!$xc&>1|m+5EN zoXYtkOC$A|* z@QwSSa(>q6g6$_0DSLbGy?U06DZ9dFGpBrBfmfJ)d!KlEvv(zU%+y!!joQ&GgJeLb z`#^ied!Wu_m_IyK2D0=j+Gg70n&lY*Zh9TeqH@pDs-1nyv>!!8c~%WWF}@(?EQd1T zE#0*1Lcz`VQlOqa(RI$hkTmoxvo-!$bid*VF^Aw8?X|c3TZd|8Thc|tQ;a%P*e^P0 zxW06HQD#K`p)h6QY)G@_!nX}d!^6exxws?g+s0Ys#?9AAP(nKs{$KS>ik3; zGQ-j6-J*itq`aC21>t497&6V*YM&2C=!Yj=nf3eB*foyO+2?B3w03cMDmLeqU(zS2 z42Z2mC`vON@c1+)uckjQSA-Udvj?Jx)ZZLmFby@mn7UuTiH;IJ?o8;KYB=Bl&^veW z7QsE)hsY=jpKTiQtBkKp6>*P`Au<||wC~v#uqPQ6xhb9Ss^Yn9Vjcs@leKR>Du#N@ zab0m^*nYSCtcxlcpzq$;Z(#J|7~smbF`=C>70R$}V%}oGKGXH!Eellr@TU{XX5*Ef z)RK|U4wuoLMzNev4uXAU*XKZz!_fFT%ylh{iQO8a&>8iEwa{p%^R}Vq)*@*%1sYS@ z_u~W!*)aJo4CLP{ZJhsK=h(C9m_p!_Lu+TCfvv{6>N_$YRLi;l<-UIL+t(I(_H zG8M-zK5QlF(pqDjmR0z9zwpJTXIQb$)ijOrz_@*d_DVW!s&&9?Mh!(Y!O#fxuQ=(=ea)mCG6(CDvENhwQD=KZ(3!%* z9!>u3H9VTsa`lWqGt2t(WF0dki-N;wD_4sWm74}T+xVPxuOU77H2 z_c&kQCERrYz9qM<}` zPfV{ws262$THS9VTOo`alaUq)&j2zEyD!`}nti)76+cQDc(B4VUsG)k9dw6_SK*h6 zN8BDKzyh%#`fN}`JHH|#mbPzyD74Tm|6Spii$@$5&~t+c;gzH*-2FVixIQ~CS7c8T z0OK8Z4_x@Xf^>ZzmaHx#-oclsdRP8BvOX@f=w+yzmR(=AnC!3L)jLoi3gt!j48n>@) zu~MrCi(lyAXm$n_`J0B}@h$u%-Rl$Ii6zd$x0m8mJZ*D}z3zPV?aLc=rIa}X=7}xR z&zrsJ!cK5ofrSAN|T8@ zM;FgVLKrY+k|kFl-t%N@(G?)sp5zD{C%8Fmh2qZwh&FgS0^cgZQ*U) zZ$p_4v!v_;pS7gHLeLx&{_aAjsBX(*(1If{sFjo|KtZ=U`N?1}*?BC&G#OgD$XJmG zHS5`z)fmbsa@z!x@|DOrJm%a|0^(tO*(-;p?NrmKX2EYMJX5zSrj!%ICa+~MP#>+% z7MwtI_lO@oNq4uN>Jk{gQRgCL+qPHMkpbeev4kG@ zBPRKbU86UD7a_6Rbygy;1Ks+p)W8vlA{$7Lz9*i)s;KSt_u2Mm{5<(BBr`VvMNK{f zk`kBMA#j8}N`+6XP@{M6-bU&h-FdSKKCb#etlC(aNbbvSD1?!`D$901 zI&)Fog|Z-z(EUJRJL@p&gZX`t5}s-ezU>{Wz?Xl_lbSleh~8L?Sz$%%8)|qVxn8I) z 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%0DV7w)U~&bwDDE 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 literal 0 HcmV?d00001 diff --git a/Tests/test_file_dds.py b/Tests/test_file_dds.py index 8f0de63bb..89d265ec2 100644 --- a/Tests/test_file_dds.py +++ b/Tests/test_file_dds.py @@ -6,6 +6,7 @@ from PIL import Image, DdsImagePlugin TEST_FILE_DXT1 = "Tests/images/dxt1-rgb-4bbp-noalpha_MipMaps-1.dds" TEST_FILE_DXT3 = "Tests/images/dxt3-argb-8bbp-explicitalpha_MipMaps-1.dds" TEST_FILE_DXT5 = "Tests/images/dxt5-argb-8bbp-interpolatedalpha_MipMaps-1.dds" +TEST_FILE_DX10_BC7 = "Tests/images/bc7-argb-8bpp_MipMaps-1.dds" class TestFileDds(PillowTestCase): @@ -52,6 +53,20 @@ class TestFileDds(PillowTestCase): self.assert_image_equal(target, im) + def test_dx10_bc7(self): + """Check DX10 images can be opened""" + + target = Image.open(TEST_FILE_DX10_BC7.replace('.dds', '.png')) + + im = Image.open(TEST_FILE_DX10_BC7) + im.load() + + self.assertEqual(im.format, "DDS") + self.assertEqual(im.mode, "RGBA") + self.assertEqual(im.size, (256, 256)) + + self.assert_image_equal(target, im) + def test__validate_true(self): """Check valid prefix""" # Arrange diff --git a/libImaging/BcnDecode.c b/libImaging/BcnDecode.c index 244fde49e..b24a3ebb5 100644 --- a/libImaging/BcnDecode.c +++ b/libImaging/BcnDecode.c @@ -327,10 +327,10 @@ static UINT8 expand_quantized(UINT8 v, int bits) { static void bc7_lerp(rgba *dst, const rgba *e, int s0, int s1) { int t0 = 64 - s0; int t1 = 64 - s1; - dst->r = (UINT8)((t0 * e[0].r + s0 * e[1].r) >> 6); - dst->g = (UINT8)((t0 * e[0].g + s0 * e[1].g) >> 6); - dst->b = (UINT8)((t0 * e[0].b + s0 * e[1].b) >> 6); - dst->a = (UINT8)((t1 * e[0].a + s1 * e[1].a) >> 6); + dst->r = (UINT8)((t0 * e[0].r + s0 * e[1].r + 32) >> 6); + dst->g = (UINT8)((t0 * e[0].g + s0 * e[1].g + 32) >> 6); + dst->b = (UINT8)((t0 * e[0].b + s0 * e[1].b + 32) >> 6); + dst->a = (UINT8)((t1 * e[0].a + s1 * e[1].a + 32) >> 6); } static void decode_bc7_block(rgba *col, const UINT8* src) { @@ -359,7 +359,7 @@ static void decode_bc7_block(rgba *col, const UINT8* src) { cb = info->cb; ab = info->ab; cw = bc7_get_weights(info->ib); - aw = bc7_get_weights(ab ? info->ib2 : info->ib); + aw = bc7_get_weights((ab && info->ib2) ? info->ib2 : info->ib); #define LOAD(DST, N) \ DST = get_bits(src, bit, N); \ @@ -401,29 +401,33 @@ static void decode_bc7_block(rgba *col, const UINT8* src) { #define ASSIGN_P(x) x = (x << 1) | val if (info->epb) { /* per endpoint */ + cb++; + if (ab) { + ab++; + } for (i = 0; i < numep; i++) { LOAD(val, 1); - cb++; ASSIGN_P(endpoints[i].r); ASSIGN_P(endpoints[i].g); ASSIGN_P(endpoints[i].b); if (ab) { - ab++; ASSIGN_P(endpoints[i].a); } } } if (info->spb) { /* per subset */ + cb++; + if (ab) { + ab++; + } for (i = 0; i < numep; i+=2) { LOAD(val, 1); - cb++; for (j = 0; j < 2; j++) { ASSIGN_P(endpoints[i+j].r); ASSIGN_P(endpoints[i+j].g); ASSIGN_P(endpoints[i+j].b); if (ab) { - ab++; ASSIGN_P(endpoints[i+j].a); } } @@ -462,7 +466,7 @@ static void decode_bc7_block(rgba *col, const UINT8* src) { i0 = get_bits(src, cibit, ib); cibit += ib; - if (ab) { + if (ab && info->ib2) { ib2 = info->ib2; if (ib2 && i == 0) { ib2--;