Re: unexpected result for wastedbytes query after vacuum full

Guillaume Lelarge <[email protected]> Tue, 10 Dec 2019 17:43:31 +0100
Newsgroups gmane.comp.db.postgresql.performance
Message-ID <CAECtzeX-BwRbgvp_40AyJAA8hdbXh3=a=f6ZEfYr+-1_wHSMjQ@mail.gmail.com>
--0000000000000e293105995c3782
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Le ven. 6 d=C3=A9c. 2019 =C3=A0 18:18, Mike Schanne <[email protected]> a =
=C3=A9crit :

> Hi all,
>
>
>
> This question is somewhat related to my previous question:
>
>
> https://www.postgresql.org/message-id/0871fcf35ceb4caa8a2204ca9c38e330%40=
USEPRDEX1.corp.kns.com
>
>
>
> I was attempting to measure the benefit of doing a VACUUM FULL on my
> database.  I was using the query found here:
>
>
>
> https://wiki.postgresql.org/wiki/Show_database_bloat
>
>
>
> However, I got an unexpected result in that the =E2=80=9Cwastedbytes=E2=
=80=9D value
> actually increased for some tables after doing the vacuum.
>
>
>
> Before VACUUM FULL:
>
> current_database |   schemaname   |         tablename         | tbloat |
> wastedbytes |
> iname                              | ibloat | wastedibytes
>
>
> ------------------+----------------+---------------------------+--------+=
-------------+-------------------------------------------------------------=
----+--------+--------------
>
> postgres         | myschema | mytableA                      |    1.1 |
> 74440704 | myindex1
> |    0.2 |            0
>
> postgres         | myschema | mytableA                      |    1.1 |
> 74440704 | myindex2
> |    0.2 |            0
>
> postgres         | myschema | mytableA                      |    1.1 |
> 74440704 | myindex3
>                           |    0.2 |            0
>
> postgres         | myschema | mytableA                      |    1.1 |
> 74440704 | myindex4
> |    0.2 |            0
>
> postgres         | myschema | mytableB                      |    1.0 |
> 63324160 | myindex5
> |    0.0 |            0
>
> ...
>
> After VACUUM FULL:
>
>   current_database |   schemaname   |         tablename         | tbloat =
|
> wastedbytes |
> iname                             | ibloat | wastedibytes
>
>
> ------------------+----------------+---------------------------+--------+=
-------------+-------------------------------------------------------------=
----+--------+--------------
>
> postgres         | myschema | mytableA                      |    1.1 |
> 74506240 |
> myindex4                                                          |    0.=
2
> |            0
>
> postgres         | myschema | mytableA                      |    1.1 |
> 74506240 |
> myindex3                                                          |    0.=
2
> |            0
>
> postgres         | myschema | mytableA                      |    1.1 |
> 74506240 | myindex2
>     |    0.2 |            0
>
> postgres         | myschema | mytableA                      |    1.1 |
> 74506240 |
> myindex1                                                          |    0.=
2
> |            0
>
> postgres         | myschema | mytableB                      |    1.0 |
> 63332352 |
> myindex5                                                          |    0.=
0
> |            0
>
> ...
>
>
>
> This is the schema for mytableA above:
>
>
>
>     Column     |            Type             |
>                  Modifiers
>
>
> ---------------+-----------------------------+---------------------------=
-------------------------------------
>
> colA          | integer                     | not null default
> nextval('myschema.myseq'::regclass)
>
> colB          | integer                     |
>
> colC          | integer                     |
>
> colD          | timestamp without time zone |
>
> colE          | json                        |
>
> colF          | integer                     |
>
> colG          | integer                     |
>
>
>
> I was wondering if the fact that we use a json column could be interferin=
g
> with the wastedbytes calculation.  Can anyone explain how wastedbytes cou=
ld
> increase from a vacuum?
>
>
>

This query uses the column statistics to estimate bloat. AFAIK, json
columns don't have statistics, so the estimation can't be relied on (for
this specific table at least).


--=20
Guillaume.

--0000000000000e293105995c3782
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64

PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNs
YXNzPSJnbWFpbF9hdHRyIj5MZcKgdmVuLiA2IGTDqWMuIDIwMTkgw6DCoDE4OjE4LCBNaWtlIFNj
aGFubmUgJmx0OzxhIGhyZWY9Im1haWx0bzptc2NoYW5uZUBrbnMuY29tIj5tc2NoYW5uZUBrbnMu
Y29tPC9hPiZndDsgYSDDqWNyaXTCoDo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWls
X3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBz
b2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPg0KDQoNCg0KDQoNCjxkaXYg
bGFuZz0iRU4tVVMiPg0KPGRpdiBjbGFzcz0iZ21haWwtbV81Nzk1MzQzMDc1ODQ2MzYxNjIwV29y
ZFNlY3Rpb24xIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhpIGFsbCw8dT48L3U+PHU+PC91Pjwv
cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8cCBjbGFzcz0i
TXNvTm9ybWFsIj5UaGlzIHF1ZXN0aW9uIGlzIHNvbWV3aGF0IHJlbGF0ZWQgdG8gbXkgcHJldmlv
dXMgcXVlc3Rpb246PHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48YSBo
cmVmPSJodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzA4NzFmY2YzNWNlYjRj
YWE4YTIyMDRjYTljMzhlMzMwJTQwVVNFUFJERVgxLmNvcnAua25zLmNvbSIgdGFyZ2V0PSJfYmxh
bmsiPmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvMDg3MWZjZjM1Y2ViNGNh
YThhMjIwNGNhOWMzOGUzMzAlNDBVU0VQUkRFWDEuY29ycC5rbnMuY29tPC9hPjx1PjwvdT48dT48
L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91PjwvcD4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPkkgd2FzIGF0dGVtcHRpbmcgdG8gbWVhc3VyZSB0aGUgYmVuZWZpdCBv
ZiBkb2luZyBhIFZBQ1VVTSBGVUxMIG9uIG15IGRhdGFiYXNlLsKgIEkgd2FzIHVzaW5nIHRoZSBx
dWVyeSBmb3VuZCBoZXJlOjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+
PHU+PC91PsKgPHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxhIGhyZWY9Imh0dHBz
Oi8vd2lraS5wb3N0Z3Jlc3FsLm9yZy93aWtpL1Nob3dfZGF0YWJhc2VfYmxvYXQiIHRhcmdldD0i
X2JsYW5rIj5odHRwczovL3dpa2kucG9zdGdyZXNxbC5vcmcvd2lraS9TaG93X2RhdGFiYXNlX2Js
b2F0PC9hPjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKg
PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhvd2V2ZXIsIEkgZ290IGFuIHVuZXhw
ZWN0ZWQgcmVzdWx0IGluIHRoYXQgdGhlIOKAnHdhc3RlZGJ5dGVz4oCdIHZhbHVlIGFjdHVhbGx5
IGluY3JlYXNlZCBmb3Igc29tZSB0YWJsZXMgYWZ0ZXIgZG9pbmcgdGhlIHZhY3V1bS7CoA0KPHU+
PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9w
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+QmVmb3JlIFZBQ1VVTSBGVUxMOjx1PjwvdT48dT48L3U+
PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Y3VycmVudF9kYXRhYmFzZSB8wqDCoCBzY2hlbWFu
YW1lwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB0YWJsZW5hbWXCoMKgwqDCoMKgwqAgwqDCoHwgdGJs
b2F0IHwgd2FzdGVkYnl0ZXMgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgaW5hbWXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgaWJsb2F0IHwgd2FzdGVkaWJ5dGVzDQo8dT48
L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPi0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tPHU+PC91Pjx1PjwvdT48
L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5wb3N0Z3Jlc8KgwqDCoMKgwqDCoMKgwqAgfCBteXNj
aGVtYSB8IG15dGFibGVBwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IHzCoMKgwqAgMS4xIHzCoMKgwqAgNzQ0NDA3MDQgfCBteWluZGV4McKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAwLjIgfMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgMDx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h
bCI+cG9zdGdyZXPCoMKgwqDCoMKgwqDCoMKgIHwgbXlzY2hlbWEgfCBteXRhYmxlQcKgwqDCoMKg
IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgIDEuMSB8wqDCoMKgIDc0
NDQwNzA0IHwgbXlpbmRleDLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgMC4yIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48
L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBvc3RncmVzwqDCoMKgwqDCoMKg
wqDCoCB8IG15c2NoZW1hIHwgbXl0YWJsZUHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgfMKgwqDCoCAxLjEgfMKgwqDCoCA3NDQ0MDcwNCB8IG15aW5kZXgzwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKg
IDAuMiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwPHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj5wb3N0Z3Jlc8KgwqDCoMKgwqDCoMKgwqAgfCBteXNjaGVtYSB8IG15dGFi
bGVBwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgMS4x
IHzCoMKgwqAgNzQ0NDA3MDQgfCBteWluZGV4NMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAwLjIgfMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgMDx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+cG9zdGdyZXPC
oMKgwqDCoMKgwqDCoMKgIHwgbXlzY2hlbWEgfCBteXRhYmxlQsKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgIDEuMCB8wqDCoMKgIDYzMzI0MTYwIHwgbXlp
bmRleDXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIHzCoMKgwqAgMC4wIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+PHU+PC91Pjwv
cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPi4uLjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCI+PHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5BZnRl
ciBWQUNVVU0gRlVMTDo8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPsKg
IGN1cnJlbnRfZGF0YWJhc2UgfMKgwqAgc2NoZW1hbmFtZcKgwqAgfMKgwqDCoMKgwqDCoMKgwqAg
dGFibGVuYW1lwqDCoMKgwqDCoMKgwqDCoCB8IHRibG9hdCB8IHdhc3RlZGJ5dGVzIHzCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluYW1l
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
fCBpYmxvYXQgfCB3YXN0ZWRpYnl0ZXMNCjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1z
b05vcm1hbCI+LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS08dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBv
c3RncmVzwqDCoMKgwqDCoMKgwqDCoCB8IG15c2NoZW1hIHwgbXl0YWJsZUHCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAxLjEgfMKgwqDCoCA3NDUwNjI0
MCB8IG15aW5kZXg0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIHzCoMKgwqAgMC4yIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+
PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBvc3RncmVzwqDCoMKgwqDCoMKgwqDC
oCB8IG15c2NoZW1hIHwgbXl0YWJsZUHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgfMKgwqDCoCAxLjEgfMKgwqDCoCA3NDUwNjI0MCB8IG15aW5kZXgzwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAg
MC4yIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPnBvc3RncmVzwqDCoMKgwqDCoMKgwqDCoCB8IG15c2NoZW1hIHwgbXl0YWJs
ZUHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAxLjEg
fMKgwqDCoCA3NDUwNjI0MCB8IG15aW5kZXgywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoHzCoMKgwqAgMC4yIHzCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIDA8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBvc3RncmVz
wqDCoMKgwqDCoMKgwqDCoCB8IG15c2NoZW1hIHwgbXl0YWJsZUHCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCAxLjEgfMKgwqDCoCA3NDUwNjI0MCB8IG15
aW5kZXgxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIHzCoMKgwqAgMC4yIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+PHU+PC91
PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPnBvc3RncmVzwqDCoMKgwqDCoMKgwqDCoCB8IG15
c2NoZW1hIHwgbXl0YWJsZULCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDC
oMKgfMKgwqDCoCAxLjAgfMKgwqDCoCA2MzMzMjM1MiB8IG15aW5kZXg1wqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgMC4wIHzC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDA8dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPi4uLjx1PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91
PsKgPHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPlRoaXMgaXMgdGhlIHNjaGVtYSBm
b3IgbXl0YWJsZUEgYWJvdmU6PHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij48dT48L3U+wqA8dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+wqDCoMKgIENvbHVt
bsKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFR5cGXCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgTW9kaWZpZXJzPHU+PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTx1PjwvdT48
dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Y29sQcKgwqDCoMKgwqDCoMKgwqDCoCB8
IGludGVnZXLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgbm90IG51
bGwgZGVmYXVsdCBuZXh0dmFsKCYjMzk7bXlzY2hlbWEubXlzZXEmIzM5Ozo6cmVnY2xhc3MpPHU+
PC91Pjx1PjwvdT48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5jb2xCwqDCoMKgwqDCoMKgwqDC
oMKgIHwgaW50ZWdlcsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfDx1
PjwvdT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Y29sQ8KgwqDCoMKgwqDCoMKg
wqDCoCB8IGludGVnZXLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8
dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPmNvbETCoMKgwqDCoMKgwqDC
oMKgwqAgfCB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmUgfDx1PjwvdT48dT48L3U+PC9wPg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+Y29sRcKgwqDCoMKgwqDCoMKgwqDCoCB8IGpzb27CoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHw8dT48L3U+PHU+PC91Pjwv
cD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPmNvbEbCoMKgwqDCoMKgwqDCoMKgwqAgfCBpbnRlZ2Vy
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PHU+PC91Pjx1PjwvdT48
L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5jb2xHwqDCoMKgwqDCoMKgwqDCoMKgIHwgaW50ZWdl
csKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfDx1PjwvdT48dT48L3U+
PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91PjwvcD4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPkkgd2FzIHdvbmRlcmluZyBpZiB0aGUgZmFjdCB0aGF0IHdlIHVzZSBhIGpz
b24gY29sdW1uIGNvdWxkIGJlIGludGVyZmVyaW5nIHdpdGggdGhlIHdhc3RlZGJ5dGVzIGNhbGN1
bGF0aW9uLsKgIENhbiBhbnlvbmUgZXhwbGFpbiBob3cgd2FzdGVkYnl0ZXMgY291bGQgaW5jcmVh
c2UgZnJvbSBhIHZhY3V1bT88dT48L3U+PHU+PC91PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi
Pjx1PjwvdT7CoDwvcD48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PGRp
dj5UaGlzIHF1ZXJ5IHVzZXMgdGhlIGNvbHVtbiBzdGF0aXN0aWNzIHRvIGVzdGltYXRlIGJsb2F0
LiBBRkFJSywganNvbiBjb2x1bW5zIGRvbiYjMzk7dCBoYXZlIHN0YXRpc3RpY3MsIHNvIHRoZSBl
c3RpbWF0aW9uIGNhbiYjMzk7dCBiZSByZWxpZWQgb24gKGZvciB0aGlzIHNwZWNpZmljIHRhYmxl
IGF0IGxlYXN0KS48L2Rpdj48YnI+PC9kaXY+PGJyPi0tIDxicj48ZGl2IGRpcj0ibHRyIiBjbGFz
cz0iZ21haWxfc2lnbmF0dXJlIj48ZGl2IGRpcj0ibHRyIj48ZGl2PjxkaXYgZGlyPSJsdHIiPjxk
aXY+R3VpbGxhdW1lLjxicj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4NCg==
--0000000000000e293105995c3782--