From stockhausen at collogia.de Sun Jun 18 08:31:07 2017 Content-Type: multipart/mixed; boundary="===============3092637474855962912==" MIME-Version: 1.0 From: Markus Stockhausen To: users at ovirt.org Subject: Re: [ovirt-users] OVirt 4.1.2 - trim/discard on HDD/XFS/NFS contraproductive Date: Sun, 18 Jun 2017 08:31:04 +0000 Message-ID: <12EF8D94C6F8734FB2FF37B9FBEDD173010E01F85C@EXCHANGE.collogia.de> In-Reply-To: CAJgorsY==y9a_9cCLZDuTnnOudf8mx+mzgwvPp5SsqNVc5n7JQ@mail.gmail.com --===============3092637474855962912== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_NextPartTM-000-9c273f1c-a2dd-4aba-ab90-4aa24b5ef225 Content-Type: multipart/alternative; boundary=3D"_000_12EF8D94C6F8734FB2FF37B9FBEDD173010E01F85CEXCHANGEcollo_" --_000_12EF8D94C6F8734FB2FF37B9FBEDD173010E01F85CEXCHANGEcollo_ Content-Type: text/plain; charset=3D"iso-8859-1" Content-Transfer-Encoding: quoted-printable > Von: Yaniv Kaul [ykaul(a)redhat.com] > Gesendet: Sonntag, 18. Juni 2017 09:58 > An: Markus Stockhausen > Cc: Ovirt Users > Betreff: Re: [ovirt-users] OVirt 4.1.2 - trim/discard on HDD/XFS/NFS cont= =3D raproductive On Sat, Jun 17, 2017 at 1:25 AM, Markus Stockhausen > wrote: Hi, we just set up a new 4.1.2 OVirt cluster. It is a quite normal HDD/XFS/NFS stack that worked quit well with 4.0 in the past. Inside the VMs we use XFS too. To our surprise we observe abysmal high IO during mkfs.xfs and fstrim inside the VM. A simple example: Step 1: Create 100G Thin disk Result 1: Disk occupies ~10M on storage Step 2: Format disk inside VM with mkfs.xfs Result 2: Disk occupies 100G on storage Changing the discard flag on the disk does not have any effect. > Are you sure it's discarding, at all? > 1. NFS: only NFSv4.2 supports discard. Is that the case in your setup? > 2. What's the value of /sys/block//queue/discard_granularity ? > 3. Can you share the mkfs.xfs command line? > 4. Are you sure it's not a raw-sparse image? Questions should answered in BZ1462504. When talking about thin provisioned disks I'm only referring to the OVirt disk-option. So I might mix up something here. Nevertheless the following is more than strange for me: - Create disk image: File on storage is small - Format inside VM: File on storage is fully allocated - Move around in Ovirt to another NFS storage: File is small again. That means: - mkfs.xfs inside VM and so qemu is hammering (empty) data into all blocks - But this data must be zeros as they can be compated afterwards. Best regards. Markus --_000_12EF8D94C6F8734FB2FF37B9FBEDD173010E01F85CEXCHANGEcollo_ Content-Type: text/html; charset=3D"iso-8859-1" Content-Transfer-Encoding: quoted-printable
> Von: Yaniv Kaul [ykaul(a)redhat.= com] > Gesendet: Sonntag, 18. Juni 2017 09:58
> An: Markus Stockhausen
> Cc: Ovirt Users
> Betreff: Re: [ovirt-users] OVirt 4.1.2 - trim/discard on HDD/XF= =3D S/NFS contraproductive

On Sat, Jun 17, 2017 at 1:25 AM, Markus Stockh= au=3D sen <stoc= khause=3D n(a)collogia.de> wrote:
Hi,

we just set up a new 4.1.2 OVirt cluster. It is a quite normal
HDD/XFS/NFS stack that worked quit well with 4.0 in the past. 
Inside the VMs we use XFS too.

To our surprise we observe abysmal high IO during mkfs.xfs 
and fstrim inside the VM. A simple example:

Step 1: Create 100G Thin disk
Result 1: Disk occupies ~10M on storage

Step 2: Format disk inside VM with mkfs.xfs
Result 2: Disk occupies 100G on storage

Changing the discard flag on the disk does not have any effect.

> Are you sure it's discarding, at all?
> 1. NFS: only NFSv4.2 supports discard. Is that the case in your s= =3D etup?
> 2. What's the value of /sys/block/<disk>/queue/discard= =3D _granularity ?
> 3. Can you share the mkfs.xfs command line?
> 4. Are you sure it's not a raw-sparse image?

Questions should answered in BZ1462504. When talking about thin
provisioned disks I'm only referring to the OVirt disk-option. So I
might mix up something here. Nevertheless the following is more than
strange for me:

- Create disk image: File on storage is small
- Format inside VM: File on storage is fully allocated 
- Move around in Ovirt to another NFS storage: File is small again.

That means:
- mkfs.xfs inside VM and so qemu is hammering (empty) data into all bl= =3D ocks
- But this data must be zeros as they can be compated afterwards.

Best regards.

Markus

--_000_12EF8D94C6F8734FB2FF37B9FBEDD173010E01F85CEXCHANGEcollo_-- ------=3D_NextPartTM-000-9c273f1c-a2dd-4aba-ab90-4aa24b5ef225 Content-Type: text/plain; name=3D"InterScan_Disclaimer.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=3D"InterScan_Disclaimer.txt" **************************************************************************** Diese E-Mail enth=C3=A4lt vertrauliche und/oder rechtlich gesch=C3=BCtzte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrt=C3=BCmlich erhalten haben, informieren Sie bitte sofort den Absender u= nd vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist nicht gestattet. =C3=9Cber das Internet versandte E-Mails k=C3=B6nnen unter fremden Namen er= stellt oder manipuliert werden. Deshalb ist diese als E-Mail verschickte Nachricht keine rechtsverbindliche Willenserkl=C3=A4rung. Collogia Unternehmensberatung AG Ubierring 11 D-50678 K=C3=B6ln Vorstand: Kadir Akin Dr. Michael H=C3=B6hnerbach Vorsitzender des Aufsichtsrates: Hans Kristian Langva Registergericht: Amtsgericht K=C3=B6ln Registernummer: HRB 52 497 This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. e-mails sent over the internet may have been written under a wrong name or been manipulated. That is why this message sent as an e-mail is not a legally binding declaration of intention. Collogia Unternehmensberatung AG Ubierring 11 D-50678 K=C3=B6ln executive board: Kadir Akin Dr. Michael H=C3=B6hnerbach President of the supervisory board: Hans Kristian Langva Registry office: district court Cologne Register number: HRB 52 497 **************************************************************************** ------=3D_NextPartTM-000-9c273f1c-a2dd-4aba-ab90-4aa24b5ef225-- --===============3092637474855962912== Content-Type: multipart/mixed MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" Ci0tLS0tLT1fTmV4dFBhcnRUTS0wMDAtOWMyNzNmMWMtYTJkZC00YWJhLWFiOTAtNGFhMjRiNWVm MjI1CkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOwoJYm91bmRhcnk9Il8wMDBf MTJFRjhEOTRDNkY4NzM0RkIyRkYzN0I5RkJFREQxNzMwMTBFMDFGODVDRVhDSEFOR0Vjb2xsb18i CgotLV8wMDBfMTJFRjhEOTRDNkY4NzM0RkIyRkYzN0I5RkJFREQxNzMwMTBFMDFGODVDRVhDSEFO R0Vjb2xsb18KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJpc28tODg1OS0xIgpD b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCgo+IFZvbjogWWFuaXYg S2F1bCBbeWthdWxAcmVkaGF0LmNvbV0KPiBHZXNlbmRldDogU29ubnRhZywgMTguIEp1bmkgMjAx NyAwOTo1OAo+IEFuOiBNYXJrdXMgU3RvY2toYXVzZW4KPiBDYzogT3ZpcnQgVXNlcnMKPiBCZXRy ZWZmOiBSZTogW292aXJ0LXVzZXJzXSBPVmlydCA0LjEuMiAtIHRyaW0vZGlzY2FyZCBvbiBIREQv WEZTL05GUyBjb250PQpyYXByb2R1Y3RpdmUKCk9uIFNhdCwgSnVuIDE3LCAyMDE3IGF0IDE6MjUg QU0sIE1hcmt1cyBTdG9ja2hhdXNlbiA8c3RvY2toYXVzZW5AY29sbG9naWEuZD0KZTxtYWlsdG86 c3RvY2toYXVzZW5AY29sbG9naWEuZGU+PiB3cm90ZToKSGksCgp3ZSBqdXN0IHNldCB1cCBhIG5l dyA0LjEuMiBPVmlydCBjbHVzdGVyLiBJdCBpcyBhIHF1aXRlIG5vcm1hbApIREQvWEZTL05GUyBz dGFjayB0aGF0IHdvcmtlZCBxdWl0IHdlbGwgd2l0aCA0LjAgaW4gdGhlIHBhc3QuCkluc2lkZSB0 aGUgVk1zIHdlIHVzZSBYRlMgdG9vLgoKVG8gb3VyIHN1cnByaXNlIHdlIG9ic2VydmUgYWJ5c21h bCBoaWdoIElPIGR1cmluZyBta2ZzLnhmcwphbmQgZnN0cmltIGluc2lkZSB0aGUgVk0uIEEgc2lt cGxlIGV4YW1wbGU6CgpTdGVwIDE6IENyZWF0ZSAxMDBHIFRoaW4gZGlzawpSZXN1bHQgMTogRGlz ayBvY2N1cGllcyB+MTBNIG9uIHN0b3JhZ2UKClN0ZXAgMjogRm9ybWF0IGRpc2sgaW5zaWRlIFZN IHdpdGggbWtmcy54ZnMKUmVzdWx0IDI6IERpc2sgb2NjdXBpZXMgMTAwRyBvbiBzdG9yYWdlCgpD aGFuZ2luZyB0aGUgZGlzY2FyZCBmbGFnIG9uIHRoZSBkaXNrIGRvZXMgbm90IGhhdmUgYW55IGVm ZmVjdC4KCj4gQXJlIHlvdSBzdXJlIGl0J3MgZGlzY2FyZGluZywgYXQgYWxsPwo+IDEuIE5GUzog b25seSBORlN2NC4yIHN1cHBvcnRzIGRpc2NhcmQuIElzIHRoYXQgdGhlIGNhc2UgaW4geW91ciBz ZXR1cD8KPiAyLiBXaGF0J3MgdGhlIHZhbHVlIG9mIC9zeXMvYmxvY2svPGRpc2s+L3F1ZXVlL2Rp c2NhcmRfZ3JhbnVsYXJpdHkgPwo+IDMuIENhbiB5b3Ugc2hhcmUgdGhlIG1rZnMueGZzIGNvbW1h bmQgbGluZT8KPiA0LiBBcmUgeW91IHN1cmUgaXQncyBub3QgYSByYXctc3BhcnNlIGltYWdlPwoK UXVlc3Rpb25zIHNob3VsZCBhbnN3ZXJlZCBpbiBCWjE0NjI1MDQuIFdoZW4gdGFsa2luZyBhYm91 dCB0aGluCnByb3Zpc2lvbmVkIGRpc2tzIEknbSBvbmx5IHJlZmVycmluZyB0byB0aGUgT1ZpcnQg ZGlzay1vcHRpb24uIFNvIEkKbWlnaHQgbWl4IHVwIHNvbWV0aGluZyBoZXJlLiBOZXZlcnRoZWxl c3MgdGhlIGZvbGxvd2luZyBpcyBtb3JlIHRoYW4Kc3RyYW5nZSBmb3IgbWU6CgotIENyZWF0ZSBk aXNrIGltYWdlOiBGaWxlIG9uIHN0b3JhZ2UgaXMgc21hbGwKLSBGb3JtYXQgaW5zaWRlIFZNOiBG aWxlIG9uIHN0b3JhZ2UgaXMgZnVsbHkgYWxsb2NhdGVkCi0gTW92ZSBhcm91bmQgaW4gT3ZpcnQg dG8gYW5vdGhlciBORlMgc3RvcmFnZTogRmlsZSBpcyBzbWFsbCBhZ2Fpbi4KClRoYXQgbWVhbnM6 Ci0gbWtmcy54ZnMgaW5zaWRlIFZNIGFuZCBzbyBxZW11IGlzIGhhbW1lcmluZyAoZW1wdHkpIGRh dGEgaW50byBhbGwgYmxvY2tzCi0gQnV0IHRoaXMgZGF0YSBtdXN0IGJlIHplcm9zIGFzIHRoZXkg Y2FuIGJlIGNvbXBhdGVkIGFmdGVyd2FyZHMuCgpCZXN0IHJlZ2FyZHMuCgpNYXJrdXMKCgotLV8w MDBfMTJFRjhEOTRDNkY4NzM0RkIyRkYzN0I5RkJFREQxNzMwMTBFMDFGODVDRVhDSEFOR0Vjb2xs b18KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9Imlzby04ODU5LTEiCkNvbnRlbnQt VHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCjxodG1sIGRpcj0zRCJsdHIiPgo8 aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0zRCJDb250ZW50LVR5cGUiIGNvbnRlbnQ9M0QidGV4dC9o dG1sOyBjaGFyc2V0PTNEaXNvLTg4NTktPQoxIj4KPHN0eWxlIHR5cGU9M0QidGV4dC9jc3MiIGlk PTNEIm93YVBhcmFTdHlsZSI+PC9zdHlsZT4KPC9oZWFkPgo8Ym9keSBmcHN0eWxlPTNEIjEiIG9j c2k9M0QiMCI+CjxkaXYgc3R5bGU9M0QiZGlyZWN0aW9uOiBsdHI7Zm9udC1mYW1pbHk6IEFyaWFs O2NvbG9yOiAjMDAwMDAwO2ZvbnQtc2l6ZTogMT0KMHB0OyI+CjxkaXYgc3R5bGU9M0QiZm9udC1m YW1pbHk6IFRpbWVzIE5ldyBSb21hbjsgY29sb3I6ICMwMDAwMDA7IGZvbnQtc2l6ZTogMTZweD0K Ij4KPGRpdiBpZD0zRCJkaXZScEYzMzExMzciIHN0eWxlPTNEImRpcmVjdGlvbjogbHRyOyI+PGZv bnQgZmFjZT0zRCJUYWhvbWEiIHNpPQp6ZT0zRCIyIiBjb2xvcj0zRCIjMDAwMDAwIj48Yj4mZ3Q7 IFZvbjo8L2I+IFlhbml2IEthdWwgW3lrYXVsQHJlZGhhdC5jb21dPGI9CnI+CjxiPiZndDsgR2Vz ZW5kZXQ6PC9iPiBTb25udGFnLCAxOC4gSnVuaSAyMDE3IDA5OjU4PGJyPgo8Yj4mZ3Q7IEFuOjwv Yj4gTWFya3VzIFN0b2NraGF1c2VuPGJyPgo8Yj4mZ3Q7IENjOjwvYj4gT3ZpcnQgVXNlcnM8YnI+ CjxiPiZndDsgQmV0cmVmZjo8L2I+IFJlOiBbb3ZpcnQtdXNlcnNdIE9WaXJ0IDQuMS4yIC0gdHJp bS9kaXNjYXJkIG9uIEhERC9YRj0KUy9ORlMgY29udHJhcHJvZHVjdGl2ZTxicj4KPC9mb250Pjwv ZGl2Pgo8ZGl2IGlkPTNEImRpdlJwRjMzMTEzNyIgc3R5bGU9M0QiZGlyZWN0aW9uOiBsdHI7Ij48 Zm9udCBmYWNlPTNEIlRhaG9tYSIgc2k9CnplPTNEIjIiIGNvbG9yPTNEIiMwMDAwMDAiPjxicj4K PC9mb250PjwvZGl2Pgo8ZGl2Pgo8ZGl2IGRpcj0zRCJsdHIiPgo8ZGl2IGNsYXNzPTNEImdtYWls X2V4dHJhIj4KPGRpdiBjbGFzcz0zRCJnbWFpbF9xdW90ZSI+T24gU2F0LCBKdW4gMTcsIDIwMTcg YXQgMToyNSBBTSwgTWFya3VzIFN0b2NraGF1PQpzZW4gPHNwYW4gZGlyPTNEImx0ciI+CiZsdDs8 YSBocmVmPTNEIm1haWx0bzpzdG9ja2hhdXNlbkBjb2xsb2dpYS5kZSIgdGFyZ2V0PTNEIl9ibGFu ayI+c3RvY2toYXVzZT0KbkBjb2xsb2dpYS5kZTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+Cjxi bG9ja3F1b3RlIGNsYXNzPTNEImdtYWlsX3F1b3RlIiBzdHlsZT0zRCJtYXJnaW46MHB4IDBweCAw cHggMC44ZXg7IGJvcmRlcj0KLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7IHBhZGRp bmctbGVmdDoxZXgiPgo8ZGl2Pgo8ZGl2IHN0eWxlPTNEImRpcmVjdGlvbjpsdHI7IGZvbnQtZmFt aWx5OkFyaWFsOyBjb2xvcjpyZ2IoMCwwLDApOyBmb250LXNpemU9CjoxMHB0Ij4KPGRpdiBzdHls ZT0zRCJmb250LWZhbWlseTpUYWhvbWE7IGZvbnQtc2l6ZToxM3B4Ij4KPGRpdiBzdHlsZT0zRCJm b250LWZhbWlseTpUYWhvbWE7IGZvbnQtc2l6ZToxM3B4Ij4KPGRpdiBzdHlsZT0zRCJmb250LWZh bWlseTpUYWhvbWE7IGZvbnQtc2l6ZToxM3B4Ij4KPGRpdiBzdHlsZT0zRCJmb250LWZhbWlseTpU YWhvbWE7IGZvbnQtc2l6ZToxM3B4Ij4KPGRpdiBzdHlsZT0zRCJmb250LWZhbWlseTpUYWhvbWE7 IGZvbnQtc2l6ZToxM3B4Ij4KPGRpdj4KPGRpdj5IaSwgPC9kaXY+CjxkaXY+PGJyPgo8L2Rpdj4K PGRpdj53ZSBqdXN0IHNldCB1cCBhIG5ldyA0LjEuMiBPVmlydCBjbHVzdGVyLiBJdCBpcyBhIHF1 aXRlIG5vcm1hbDwvZGl2Pgo8ZGl2PkhERC9YRlMvTkZTIHN0YWNrIHRoYXQgd29ya2VkIHF1aXQg d2VsbCB3aXRoIDQuMCBpbiB0aGUgcGFzdC4mbmJzcDs8L2Q9Cml2Pgo8ZGl2Pkluc2lkZSB0aGUg Vk1zIHdlIHVzZSBYRlMgdG9vLjwvZGl2Pgo8ZGl2Pjxicj4KPC9kaXY+CjxkaXY+VG8gb3VyIHN1 cnByaXNlIHdlIG9ic2VydmUgYWJ5c21hbCBoaWdoIElPIGR1cmluZyBta2ZzLnhmcyZuYnNwOzwv ZGl2Pgo8ZGl2PmFuZCBmc3RyaW0gaW5zaWRlIHRoZSBWTS4gQSBzaW1wbGUgZXhhbXBsZTo8L2Rp dj4KPGRpdj48YnI+CjwvZGl2Pgo8ZGl2PlN0ZXAgMTogQ3JlYXRlIDEwMEcgVGhpbiBkaXNrPC9k aXY+CjxkaXY+UmVzdWx0IDE6IERpc2sgb2NjdXBpZXMgfjEwTSBvbiBzdG9yYWdlPC9kaXY+Cjxk aXY+PGJyPgo8L2Rpdj4KPGRpdj5TdGVwIDI6IEZvcm1hdCBkaXNrIGluc2lkZSBWTSB3aXRoIG1r ZnMueGZzPC9kaXY+CjxkaXY+UmVzdWx0IDI6IERpc2sgb2NjdXBpZXMgMTAwRyBvbiBzdG9yYWdl PC9kaXY+CjxkaXY+PGJyPgo8L2Rpdj4KPGRpdj5DaGFuZ2luZyB0aGUgZGlzY2FyZCBmbGFnIG9u IHRoZSBkaXNrIGRvZXMgbm90IGhhdmUgYW55IGVmZmVjdC48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8 L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Jsb2NrcXVvdGU+Cjxk aXY+PGJyPgo8L2Rpdj4KPGRpdj4mZ3Q7IEFyZSB5b3Ugc3VyZSBpdCdzIGRpc2NhcmRpbmcsIGF0 IGFsbD88L2Rpdj4KPGRpdj4mZ3Q7IDEuIE5GUzogb25seSBORlN2NC4yIHN1cHBvcnRzIGRpc2Nh cmQuIElzIHRoYXQgdGhlIGNhc2UgaW4geW91ciBzPQpldHVwPzwvZGl2Pgo8ZGl2PiZndDsgMi4g V2hhdCdzIHRoZSB2YWx1ZSBvZiZuYnNwOy9zeXMvYmxvY2svJmx0O2Rpc2smZ3Q7L3F1ZXVlL2Rp c2NhcmQ9Cl9ncmFudWxhcml0eSA/PC9kaXY+CjxkaXY+Jmd0OyAzLiBDYW4geW91IHNoYXJlIHRo ZSBta2ZzLnhmcyBjb21tYW5kIGxpbmU/PC9kaXY+CjxkaXY+Jmd0OyA0LiBBcmUgeW91IHN1cmUg aXQncyBub3QgYSByYXctc3BhcnNlIGltYWdlPzwvZGl2Pgo8ZGl2Pjxicj4KPC9kaXY+CjxkaXY+ UXVlc3Rpb25zIHNob3VsZCBhbnN3ZXJlZCBpbiBCWjE0NjI1MDQuIFdoZW4gdGFsa2luZyBhYm91 dCB0aGluPC9kaXY+CjxkaXY+cHJvdmlzaW9uZWQgZGlza3MgSSdtIG9ubHkgcmVmZXJyaW5nIHRv IHRoZSBPVmlydCBkaXNrLW9wdGlvbi4gU28gSTwvZD0KaXY+CjxkaXY+bWlnaHQgbWl4IHVwIHNv bWV0aGluZyBoZXJlLiBOZXZlcnRoZWxlc3MgdGhlIGZvbGxvd2luZyBpcyBtb3JlIHRoYW48Lz0K ZGl2Pgo8ZGl2PnN0cmFuZ2UgZm9yIG1lOjwvZGl2Pgo8ZGl2Pjxicj4KPC9kaXY+CjxkaXY+LSBD cmVhdGUgZGlzayBpbWFnZTogRmlsZSBvbiBzdG9yYWdlIGlzIHNtYWxsPC9kaXY+CjxkaXY+LSBG b3JtYXQgaW5zaWRlIFZNOiBGaWxlIG9uIHN0b3JhZ2UgaXMgZnVsbHkgYWxsb2NhdGVkJm5ic3A7 PC9kaXY+CjxkaXY+LSBNb3ZlIGFyb3VuZCBpbiBPdmlydCB0byBhbm90aGVyIE5GUyBzdG9yYWdl OiBGaWxlIGlzIHNtYWxsIGFnYWluLiA8Lz0KZGl2Pgo8ZGl2Pjxicj4KPC9kaXY+CjxkaXY+VGhh dCBtZWFuczo8L2Rpdj4KPGRpdj4tIG1rZnMueGZzIGluc2lkZSBWTSBhbmQgc28gcWVtdSBpcyBo YW1tZXJpbmcgKGVtcHR5KSBkYXRhIGludG8gYWxsIGJsPQpvY2tzPC9kaXY+CjxkaXY+LSBCdXQg dGhpcyBkYXRhIG11c3QgYmUgemVyb3MgYXMgdGhleSBjYW4gYmUgY29tcGF0ZWQgYWZ0ZXJ3YXJk cy48L2Rpdj0KPgo8ZGl2Pjxicj4KPC9kaXY+CjxkaXY+QmVzdCByZWdhcmRzLjwvZGl2Pgo8ZGl2 Pjxicj4KPC9kaXY+CjxkaXY+TWFya3VzPC9kaXY+CjxkaXY+PGJyPgo8L2Rpdj4KPC9kaXY+Cjwv ZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+CgotLV8wMDBf MTJFRjhEOTRDNkY4NzM0RkIyRkYzN0I5RkJFREQxNzMwMTBFMDFGODVDRVhDSEFOR0Vjb2xsb18t LQoKLS0tLS0tPV9OZXh0UGFydFRNLTAwMC05YzI3M2YxYy1hMmRkLTRhYmEtYWI5MC00YWEyNGI1 ZWYyMjUKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOwoJbmFtZT0iSW50ZXJTY2FuX0Rpc2NsYWlt ZXIudHh0IgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CkNvbnRlbnQtRGlzcG9zaXRp b246IGF0dGFjaG1lbnQ7CglmaWxlbmFtZT0iSW50ZXJTY2FuX0Rpc2NsYWltZXIudHh0IgoKKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgpEaWVzZSBFLU1haWwgZW50aMOkbHQgdmVydHJhdWxpY2hlIHVuZC9v ZGVyIHJlY2h0bGljaCBnZXNjaMO8dHp0ZQpJbmZvcm1hdGlvbmVuLiBXZW5uIFNpZSBuaWNodCBk ZXIgcmljaHRpZ2UgQWRyZXNzYXQgc2luZCBvZGVyIGRpZXNlIEUtTWFpbAppcnJ0w7xtbGljaCBl cmhhbHRlbiBoYWJlbiwgaW5mb3JtaWVyZW4gU2llIGJpdHRlIHNvZm9ydCBkZW4gQWJzZW5kZXIg dW5kCnZlcm5pY2h0ZW4gU2llIGRpZXNlIE1haWwuIERhcyB1bmVybGF1YnRlIEtvcGllcmVuIHNv d2llIGRpZSB1bmJlZnVndGUKV2VpdGVyZ2FiZSBkaWVzZXIgTWFpbCBpc3QgbmljaHQgZ2VzdGF0 dGV0LgoKw5xiZXIgZGFzIEludGVybmV0IHZlcnNhbmR0ZSBFLU1haWxzIGvDtm5uZW4gdW50ZXIg ZnJlbWRlbiBOYW1lbiBlcnN0ZWxsdCBvZGVyCm1hbmlwdWxpZXJ0IHdlcmRlbi4gRGVzaGFsYiBp c3QgZGllc2UgYWxzIEUtTWFpbCB2ZXJzY2hpY2t0ZSBOYWNocmljaHQga2VpbmUKcmVjaHRzdmVy YmluZGxpY2hlIFdpbGxlbnNlcmtsw6RydW5nLgoKQ29sbG9naWEKVW50ZXJuZWhtZW5zYmVyYXR1 bmcgQUcKVWJpZXJyaW5nIDExCkQtNTA2NzggS8O2bG4KClZvcnN0YW5kOgpLYWRpciBBa2luCkRy LiBNaWNoYWVsIEjDtmhuZXJiYWNoCgpWb3JzaXR6ZW5kZXIgZGVzIEF1ZnNpY2h0c3JhdGVzOgpI YW5zIEtyaXN0aWFuIExhbmd2YQoKUmVnaXN0ZXJnZXJpY2h0OiBBbXRzZ2VyaWNodCBLw7ZsbgpS ZWdpc3Rlcm51bW1lcjogSFJCIDUyIDQ5NwoKVGhpcyBlLW1haWwgbWF5IGNvbnRhaW4gY29uZmlk ZW50aWFsIGFuZC9vciBwcml2aWxlZ2VkIGluZm9ybWF0aW9uLiBJZiB5b3UKYXJlIG5vdCB0aGUg aW50ZW5kZWQgcmVjaXBpZW50IChvciBoYXZlIHJlY2VpdmVkIHRoaXMgZS1tYWlsIGluIGVycm9y KQpwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRlc3Ryb3kgdGhpcyBl LW1haWwuIEFueQp1bmF1dGhvcml6ZWQgY29weWluZywgZGlzY2xvc3VyZSBvciBkaXN0cmlidXRp b24gb2YgdGhlIG1hdGVyaWFsIGluIHRoaXMKZS1tYWlsIGlzIHN0cmljdGx5IGZvcmJpZGRlbi4K CmUtbWFpbHMgc2VudCBvdmVyIHRoZSBpbnRlcm5ldCBtYXkgaGF2ZSBiZWVuIHdyaXR0ZW4gdW5k ZXIgYSB3cm9uZyBuYW1lIG9yCmJlZW4gbWFuaXB1bGF0ZWQuIFRoYXQgaXMgd2h5IHRoaXMgbWVz c2FnZSBzZW50IGFzIGFuIGUtbWFpbCBpcyBub3QgYQpsZWdhbGx5IGJpbmRpbmcgZGVjbGFyYXRp b24gb2YgaW50ZW50aW9uLgoKQ29sbG9naWEKVW50ZXJuZWhtZW5zYmVyYXR1bmcgQUcKVWJpZXJy aW5nIDExCkQtNTA2NzggS8O2bG4KCmV4ZWN1dGl2ZSBib2FyZDoKS2FkaXIgQWtpbgpEci4gTWlj aGFlbCBIw7ZobmVyYmFjaAoKUHJlc2lkZW50IG9mIHRoZSBzdXBlcnZpc29yeSBib2FyZDoKSGFu cyBLcmlzdGlhbiBMYW5ndmEKClJlZ2lzdHJ5IG9mZmljZTogZGlzdHJpY3QgY291cnQgQ29sb2du ZQpSZWdpc3RlciBudW1iZXI6IEhSQiA1MiA0OTcKCioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCi0tLS0t LT1fTmV4dFBhcnRUTS0wMDAtOWMyNzNmMWMtYTJkZC00YWJhLWFiOTAtNGFhMjRiNWVmMjI1LS0K Cg== --===============3092637474855962912==--